我正在使用 Windows 服务器。该服务器有 pdf 文件。无法打开其中一个 pdf 文件。我尝试使用 Adobe 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 文件。