当前位置: 首页 > 知识库问答 >
问题:

包含iText的损坏pdf文档

管弘
2023-03-14

我在android和iText上遇到了一些问题,如果有人能帮忙的话。

android应用程序编写多个页面,每个页面包含不同的表。我没有允许一个表跨越一个页面,而是为每个页面添加一个表,并为下一个页面创建一个新表。这样我就可以控制页面总数、页眉和页脚。

我的问题是Android adobe pdf阅读器显示文档很好,正是我正在寻找的。但是,当我在PC上打开一个窗口以访问平板电脑上的 /mnt/sdcard文件夹(创建文件的位置)并在我的PC上使用Adobe阅读器打开文档时,adobe阅读器X会收到一条消息,称打开此文档时出错。文件已损坏,无法修复。

这非常令人沮丧,我确信表中添加的列数是正确的。我确实经常使用colspan和rowspan。不确定这是否与此有关。如果我跳过文档的主要部分,它似乎可以正常工作。

iText和Adobe X是否存在已知问题。

我根本没有敲定表格,只是使用文档。添加(表),但我确实关闭了文档。文件编号:。关闭()。

我也试过复制到我的桌面但没有区别

谢谢你的帮助

皮特

我试图用iText PDFReader类重新打开文档,但出现以下错误。

Rebuild failed: trailer not found.; Original message: PDF startxref not found.

经过调查,似乎输出流关闭得太早了,尽管我不确定为什么它应该显示在平板电脑中。也许它以某种方式连接了文档。流将打开,如图所示

Document document = new Document(PageSize.A4.rotate());
PdfWriter.getInstance(document, new FileOutputStream(Const.PDF_PATH+FILE));
document.open();
document.addTitle("Pilot Flight Logbook");
document.addSubject("Log of all Flights");
document.addKeywords("Java, PDF, iText");
document.addAuthor("ProPilot");
document.addCreator("ProPilot");

这似乎是正确的轨道吗。如果是这样,我如何才能阻止流自动关闭?

共有3个答案

罗鸿福
2023-03-14

为了确保流得到正确管理,您可能希望尝试将它们转换为尝试使用资源块。当您这样做时,当您到达块的末尾时,它们将自动关闭,但在您手动关闭它们之前将保持打开状态。类似于这样:

try (OutputStream oStream = new FileOutputStream(Const.PDF_PATH+FILE)) {
    Document document = new Document(PageSize.A4.rotate());
    PdfWriter.getInstance(document, oStream);
    document.open();
    document.addTitle("Pilot Flight Logbook");
    document.addSubject("Log of all Flights");
    document.addKeywords("Java, PDF, iText");
    document.addAuthor("ProPilot");
    document.addCreator("ProPilot");
    < DO MORE STUFF>
} // your stream will close here
利思源
2023-03-14

我遇到了这个错误(iText7,Acrobat 11生成的可填充PDF),解决方案是在Acrobat Pro中打开PDF,通过优化工具运行它,删除不必要的属性,将文件从PDF v1.7降级到v1.5,删除压缩。只有这样,Adobe Reader才能在被iText7修改/盖章后打开PDF。

宗政功
2023-03-14

在您的计算机上查看文档时,将平板电脑上文档的文件大小(您会发现它对SO来说太大)与其文件大小进行比较。您在网站上共享的文件不是完整的PDF。它看起来好像是在任意位置被切成两半的。也许您没有完全复制它,或者可能对文件大小有一些限制。

在任何情况下:我在记事本中打开你的PDF并滚动到最后。每个PDF都应以%%EOF结束。您的结束于流对象中的任意位置(流对象通常以关键字endstream结束)。

一旦找到导致PDF被截断为8465字节的原因,您就解决了问题。如果你说PDF在平板电脑上显示正确,罪魁祸首不会是iText。

 类似资料:
  • 我有一个问题,其中PdfWriter从iText7.0.4.0(。NET 4.5.1)为某些输入的PDF文件生成损坏的PDF文档。 详细说明,格式良好的段落的PDF文件没有问题。但是,如果输入的PDF包含不规则的内容(对于缺乏更好的词;请参考谷歌驱动器中的示例),PdfWriter会产生损坏的PDF文件;损坏,我的意思是文件可以打开,但它显示的空白页具有极高的缩放(在Adobe Reader XI

  • 我试图使用ITextSharp旋转PDF文档中的各个页面。它看起来很有效,因为当我在土坯上打开时,一切看起来都很好。然而,当试图在itextSharp中重新打开时,会抛出各种异常。我可以看出文档出了问题,因为adobe总是问我是否要保存更改时,打开一个与itextSharp操纵的文档,这表明它修复了损坏。 疯狂的是,我甚至不必对文档进行任何操作,只需创建一个新的压模并关闭它。下面是代码,被剥离到仍

  • 问题内容: 我使用Eclipse在Windows 7中创建了一个jar文件。当我尝试打开jar文件时,它说jar文件无效或损坏。谁能建议我为什么jar文件无效? 问题答案: 当您在Windows资源管理器中双击一个JAR文件时,会发生这种情况,但是JAR本身实际上不是 可执行的 JAR。真正的可执行JAR至少应具有带有方法的类,并在中引用它。 在Eclispe中,您需要将项目导出为 Runnabl

  • 我有一个使用MIP SDK保护PDF的API。目前,它在.NET Framework 4.6.1中运行良好。我正在尝试将相同的代码合并到.NET Core 3.1 API中,但在使用MIP保护PDF之后,我得到了损坏的PDF。跳过保护将导致可以打开的PDF。不确定是否需要一些东西来使MIP在.NET Core中工作?使用Microsoft.InformationProtection。文件1.8.9

  • 我试图从一个网站下载所有pdf文件,但创建的每个pdf都已损坏。。。

  • 使用itext v5对文档进行数字签名时。5.11 PDF/A-2b文档被破坏——这意味着它们不再作为PDF/A文档有效。违反以下规则:https://github.com/veraPDF/veraPDF-validation-profiles/wiki/PDFA-Parts-2-and-3-rules#rule-643-1 在上面的链接中,它指定摘要无效,因此我也给你一个代码段,在使用iText