使用 iTextSharp 设置 PDF 版本

发布于 2024-11-14 02:30:42 字数 152 浏览 2 评论 0原文

任何人都知道如何使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

荒芜了季节 2024-11-21 02:30:42
///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(); 
///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(); 
半山落雨半山空 2024-11-21 02:30:42

多么奇怪啊。 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();

然后您可以再次读入它,并按以前的方式将其组合起来。

How odd. PDF versions are mostly a suggestion. PDFs must start with something like:

%PDF-1.x

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 a PdfReader.

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:

 PdfReader reader = new PdfReader(pdfPath);
 PdfStamper stamper = new PdfStamper(reader, outputStream);
 stamper.setPdfVersion(PdfWriter.PDF_VERSION_1_4);
 stamper.close();

You'd then read it in again, and combine it as you have been.

走过海棠暮 2024-11-21 02:30:42

使用这个:
writer.PdfVersion = PdfWriter.VERSION_1_3;

这对我有用

Use this:
writer.PdfVersion = PdfWriter.VERSION_1_3;

This worked for me

〆一缕阳光ご 2024-11-21 02:30:42

看起来这不再有效,好吧,至少对我来说它不起作用。但是,我发现了这个并且它对我有用: 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文