首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我期望iTextSharp PdfObject图像为图像时,该类型为空类型。

当我期望iTextSharp PdfObject图像为图像时,该类型为空类型。
EN

Stack Overflow用户
提问于 2017-10-23 13:02:52
回答 1查看 670关注 0票数 0

我试图使用iTextSharp来查看一些PDF,并在打印它们之前检查它们是否不正常。部分内容是检查PDF中的图像,查看它们的dpi、透明度等等。

为此,我循环遍历页面并检索PdfObjects,这些页面被转换为PRStream。从这个PRStream检索PdfName.SUBTYPE,并检查它是否与PdfName.IMAGE匹配。

这似乎是合乎逻辑的,以检查找到的对象是否实际上是图像,但我遇到了子类型为空的问题,而在pdf中(我已经测试了我自己的几个pdf以及在线发现的pdf)中的图像不被认为是图像,因此被忽略了。

我是不是不正确地使用图书馆?

代码片段:

代码语言:javascript
复制
PdfObject pdfObject = pdfReader.GetPdfObject(i);
//get the object at the index i in the objects collection
if (pdfObject == null || !pdfObject.IsStream()) //object not found so continue
{
    continue;
}
PRStream prStream = (PRStream) pdfObject; //cast object to stream
PdfObject type = prStream.Get(PdfName.SUBTYPE); //get the object type
//check if the object is the image type object
if (type != null && type.ToString().Equals(PdfName.IMAGE.ToString()))
//This if returns false when I expect true

编辑:根据请求,在本例中,我用过的Pdf在第2、4、5、6和8页上有几个图像。但是,在我运行的代码中,它只对第5页上的单个图像进行了重新编码。在第4和第8页上找到了一些对象,但是这些对象的子类型为null。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-23 18:47:22

看来我使用PDFObject不正确(我很抱歉)。通过使用来自另一个问题的一些代码,我设法解决了这个问题--我认为可能是这样的,因为@mkl设法正确地使用了我的代码片段,从而提出了错误在哪里(如果不是在给定的代码段中)的问题。我复制了一个试图提取图像的人,但表面上给出了错误的代码,或者有着与我不同的意图。

谢谢大家的帮助!由于这是我的第一个堆叠溢出问题,我不知道如何结束和/或奖励我在路上帮助我的评论,对不起

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46890046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档