2

jpedalを使用してPDFを画像に変換します。これはほとんどのPDFで正常に機能しますが、jpeg2000を含む一部のPDFでは引き続き次のエラーが発生します。

 java.lang.RuntimeException: JPeg 2000 Images needs the VM parameter -Dorg.jpedal.jai=true switch turned on
    at org.jpedal.parser.PdfStreamDecoder.decodeStreamIntoObjects(Unknown Source)
    at org.jpedal.parser.PdfStreamDecoder.decodePageContent(Unknown Source)
    at org.jpedal.PDFtoImageConvertor.convert(Unknown Source)
    at org.jpedal.PdfDecoder.getPageAsImage(Unknown Source)
    at org.jpedal.PdfDecoder.getPageAsImage(Unknown Source)
    at com.....

私はすでにJAVA_OPTS、Tomcatの実行構成、および以下を使用したプログラムコードでJVMパラメータを設定しています。

System.setProperty("org.jpedal.jai", "true");
PdfDecoder decode_pdf = new PdfDecoder(true);
FontMappings.setFontReplacements();
decode_pdf.openPdfArray(pdf_file);

また、3つのJAIライブラリが私のビルドパスにあります。

だから私は他に何をしなければならないのか分かりませんか?

変換のための私の完全なコードは次のとおりです。

List<BufferedImage> images = new LinkedList<BufferedImage>();           
System.setProperty("org.jpedal.jai", "true");
PdfDecoder decode_pdf = new PdfDecoder(true);
FontMappings.setFontReplacements();
decode_pdf.openPdfArray(pdf_file);
decode_pdf.setExtractionMode(0, 1f); //do not save images
for (int i = 1; i<= decode_pdf.getPageCount(); i++)
{
  images.add(decode_pdf.getPageAsImage(i));
}   
decode_pdf.closePdfFile();

何か疑惑はありますか?

4

2 に答える 2

2
  1. jpedalのjaiをアクティブにします

    System.setProperty( "org.jpedal.jai"、 "true");

  2. (Mark Stephensブログの記事よりも)より良い解決策は、プロバイダーを再登録することです。これは、一度だけ実行する必要があるためです。

    IIORegistryレジストリ=IIORegistry.getDefaultInstance();
    Registry.registerServiceProvider(new com.sun.media.imageioimpl.plugins.jpeg2000.J2KImageWriterSpi()); Registry.registerServiceProvider(new com.sun.media.imageioimpl.plugins.jpeg2000.J2KImageReaderSpi());

もちろん、正しく機能するには、JAIライブラリがクラスパスに含まれている必要があります。

于 2013-04-23T13:43:20.907 に答える
0

私はここでこの問題の答えを見つけました。

Tomcat環境で、server.xmlのJreLeakPreventionListenerを無効にする必要がある場合は、正常に機能します。

于 2013-03-27T14:13:28.490 に答える