PDF 文件无法打开且可能已损坏

PDF 文件无法打开且可能已损坏

我正在使用 Windows 服务器。该服务器有 pdf 文件。无法打开其中一个 pdf 文件。我尝试使用 Adob​​e Acrobat Reader 打开它。这时发生了错误:

“Adobe Acrobat Reader DC 无法打开 .pdf,因为它不是支持的文件类型,或者文件已损坏。

我尝试使用其他 pdf 阅读器(例如“FoxitReader”)打开它,但失败了。

我尝试使用 pdftk 工具打开它,但无法打开。以下是该工具的日志:

2016-11-20 15:31:07 INFO: Starting PDFtk
2016-11-20 15:31:12 WARNING: Trouble finding page count for PDF: 27BB44FA-A01C-4028-A7D7-90B8477E1DDF{2C601900-A9E6-4AE0-B9A8-A9A5E9F68D7C}0.pdf pdftk output: Error: Unable to find file.
Error: Failed to open PDF file: 
   C:\Users\mtaha\Desktop\health check forms\27BB44FA-A01C-4028-A7D7-90B8477E1DDF{2C601900-A9E6-4AE0-B9A8-A9A5E9F68D7C}0.pdf
Errors encountered.  No output created.
Done.  Input errors, so no output created.

2016-11-20 15:31:12 INFO: Unable to open this PDF, so it will be removed from the input.

Removing PDF: 27BB44FA-A01C-4028-A7D7-90B8477E1DDF{2C601900-A9E6-4AE0-B9A8-A9A5E9F68D7C}0.pdf

然后我尝试了以下在线 pdf 修复工具https://www.pdf-online.com/osa/repair.aspx

但是,它说没有找到头文件。所以无法打开它。

还有其他方法可以打开这个 PDF 文件吗?

我想分享以下内容,因为我觉得你可能会问。我用记事本打开了 PDF 文件来查看消息。我分享的是长消息的一部分(错误):

e() for servlet LogServlet threw exception
java.lang.IndexOutOfBoundsException: Index: 25, Size: 25
    at java.util.ArrayList.RangeCheck(ArrayList.java:547)
    at java.util.ArrayList.get(ArrayList.java:322)
    at com.primavera.exponline.common.base.LogCommand.getMain(Unknown Source)
    at com.primavera.exponline.servlet.LogServlet.a(Unknown Source)
    at com.primavera.exponline.servlet.LogServlet.service(Unknown Source)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:638)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:444)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:382)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:310)
    at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
    at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    at com.primavera.exponline.servlet.ExpActionServlet.service(Unknown Source)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter

答案1

我使用记事本打开了 PDF 文件来查看消息。

PDF 通常以 %PDF-1.4 开头(或旧版本以 %PDF-1.3 等开头)

e() for servlet LogServlet threw exception
java.lang.IndexOutOfBoundsException: Index: 25, Size: 25
at java.util.ArrayList.RangeCheck(ArrayList.java:547)
at java.util.ArrayList.get(ArrayList.java:322)

如果您看到这样的文本,那么答案很简单。这不是 PDF 文件。它可能具有扩展名 PDF,但其内容不是 PDF。

相反,似乎有些活动的 Java 未打算用于生成 PDF 文件。这失败了,您会得到错误输出,而不是 PDF 内容。

然后我尝试了以下在线 pdf 修复工具https://www.pdf-online.com/osa/repair.aspx

由于它不是 PDF 文件,因此 PDF 修复工具无法对其进行任何处理。

但是,它说没有找到头文件。所以无法打开它。

这是正确的。你的文件不是以 %PDF 开头的

还有其他方法可以打开这个 PDF 文件吗?

不是,因为它不是 PDF 文件。

相关内容