我有一个问题,其中PdfWriter从iText7.0.4.0(。NET 4.5.1)为某些输入的PDF文件生成损坏的PDF文档。
详细说明,格式良好的段落的PDF文件没有问题。但是,如果输入的PDF包含不规则的内容(对于缺乏更好的词;请参考谷歌驱动器中的示例),PdfWriter会产生损坏的PDF文件;损坏,我的意思是文件可以打开,但它显示的空白页具有极高的缩放(在Adobe Reader XI中)。上述谷歌驱动器链接中也提供了损坏的样本。
示例代码:
using (var pdfReader = new PdfReader("sample1_input.pdf"))
{
PdfDocument pdfDoc = new PdfDocument(pdfReader, new PdfWriter("sample1_corrupted_output.pdf"));
// Trying to highlight a part of PDF by referencing this example:
// https://developers.itextpdf.com/examples/stamping-content-existing-pdfs/clone-highlighting-text
// Commented out for now because PdfWriter is producing corrupted PDF documents for the samples and similar PDF files.
//PdfCanvas canvas = new PdfCanvas(pdfDoc.GetFirstPage());
//canvas.SetExtGState(new PdfExtGState().SetFillOpacity(0.1f));
//canvas.SaveState();
//canvas.SetFillColor(Color.YELLOW);
//canvas.Rectangle(100, 100, 200, 200);
//canvas.Fill();
//canvas.RestoreState();
pdfDoc.Close(); // Corrupted PDF file is produced, even without highlighting.
}
我注意到的一件“有趣”的事情是,如果我提供“new StampingProperties().UseAmpendMode()”作为PdfDocument的第三个参数(没有突出显示的代码),PdfWriter会吐出原始文件(尽管由于某些原因比原始文件大几kb)。但是,当突出显示代码未注释时,PdfWriter会返回到生成损坏的PDF。
链接到示例文件:https://drive.google.com/open?id=0B3NPOZswWocQV09KMW5fbFVyUm8sample1_input.pdf(输入示例#1)-
请好心给点建议。
导致此损坏的原因是相关PDF页面树的异常结构:
这在两方面是不寻常的:
如果删除无页子树(通过从对象10的孩子中删除对象17),两个怪癖都被删除,代码不再失败。
虽然这两个怪癖都很奇怪,但我在ISO 32000-1中没有看到任何东西(不幸的是,我还没有ISO 32000-2的副本)表明这些不寻常的结构被明确禁止。因此,我假设这是一个iText错误。
我可以将iText 7.0.4的问题复制Java但不能复制7.0.5的当前开发SNAPSHOT。
事实上,有一个日期为2017-09-19 10:03:37[c0b35f0]的提交被描述为“修复页面树重建中的错误”,在描述为“PdfPage和PdfPages的句柄混合”的代码块中的PdfPagesTree
类中存在差异。因此,这个问题似乎是已知的,并且已经解决了。
您可以等待7.0.5版本或寻找修补程序7.0.4. x。
Docx4J生成的Excel工作簿总是说损坏了,但我无法确定Excel不喜欢底层XML的什么,更不用说如何修复它了。 我的用例如下:我试图定期自动生成一个带有图表和图形的excel工作簿。只有原始数据会改变,但随着原始数据的改变,其他一切都会动态更新。 null null 在我的空白工作簿之前和之后 欢迎所有的想法。
我在android和iText上遇到了一些问题,如果有人能帮忙的话。 android应用程序编写多个页面,每个页面包含不同的表。我没有允许一个表跨越一个页面,而是为每个页面添加一个表,并为下一个页面创建一个新表。这样我就可以控制页面总数、页眉和页脚。 我的问题是Android adobe pdf阅读器显示文档很好,正是我正在寻找的。但是,当我在PC上打开一个窗口以访问平板电脑上的 /mnt/sdc
问题内容: 我正在尝试在Django应用程序中使用Python从SVG输入文件生成PDF。 我已经找到了两个可行的解决方案:cairo + rsvg和imagemagick,但是它们都有一个问题:它们具有一些我不想安装在服务器上的奇怪的依赖项,例如DBUS和GTK。 因此,我正在寻求另一种从SVG生成PDF的方法,而不必在服务器上安装所有这些愚蠢的依赖项。 问题答案: 您考虑过svglib吗? 它
问题内容: 我们有一段代码可以在我们的系统上生成一个zip文件。一切正常,但是有时该Zip文件在由FilZip或WinZip打开时被视为已损坏。 所以这是我的问题:我们如何以编程方式检查生成的zip文件是否损坏? 这是我们用于生成zip文件的代码: 我们在这里做错了什么吗? 编辑:实际上,上面的代码是绝对可以的。我的问题是我正在为用户重定向WRONG流。因此,与其打开一个zip文件,不如打开一个完
问题内容: 我使用Eclipse在Windows 7中创建了一个jar文件。当我尝试打开jar文件时,它说jar文件无效或损坏。谁能建议我为什么jar文件无效? 问题答案: 当您在Windows资源管理器中双击一个JAR文件时,会发生这种情况,但是JAR本身实际上不是 可执行的 JAR。真正的可执行JAR至少应具有带有方法的类,并在中引用它。 在Eclispe中,您需要将项目导出为 Runnabl
我试图使用ITextSharp旋转PDF文档中的各个页面。它看起来很有效,因为当我在土坯上打开时,一切看起来都很好。然而,当试图在itextSharp中重新打开时,会抛出各种异常。我可以看出文档出了问题,因为adobe总是问我是否要保存更改时,打开一个与itextSharp操纵的文档,这表明它修复了损坏。 疯狂的是,我甚至不必对文档进行任何操作,只需创建一个新的压模并关闭它。下面是代码,被剥离到仍