我想在iText中加载普通PDF文件并将其导出(或写入)为PDF / A1-A。
手动和使用iTextSharp,我有“iText in action sec.edit”。仍然进展== null。
答案 0 :(得分:7)
任意PDF - > PDF / A1-A几乎不可能。 1-A需要在标记中嵌入大量格式化信息...大约需要将重建PDF作为html / css的信息。
从“这是一堆带有这些坐标的线条和字符”到“这是一个包含X列和Y行的表格,其单元格中的以下信息”非常困难。几乎不可能。
PDF / A1-b更加真实,但仍然不容易。您需要将所有内容放入一组特定的颜色空间并渲染意图和things with molecular structures that your primitive intellect wouldn't understand。
(可怕的错误引用,但那里还有一些搞笑,所以我离开了。)
iText [夏普]支持生成 PDF / A,当你对规范公然做某事时它会告诉你...但是在你调用document.close之前它可能无法捕获它()。编写生成器的程序员仍然需要“手动”填写整条信息。
不是没有人可以说“我们会采取一些任意的PDF并将其转换为PDF / A-1a”(不用说谎)。你指着我说的一些软件,我会给你一个完全有效的PDF,它会打破它。每次。我敢打赌钱。
您需要PDF / A ISO规范($)的副本。您需要PDF ISO规范(free!)的副本。你需要知道他们。然后你会明白你的反对意见。
现在所有的都是“任意PDF”。如果你有一堆报告的实例都来自同一个程序,那么隧道尽头有一盏灯。它仍然是一个很长的隧道,但问题降级为“硬”而不是“几乎不可能”。一旦你有一份报告工作,从相同的应用程序处理类似的报告很可能相对容易。
仍然没有乐趣。
答案 1 :(得分:1)
iText不支持转换PDF-> PDF / A“开箱即用”。
你当然可以使用库中的低级API作为编写这样一个转换器的起点......但它只是一个开始......
答案 2 :(得分:0)
试试这个。
PdfStamper pst = null;
PdfReader reader = new PdfReader(GetTemplateBytes());
pst = new PdfStamper(reader, Response.OutputStream);
pst.Writer.SetPdfVersion(PdfWriter.PDF_VERSION_1_4);
pst.Writer.PDFXConformance = PdfWriter.PDFA1A;