pdfbox を使用して、pdf に埋め込まれた画像の画像メタデータ (および画像) を抽出しようとしています。次の問題があります。
for each page i:
for each image j in page i:
extract metadata, output
create the image file in separate thread
generate_image()
これで、イメージ ファイルを作成するための次のコードが得られました。このコードは、 in FileWriting
class implementationと呼ばれるメソッドに含まれていますRunnable
。このメソッドは から呼び出されrun()
ます。コードは次のとおりです。
try {
File F=new File(figurename);
item.getImage().write2file( F );
} catch (Exception e) {
e.printStackTrace();
}
whereはオブジェクトをitem.getImage()
返しPDXObjectImage
ます。別のスレッドを作成せずにこれを行うと問題なく動作しますが、このタスクを実行するスレッドを作成すると、次のエラーが表示されます。
java.lang.IndexOutOfBoundsException: Index: 5, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:604)
at java.util.ArrayList.get(ArrayList.java:382)
at org.apache.pdfbox.io.RandomAccessBuffer.seek(RandomAccessBuffer.java:84)
at org.apache.pdfbox.io.RandomAccessFileInputStream.read(RandomAccessFileInputStream.java:96)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:275)
at java.io.BufferedInputStream.read(BufferedInputStream.java:334)
at java.io.FilterInputStream.read(FilterInputStream.java:107)
at org.apache.pdfbox.pdmodel.graphics.xobject.PDCcitt$TiffWrapper.read(PDCcitt.java:468)
at org.apache.pdfbox.io.IOUtils.copy(IOUtils.java:68)
at org.apache.pdfbox.pdmodel.graphics.xobject.PDCcitt.write2OutputStream(PDCcitt.java:184)
at org.apache.pdfbox.pdmodel.graphics.xobject.PDXObjectImage.write2file(PDXObjectImage.java:165)
at extractor.FileWriting.generate_image(FileWriting.java:136)
誰かが私が間違っているところを指摘できますか?