任何人都知道如何使用iTextSharp以编程方式将PDF保存为较低的PDF版本,以便您可以使用某些需要PDF版本为5或更低版本的iTextSharp功能?
我正在尝试将两个PDF版本7文档合并在一起,并坚持认为它们是版本5或更低版本。
答案 0 :(得分: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();
答案 1 :(得分:2)
有多奇怪。 PDF版本大多是一个建议。 PDF必须从以下内容开始:
%PDF-1.x
X是0,1,2,......
这只是阅读PDF的应用程序的线索。唯一的线索。我从各种客户看到的大多数“我需要版本X”的请求都是假的。我的iText编程人员知道这一点,所以我觉得奇怪的是 iText 正在申请一个不同的版本。
您确定 iText 请求v5吗?
无论如何,要回答你的问题:
是的,iText可以更改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();
然后你再次阅读它,然后像以前一样将它结合起来。
答案 2 :(得分:0)
看起来这已经不再有效了,好吧,至少对我来说它不起作用。但是,我发现了这一点,它对我有用:http://itext-general.2136553.n4.nabble.com/iTextSharp-PDF-version-td3477631.html。
答案 3 :(得分:0)
使用此: writer.PdfVersion = PdfWriter.VERSION_1_3;
这对我有用