1

斯卡拉代码:

    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

.

4

0 回答 0