我正在设计一个实用程序,它可以从 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)
你认为可能是什么问题?安全限制是否会产生问题?