PDFファイル(入力として提供)の最初のページから画像を作成するユーティリティを設計しています。このコードは、jpedal
ライブラリを使用して png 画像を作成します。
以下は私のコードです。
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import org.jpedal.PdfDecoder;
public abstract class PDFUtil
{
private static final String IMAGE_FORMAT = "png";
//My Function
public static BufferedImage getImageForPdfData(File file, int pageNumber) throws Exception
{
PdfDecoder decoder;
decoder = new PdfDecoder();
decoder.openPdfFile(file.getPath());
return decoder.getPageAsImage(pageNumber); //Error is here..
}
public static void main(String[] args) throws Exception {
File f = new File("C:/Documents and Settings/shashank.kadne/Desktop/Test.pdf");
BufferedImage bi = PDFUtil.getImageForPdfData(f,1);
System.out.println(bi);
PDFUtil.getScaledImageWithHeight(bi, new File("output1.png"), 350,240);
}
}
上記のコードは、保護されていない標準の pdf ファイルに対して完全に機能します。セキュリティ ポリシーによってユーザーがページ抽出から制限されている PDF があります。この pdf のユーティリティを実行すると、次のエラーが表示されます。
例外:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
at java.lang.System.arraycopy(Native Method)
at org.jpedal.io.DecryptionFactory.decrypt(Unknown Source)
at org.jpedal.io.ArrayDecoder.setObjectArrayValue(Unknown Source)
at org.jpedal.io.ArrayDecoder.setValue(Unknown Source)
at org.jpedal.io.ArrayDecoder.readArray(Unknown Source)
at org.jpedal.io.ObjectDecoder.setValue(Unknown Source)
at org.jpedal.io.ObjectDecoder.readObjectDataValues(Unknown Source)
at org.jpedal.io.ObjectDecoder.readDictionaryAsObject(Unknown Source)
at org.jpedal.io.PdfFileReader.readObject(Unknown Source)
at org.jpedal.io.PdfReader.readObject(Unknown Source)
at org.jpedal.objects.acroforms.rendering.DefaultAcroRenderer.createDisplayComponentsForPage(Unknown Source)
at org.jpedal.PDFtoImageConvertor.convert(Unknown Source)
at org.jpedal.PdfDecoder.getPageAsImage(Unknown Source)
at org.jpedal.PdfDecoder.getPageAsImage(Unknown Source)
at jpedaldemo.PDFUtil.getImageForPdfData(PDFUtil.java:54)
at jpedaldemo.PDFUtil.main(PDFUtil.java:142)
何が問題だと思いますか? セキュリティ制限が問題を引き起こしていますか?