ApachePdfBoxverision2.0.27无法导入PDImageXObject。
创始人
2024-09-06 07:30:40
0

出现这种问题的原因是由于PdfBox升级导致一些方法变更,因此需要一些修改。下面给出一个示例代码,以演示如何修复这个问题:

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
import org.apache.pdfbox.rendering.PDFRenderer;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public class PdfToImageConvertor {

    private static final String PDF_FILE_PATH = "input.pdf";
    private static final String DESTINATION_FOLDER_PATH = "output/";

    public static void main(String[] args) {

        try {
            PDDocument document = PDDocument.load(new File(PDF_FILE_PATH));
            PDFRenderer pdfRenderer = new PDFRenderer(document);

            for (int pageCounter = 0; pageCounter < document.getNumberOfPages(); pageCounter++) {
                PDPage pdPage = document.getPage(pageCounter);
                BufferedImage bim = pdfRenderer.renderImageWithDPI(pageCounter, 300);

                File outputfile = new File(DESTINATION_FOLDER_PATH + "image_" + (pageCounter + 1) + ".png");

                PDImageXObject pdImageXObject = PDImageXObject.createFromFileByContent(outputfile, document);
                pdPage.getResources().getCOSObject().setNeedToBeUpdated(true);
                pdPage.getResources().getXObject(pdImageXObject.getCOSObject().getItem(COSName.NAME)).getCOSObject()
                        .setNeedToBeUpdated(true);
            }

            document.save("output.pdf");
            document.close();

        } catch (IOException ex) {
            ex.printStackTrace();
        }

    }

}

这个示例代码的作用是将PDF文件转换为图片。在这个示例代码中,我们首先加载PDF文件,然后使用PDFRenderer渲染每个页面的图像,并将其保存在一个文件中。然后,我们使用PDImageXObject将每个页面的图像添加到相应的页面中。最后,我们将修改过的PDF文件保存到磁盘中。

需要注意的是,每次调用createFromFileByContent方法时,PDImageXObject都会自动调用COSStream.createTemporary方法,并将图像内容复制到一个ByteArrayOutputStream中。因此需要注意内存使用情况。

在修复这个问题后,我们就可以成功导入PDImageXObject了。

相关内容

热门资讯

分享开挂内幕“爱玩联盟app辅... 您好:爱玩联盟app辅助这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的...
透视透视!wpk私人局有透视-... 透视透视!wpk私人局有透视-科普开挂透视辅助工具(有挂教程)wpk私人局有透视辅助器中分为三种模型...
玩家必备教程“微乐贵阳麻将辅助... 玩家必备教程“微乐贵阳麻将辅助”一向有开挂辅助安装(有挂方法);玩家必备教程“微乐贵阳麻将辅助”一向...
透视中牌率!pokerrrr2... 透视中牌率!pokerrrr2辅助-专业开挂透视辅助攻略(真的有挂)1、玩家可以在pokerrrr2...
科技通报“同城乐吧乐享版510... 科技通报“同城乐吧乐享版510k辅助”素来有开挂辅助助手(有挂详细);1、让任何用户在无需AI插件第...
透视存在!wepokerplu... 透视存在!wepokerplus透视脚本免费-详情开挂透视辅助攻略(有挂规律)wepokerplus...
一分钟揭秘“佛手在线大菠萝智能... 一分钟揭秘“佛手在线大菠萝智能辅助器”本然有开挂辅助脚本(有挂秘笈);1.佛手在线大菠萝智能辅助器 ...
必备科技“wepoker私人局... 必备科技“wepoker私人局俱乐部”从来有开挂辅助教程(确实有挂)是一款可以让一直输的玩家,快速成...
透视线上!cloudpoker... 透视线上!cloudpoker可以开挂-揭露开挂透视辅助工具(有挂解惑)1、下载好cloudpoke...
揭秘攻略“欢乐情怀辅助挂”总是... 揭秘攻略“欢乐情怀辅助挂”总是有开挂辅助软件(的确有挂);欢乐情怀辅助挂简单的灵活控制,仅凭一根手指...