java – PDFBox:将pdf页面转换为图像的问题

前端之家收集整理的这篇文章主要介绍了java – PDFBox:将pdf页面转换为图像的问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的使命很简单:将每一页pdf文件转换为图像.我尝试使用icepdf开源版本来生成图像,但是它们不会使用正确的字体生成图像.所以我开始使用PDFBox.代码如下:
PDDocument document = PDDocument.load(new File("testing.pdf"));             
List<PDPage> pages = document.getDocumentCatalog().getAllPages();
for (int i = 0; i < pages.size(); i++) {
 PDPage singlePage = pages.get(i);
 BufferedImage buffImage = convertToImage(singlePage,8,12);
 ImageIO.write(buffImage,"png",new File(PdfUtil.DATA_OUTPUT_DIR+(count++)+".png"));
}

字体看起来不错,但pdf文件中的图片看起来很晕(见附件).我查看源代码,但我仍然没有线索如何解决它.你们有什么想法吗?请帮忙.谢谢!!

解决方法

使用pdfBox将PDF文件转换为图像.

下载此文件并将其粘贴到Documents文件夹中.

例:

package com.pdf.pdfBox.test;

import java.awt.HeadlessException;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.List;

import org.apache.pdfBox.pdmodel.PDDocument;
import org.apache.pdfBox.pdmodel.PDPage;
import org.apache.pdfBox.util.PDFImageWriter;

public class ConvertPDFPageToImageWithoutText {
    public static void main(String[] args) {
        try {
            String oldPath = "C:/Documents/04-Request-Headers.pdf";
            File oldFile = new File(oldPath);
            if (oldFile.exists()) {
            PDDocument document = PDDocument.load(oldPath);
            @SuppressWarnings("unchecked")
            List<PDPage> list = document.getDocumentCatalog().getAllPages();

            String fileName = oldFile.getName().replace(".pdf","");
            String imageFormat = "png";
            String password = "";
            int startPage = 1;
            int endPage = list.size();
            String outputPrefix = "C:/Documents/PDFCopy/";//converted images saved here
            File file = new File(outputPrefix);
            if (!file.exists()) {
                file.mkdirs();
            }
            int imageType = 24;
            String color = "rgb";
            int resolution;

            try {
                resolution = Toolkit.getDefaultToolkit().getScreenResolution();
            } catch (HeadlessException e) {
                resolution = 96;
            }

            if ("bilevel".equalsIgnoreCase(color)) {
                imageType = BufferedImage.TYPE_BYTE_BINARY;
            } else if ("indexed".equalsIgnoreCase(color)) {
                imageType = BufferedImage.TYPE_BYTE_INDEXED;
            } else if ("gray".equalsIgnoreCase(color)) {
                imageType = BufferedImage.TYPE_BYTE_GRAY;
            } else if ("rgb".equalsIgnoreCase(color)) {
                imageType = BufferedImage.TYPE_INT_RGB;
            } else if ("rgba".equalsIgnoreCase(color)) {
                imageType = BufferedImage.TYPE_INT_ARGB;
            } else {
                System.err.println("Error: the number of bits per pixel must be 1,8 or 24.");
            }

            PDFImageWriter pdfImageWriter = new PDFImageWriter();
            boolean imageWriter = pdfImageWriter.writeImage(document,imageFormat,password,startPage,endPage,outputPrefix + fileName,imageType,resolution);
            if (!imageWriter) {
                throw new Exception("No writer found for format '" + imageFormat + "'");
            }
            document.close();

        } else {
            System.err.println(oldPath +" File Can't be found");
        }

    } catch (Exception e) {
        e.printStackTrace();
    }
}

}

要么

尝试以下解决方案将pdf文件转换为图像格式.

How to Convert PDF to image with resolution in java Using PDF Renderer

猜你在找的Java相关文章