目前我正在使用iTextSharp库生成PDF文件,这些文件将由某些文件处理器处理。这个pdf文件处理器对pdf过滤器有一些限制,它将用于解码文件中的数据。
我非常想知道iTextSharp使用哪个PDF过滤器对数据进行编码,以便正确解码。
答案 0 :(得分:2)
iTextSharp支持PDF规范中定义的过滤器。这意味着内容流(例如页面)使用/FlateDecode
,这是默认情况下每个其他PDF制作者将使用的内容,因为它是PDF的标准压缩。
图像流在适用时使用其他过滤器,例如:使用/DCTDecode
存储JPEG图像,使用/JBIG2Decode
存储JBIG2图像,使用/CCITTFaxDecode
存储CCITT图像,依此类推
很难相信会有PDF软件不支持这些过滤器。也许有一些非常古老的软件不支持/JPXDecode
(在PDF 1.5中引入;在您尝试引入JPEG2000图像时使用)。但是,只要您不引入.jpx
或.j2k
图片,这不应成为问题。尽管如此,如果您没有引入任何/DCTDecode
文件,则不会使用.jpg
,等等。
我们注意到的另一件事是,某些遗留软件不支持压缩的交叉引用表,也不支持存储在流中的对象。这是在PDF 1.5(2003)中引入的。这就是为什么iTextSharp不会压缩外部参照表,也不会将压缩到流中的对象引入,除非您有意指示iTextSharp执行此操作。