使用Java iText API将SWT图像导出为PDF

时间:2012-04-19 12:12:16

标签: java pdf itext

我有一个SWT图像我想使用iText API将此图像导出为pdf文件。 我尝试将此图像保存在磁盘上,然后使用图像路径导出 它到pdf,这需要很多时间来生成pdf。 我也尝试将SWT图像转换为AWT图像,然后将其导出到 pdf,这种方法需要更多时间来生成pdf。 我一直在尝试的另一种方法是将图像的原始数据转换为 使用ImageLoader对象的jpeg byteArrayOutputStream如下所示:

ImageLoader tempLoader = new ImageLoader();
tempLoader.data = new ImageData[] {
    image.getImageData()                    
};
ByteArrayOutputStream bos = new ByteArrayOutputStream();
tempLoader.save(bos, SWT.IMAGE_JPEG);

现在我使用这个ByteArrayOutputStream作为

的输入
OutputStream outStream = new FileOutputStream(selectedPathAndName);
Document document = new Document();    
document.setMargins(0,0,0,0);
document.setPageSize(new Rectangle(0,0,width,height));
PdfWriter.getInstance(document, outStream);
document.open(); 
com.itextpdf.text.Image pdfImage = com.itextpdf.text.Image.getInstance(bos.toByteArray());
document.add(pdfImage); 
document.close();

这会生成我设置的宽度和高度的pdf文件,但页面似乎是空的。 任何建议或任何其他方法都是最受欢迎的。

谢谢,

1 个答案:

答案 0 :(得分:1)

看起来你的页面大小为零,尝试在构造函数中将它们设置为 A4

Document document = new Document(PageSize.A4, 50, 50, 50, 50);