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

acrobat reader读取文档时出错,可能已损坏,无法修复

庞元青
2023-03-14

我无法打开这个pdf文件在acrobat reader它告诉我错误(法语)没有代码错误。当acrobat reader中opne pdf文件时,如何获取更多关于错误警报的信息,是否有快捷方式显示更多关于错误的信息,因为目前只有法语:

“读取文档时出错,可能已损坏,无法修复”

在chrome pdf viewer中,我可以打开这个错误-original.pdf

ps:这里是另一个OK-Original.pdf文件,它可以在acrobat Reader打开时使用。

Document pdfOriginal = PDDocument.load(f.toFile());

//1.set field partialName like his current value
pdfOriginal.getDocumentCatalog().getAcroForm().getFields().forEach(field -> {
    if (field instanceof PDTextField && !field.getValueAsString().contains("--")
            && !field.getValueAsString().isBlank() && !field.getValueAsString().isEmpty()) {
        field.setPartialName(field.getValueAsString());
    }
});

//2.remove all link in document
removeLinksInPages(pdfOriginal);

//3.remove field with empty||blank value
pdfOriginal.getDocumentCatalog().getAcroForm().getFields().forEach(field -> {
    if (field instanceof PDTextField
            && (field.getValueAsString().isBlank() || field.getValueAsString().isEmpty())) {
        try {
            removeField(pdfOriginal, field.getPartialName());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
});

pdfOriginal.save(new File(f.toAbsolutePath().toString()));
pdfOriginal.close();

//4.try to compress to gain some octets
PDDocument compress = PDDocument.load(f.toFile());
OptimizePdfDocument.optimize(compress);
compress.save(new File(f.toAbsolutePath().toString()));
compress.close();

使用的方法:

removeLinksInPages(...)

removeField(...)

PDDocument pdfOriginal = PDDocument.load(new File(".../error-original.pdf"));
pdfOriginal.save(new File(".../error-original.pdf"));
pdfOriginal.close();

PS:给@AcrobatReader的消息:问题是我是PDF作者,我不知道怎么解决(笑话)

@Kens你能给一些输入这个,似乎错误在第2页

共有1个答案

韦寒
2023-03-14

当Acrobat显示错误时,您可以尝试按住控制键(在Windows上),同时左键单击“确定”按钮。这有时会给你更多的信息。

在这种情况下就不是了。文件坏得很厉害。它已经被编辑了至少两次,编辑看起来已经破坏了文件,而不是简单的修复。该文件包含:

startxref
81612

它应该指向xref表的开始(该表包含所有对象的文件中的偏移量)。相反,文件偏移量指向:

C89E1E8B69>]/Index[4 2 10 1 156 2]/Info 5 0 R/Length 31/Prev 77185/Root 1 0 R/Size 158/Type/XRef/W[1 3 0]>>stream

由于Acrobat不会打开修复的文件,这可能是Acrobat正在抱怨的,以及。似乎在两次编辑文件时都包含了对象4、5和10的新定义,但没有增加它们的生成号,使它们为0,因此彼此重复。

从根本上说,如果Acrobat不打开您的文件,您应该将其视为完全损坏。

 类似资料:
  • 当我从android studio运行android项目时,它正在工作。可能是gradle的问题,但不能解决它。请帮忙

  • 我正在使用apache poi,我创建了一个HSSF工作簿,并尝试打开一个xlsx文件。但当我用excel打开时,它显示文件已损坏。这是我的密码。

  • 我正在ServletOutputStream上编写一个excel文件(使用HSSFWorkBook for xls和XSSFWorkBook forxlsx)。作为ServletResponse的一部分下载的excel已损坏并包含垃圾字符。 我尝试过将Excel文件写入FileOutpuStream,它工作正常。Excel文件可读且完好无损。 已经检查了关于同一问题的其他几个StackOverfl

  • 在使用SSL的azure kubernetes服务上运行时,我的spring-boot应用程序在tomcat服务器中使用NPE启动后失败。 首先,什么能成功工作:我用Spring Initializr创建了一个最小的Spring-boot应用程序: null 我想将它与azure Cloud上的kubernetes集群一起使用。为此,我有一个Azure Kubernetes服务(AKS)。我使用j

  • 由于后面描述的一系列事件,每当我试图用pip做任何事情时,我都会在命令提示符中得到以下错误。 所有的情况都在我的另一个问题中描述,没有得到有用的答案。这是模块不发现错误。 简而言之:- < li >我在Flask中有一个运行在Anaconda环境中的工作应用程序,它使用pip(不是conda)安装所有东西,它使用flask-bootstrap。 < li >我卸载了flask-bootstrap并