斯卡拉代码:
val file = new File(path + name)
val raf = new RandomAccessFile(file, "r")
val channel = raf.getChannel()
val buf = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size())
val pdffile = new PDFFile(buf) // line 5
这里,file 指的是 pdf 文件。path是pdf文件的地址,name是文件名。
在正常情况下,它执行得很好,但在某些 pdf 文件中,它会在第 5 行抛出错误:
com.sun.pdfview.PDFParseException: Expected 'xref' at start of table
at com.sun.pdfview.PDFFile.readTrailer(PDFFile.java:974) ~[pdf-renderer-1.0.5.jar:na]
at com.sun.pdfview.PDFFile.parseFile(PDFFile.java:1175) ~[pdf-renderer-1.0.5.jar:na]
at com.sun.pdfview.PDFFile.<init>(PDFFile.java:126) ~[pdf-renderer-1.0.5.jar:na]
at com.sun.pdfview.PDFFile.<init>(PDFFile.java:102) ~[pdf-renderer-1.0.5.jar:na]
我认为这个 pdf 文件的格式或内容有问题。当我使用另存为这个pdf文件制作另一个pdf文件并使用新创建的pdf文件时,它工作正常。
那么我该如何解决这个问题,以便无论我使用正确的文件还是错误的文件,我的代码都应该可以正常工作。
编辑
我在 com/sun/pdfview/PDFFile.java 描述中找到了以下内容
@throws PDFParseException if the document appears to be malformed, or
its features are unsupported
.