スカラコード:
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
.