在Java应用程序中将PDF转换为图片和将图片转换为PDF

这篇文章将介绍如何在Java应用程序中将PDF文件转换为图片以及将图片转换为PDF文件。

使用组件:

Free Spire.PDF for JAVA

Free Spire.PDF for JAVA是一款完全免费的PDF Java组件,开发人员可以使用它在Java应用程序中进行创建PDF、读取PDF和保存PDF等操作,并且无需安装Adobe Acrobat。

在使用以下代码前,你需要下载Free Spire.PDF for JAVA包并解压缩,然后从lib文件夹下,导入Spire.Pdf.jar包和Spire.Common.jar包到你的Java应用程序中。

PDF转图片

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

import com.spire.pdf.PdfDocument;

public class PDFToImage {

       public static void main(String[] args) throws IOException {      

        //加载PDF文件
        PdfDocument doc = new PdfDocument();
        doc.loadFromFile("ToImage.pdf");

        //保存PDF的每一页到图片
        BufferedImage image;
        for (int i = 0; i < doc.getPages().getCount(); i++) {
            image = doc.saveAsImage(i);
            File file = new File( String.format("ToImage-img-%d.png", i));
            ImageIO.write(image, "PNG", file);
        }

        doc.close();
       }
}

PDF文件:

在Java应用程序中将PDF转换为图片和将图片转换为PDF_第1张图片

生成图片:

在Java应用程序中将PDF转换为图片和将图片转换为PDF_第2张图片

图片转PDF

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.PdfImage;


public class ImageToPDF {

       public static void main(String[] args) {

        //创建PDF文档
        PdfDocument doc = new PdfDocument();

        //添加一个页面
        PdfPageBase page = doc.getPages().add();

        //加载图片
        PdfImage image = PdfImage.fromFile("ImageToPDF.png");

        //绘制图片到PDF并设置其在PDF文件中的位置和大小
        float widthFitRate = getImgWidth(new File("ImageToPDF.png"))/ page.getActualBounds(true).width;
        float heightFitRate = getImgHeight(new File("ImageToPDF.png"))/ page.getActualBounds(true).height;

        float fitRate = Math.max(widthFitRate, heightFitRate);
        float fitWidth = getImgWidth(new File("ImageToPDF.png")) / fitRate*0.8f;
        float fitHeight = getImgHeight(new File("ImageToPDF.png"))/ fitRate*0.8f;

        page.getCanvas().drawImage(image, 50, 30, fitWidth, fitHeight);

        //保存并关闭
        doc.saveToFile("ImageToPDF.pdf");
        doc.close();
       }

       /**
     * @param ImageFile
     * @return image width
     */

    public static int getImgWidth(File ImageFile) {

        InputStream is = null;
        BufferedImage src = null;

        int ret = -1;

        try {
            is = new FileInputStream(ImageFile);
            src = javax.imageio.ImageIO.read(is);
            ret = src.getWidth(null);
            is.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

        return ret;
    }


    /**
     * @param ImageFile
     * @return image height
     */

    public static int getImgHeight(File ImageFile) {

        InputStream is = null;
        BufferedImage src = null;

        int ret = -1;

        try {
            is = new FileInputStream(ImageFile);
            src = javax.imageio.ImageIO.read(is);
            ret = src.getHeight(null);
            is.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

        return ret;
    }
}

图片:

在Java应用程序中将PDF转换为图片和将图片转换为PDF_第3张图片

生成PDF文件:

在Java应用程序中将PDF转换为图片和将图片转换为PDF_第4张图片

你可能感兴趣的:(Java,PDF)