应一位好友的要求,专门做了一个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:请勿喷代码风格!!!