使用iTextSharp设置PDF版本

时间:2011-06-08 02:46:52

标签: pdf itextsharp

任何人都知道如何使用iTextSharp以编程方式将PDF保存为较低的PDF版本,以便您可以使用某些需要PDF版本为5或更低版本的iTextSharp功能?

我正在尝试将两个PDF版本7文档合并在一起,并坚持认为它们是版本5或更低版本。

4 个答案:

答案 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;

这对我有用