0

我正在设计一个实用程序,它可以从 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)

你认为可能是什么问题?安全限制是否会产生问题?

4

0 回答 0