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