2014-03-12 68 views
6

我需要将图像(主要是JPEG)直接转换为PDF文档的PDF页面。
这可能是图像大小不同。Java:使用PDFBox库从图像创建PDF页面

每个PDF页面都应该具有图像的确切尺寸。
因此,每个页面只包含全分辨率的图像。

如何实现这一点,即将页面设置为图像/内容的尺寸?
因为我看到了不同页面大小和方向的PDF文件,但PDFBox如何实现?

+0

也许这可以给你一个想法:http://stackoverflow.com/questions/10466569/create-pdf-from-a-png-image - 或 - java面板 – Frakcool

+0

好吧,它不是PDFBox,我认为我们必须在PDFBox中的图像之前创建页面,也Gnostice PDFOne不是开源或免费 –

+0

好吧,不PDFBox,但与PDFBox,你也可以制作缓冲图像,这就是为什么我说“给你一个想法”,让我看看我是否可以做出正确的东西 – Frakcool

回答

19

我已经用下面的代码解决了这个:

PDDocument document = new PDDocument(); 
InputStream in = new FileInputStream(someImage); 
BufferedImage bimg = ImageIO.read(in); 
float width = bimg.getWidth(); 
float height = bimg.getHeight(); 
PDPage page = new PDPage(new PDRectangle(width, height)); 
document.addPage(page); 
PDXObjectImage img = new PDJpeg(document, new FileInputStream(someImage)); 
PDPageContentStream contentStream = new PDPageContentStream(document, page); 
contentStream.drawImage(img, 0, 0); 
contentStream.close(); 
in.close(); 

document.save("test.pdf"); 
document.close(); 
+1

类似的情况在PDFBox的例子:https://svn.apache.org/repos/asf/pdfbox/trunk/examples/src/main/ java/org/apache/pdfbox/examples/pdmodel/AddImageToPDF.java 它使用较新的PDFBox 2+ API – user1053510