有人知道如何使用iTextSharp以编程方式将PDF保存为较低的PDF版本,以便可以使用某些需要PDF版本5或更低版本的iTextSharp功能吗?
我正在尝试合并两个PDF版本7文档,但它坚持要求它们是版本5或更低版本。
///for itextSharp 5.4.4
PdfReader reader = new PdfReader(pdfPath);
PdfStamper stamper = new PdfStamper(reader, outputStream);
stamper.Writer.setPdfVersion(PdfWriter.PDF_VERSION_1_4);
stamper.close();
很奇怪。PDF版本大多只是一种建议。PDF必须以以下内容开头:
%PDF-1.x
当X为0、1、2……时,这只是应用程序读取PDF的线索。这是唯一的线索。我从各种客户那里看到的大多数“我需要版本X”的请求都是虚假的。我的iText同事们知道这一点,所以我觉得奇怪的是,iText正在请求不同的版本。
你确定是iText要求v5吗?
无论如何,回答你的问题:
是的,iText可以更改PDF的版本号。不幸的是,在读取PDF时不能更改版本号,只能在写出PDF时进行更改。您将不得不打开PDF,更改其版本,并再次保存它。
您可能会作弊。将PDF读入字节数组中,pdfBytes [7] = 4;
,然后将这些字节传递给PdfReader
。
PDF规范的第1版是1.0,第2版是1.1……
因此,如果您想要PDF版本5,则需要写出“1.4”,而不是“1.5”。
如果您不熟悉这样的操作,可以解析整个PDF,更改版本,然后再次写出所有内容:
PdfReader reader = new PdfReader(pdfPath);
PdfStamper stamper = new PdfStamper(reader, outputStream);
stamper.setPdfVersion(PdfWriter.PDF_VERSION_1_4);
stamper.close();
然后您需要再次读取它,并像以前一样将其合并。
看起来这个已经不再有效了,至少对我来说没有用。然而,我找到了这个并且它对我有用:http://itext-general.2136553.n4.nabble.com/iTextSharp-PDF-version-td3477631.html。