基于PDFBox组件的JPEG转换为PDF输出的尝试

     应一位好友的要求,专门做了一个JPEG转换为PDF的例子。

 

     使用了开源组件PDFBox。

 

     例子很简单。所以,就不多说了。直接上代码。

     关键类org.wg.pdf.test.PdfParser2:

package org.wg.pdf.test;

import java.awt.image.BufferedImage;
import java.awt.print.PageFormat;
import java.io.File;

import javax.imageio.ImageIO;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.edit.PDPageContentStream;
import org.apache.pdfbox.pdmodel.graphics.xobject.PDJpeg;

public class PdfParser2 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String imgPath = "F:\\images\\法国梧桐\\南京的秋天.jpg";
		String pdfPath = "E:\\WernGin\\学习\\pdfbox.pdf";
		PDDocument document = null;
		PDPageContentStream contentStream =  null;
		try{
			// 写PDF文件.
			BufferedImage img = ImageIO.read(new File(imgPath));
//			FileOutputStream fos = new FileOutputStream(pdfFile);
			// 创建PDF文档
			document = new PDDocument();
			// 创建一页
			PDPage blankPage = new PDPage();
			// 添加分页到文档中
			document.addPage(blankPage);
			// 创建图片
			PDJpeg jpeg = new PDJpeg(document,img);
			// 获取页面格式。这里只取第0个
			PageFormat pf = document.getPageFormat(0);
			double pageWidth = pf.getWidth();
			double pageHeight = pf.getHeight();
			// 创建页面内容输出流
			contentStream = new PDPageContentStream(document, blankPage);
//			contentStream.drawImage(jpeg, 0, 0);
			// 通过内容输出流,画图片对象到当前分页中。不能用drawImage,因为drawImage会直接按原图片的大小输出的。
			contentStream.drawXObject(jpeg, 0, 0,(float)pageWidth,(float)pageHeight);
			// 关闭页面输出流
			contentStream.close();
			// 保存PDF文档
			document.save(pdfPath);
			//关闭文档
			document.close();
		}catch(Exception e){
			e.getStackTrace();
		}
	}
}

    

    PS:请勿喷代码风格!!!

你可能感兴趣的:(pdf,jpeg,pdfbox)