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)外挂透明挂辅助插件(系统)发牌机制(2020已更新)(哔哩哔哩);实战中需...
透视脚本!广东雀神小程序机制(... 透视脚本!广东雀神小程序机制(透视)太坑了确实真的有挂(有挂攻略)-哔哩哔哩是一款可以让一直输的玩家...
最新技巧!边锋斗地主看底牌软件... 1、最新技巧!边锋斗地主看底牌软件(wepoKE),太坑了其实是真的有挂(有挂总结)-哔哩哔哩2、进...
玩家必看攻略!边锋杭麻圈有外挂... 玩家必看攻略!边锋杭麻圈有外挂,wpk挂机辅助软件免费版下载,详细有挂(有挂教学)-哔哩哔哩;致您一...
热门推荐(wpk微扑克模拟器)... 热门推荐(wpk微扑克模拟器)外挂透明挂辅助APP(智能)发牌规律(2025已更新)(哔哩哔哩);w...
免费测试版!雀神微信开挂小程序... 免费测试版!雀神微信开挂小程序(透视)太坑了确实是真的有挂(有挂了解)-哔哩哔哩是一款可以让一直输的...
重大消息!边锋老友二打一有挂(... 重大消息!边锋老友二打一有挂(wEpOke),太坑了确实是真的有挂(有挂方法)-哔哩哔哩;边锋老友二...
最新技巧!边锋斗地主透明器,来... 最新技巧!边锋斗地主透明器,来玩德州有挂,详细有挂(有挂介绍)-哔哩哔哩1、不需要AI权限,帮助你快...
揭秘!雀神小程序如何赢(透视)... 揭秘!雀神小程序如何赢(透视)太坑了竟然真的有挂(有挂总结)-哔哩哔哩这是由厦门游乐互动科技有限公司...