任何人都知道如何使用iTextSharp以编程方式将PDF保存为较低的PDF版本,以便您可以使用某些要求PDF为5或更低版本的iTextSharp功能?
我正在尝试将两个PDF版本7文档合并在一起,它坚持认为它们是版本5或更低版本.
小智 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();
Run Code Online (Sandbox Code Playgroud)
多么奇怪啊。PDF 版本主要是建议。PDF 必须以以下内容开头:
%PDF-1.x
Run Code Online (Sandbox Code Playgroud)
其中 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();
Run Code Online (Sandbox Code Playgroud)
然后,您可以再次读入它,并按照以前的方式将其组合起来。
| 归档时间: |
|
| 查看次数: |
15320 次 |
| 最近记录: |