使用 iTextSharp 设置 PDF 版本
任何人都知道如何使用 iTextSharp 以编程方式将 PDF 保存为较低的 PDF 版本,以便您可以使用要求 PDF 版本为 5 或更低版本的某些 iTextSharp 功能?
我正在尝试将两个 PDF 版本 7 文档合并在一起,但它坚持要求它们是版本 5 或更低版本。
Anyone know how to save a PDF as a lower PDF version programmatically using iTextSharp so that you can use certain iTextSharp features that require the PDF to be version 5 or lower?
I'm trying to merge two PDF version 7 documents together and it insists that they be version 5 or lower.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
多么奇怪啊。 PDF 版本主要是建议。 PDF 必须以以下内容开头:
其中 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,更改版本,然后再次将其全部写出:
然后您可以再次读入它,并按以前的方式将其组合起来。
How odd. PDF versions are mostly a suggestion. PDFs must start with something like:
Where the X is 0,1,2,...
This is just a clue to the app reading the PDF. The only clue. Most "I need version X" requests I see from various customers are bogus. My fellow iText coders know this, so it strikes me as odd that iText is requesting a different version.
You're sure its iText requesting v5?
At any rate, to answer your question:
Yes, iText can change the version number of a PDF. Sadly, it can only be done when writing out a PDF, not when reading it in. You'll have to open the PDF, change its version, and save it again.
You could probably cheat. Read the PDFs into byte arrays and
pdfBytes[7] = 4;
, then pass those bytes on to aPdfReader
.Version 1 of the PDF spec is 1.0
Version 2 is 1.1
...
So if you want pdf version 5, you need to write out "1.4", not "1.5".
If you're not comfortable poking a byte like that, you can parse the whole PDF, change the version, then write it all out again:
You'd then read it in again, and combine it as you have been.
使用这个:
writer.PdfVersion = PdfWriter.VERSION_1_3;
这对我有用
Use this:
writer.PdfVersion = PdfWriter.VERSION_1_3;
This worked for me
看起来这不再有效,好吧,至少对我来说它不起作用。但是,我发现了这个并且它对我有用: http: //itext-general.2136553.n4.nabble.com/iTextSharp-PDF-version-td3477631.html。
Looks like this is no longer valid, well, at least for me it didn't work. However, I found this and it worked for me: http://itext-general.2136553.n4.nabble.com/iTextSharp-PDF-version-td3477631.html.