使用 PDFBox 将 byte[] 打印成 PDF
Print byte[] to PDF using PDFBox
我有一个关于使用 PDFBox 将图像写入 PDF 的问题。
我的要求很简单:我使用 Spring RestTemplate
从 Web 服务获取图像,我将其存储在 byte[]
变量中,但我需要绘制图像转换为 PDF 文档。
我知道提供了以下内容:
final byte[] image = this.restTemplate.getForObject(
this.imagesUrl + cableReference + this.format,
byte[].class
);
JPEGFactory.createFromStream()
对于 JPEG 格式,CCITTFactory.createFromFile()
对于 TIFF 图像,LosslessFactory.createFromImage()
如果从缓冲图像开始。但我不知道该用什么,因为我知道的关于这些图像的唯一信息是它们是 THUMBNAIL 格式,我不知道如何从 byte[]
转换为这些格式。
非常感谢您的帮助。
(这适用于 2.0 版,不适用于 1.8)
我不知道你所说的 THUMBNAIL 格式是什么意思,但试试看:
final byte[] image = ... // your code
ByteArrayInputStream bais = new ByteArrayInputStream(image);
BufferedImage bim = ImageIO.read(bais);
PDImageXObject pdImage = LosslessFactory.createFromImage(doc, bim);
使用
也许可以创建更高级的解决方案
PDImageXObject.createFromFileByContent()
但是这个使用的是文件而不是流,所以它会比较慢(但会产生最好的图像类型)。
要将此图片添加到您的 PDF,请使用此代码:
PDDocument doc = new PDDocument();
try
{
PDPage page = new PDPage();
doc.addPage(page);
PDPageContentStream contents = new PDPageContentStream(doc, page);
// draw the image at full size at (x=20, y=20)
contents.drawImage(pdImage, 20, 20);
// to draw the image at half size at (x=20, y=20) use
// contents.drawImage(pdImage, 20, 20, pdImage.getWidth() / 2, pdImage.getHeight() / 2);
contents.close();
doc.save(pdfPath);
}
finally
{
doc.close();
}
我有一个关于使用 PDFBox 将图像写入 PDF 的问题。
我的要求很简单:我使用 Spring RestTemplate
从 Web 服务获取图像,我将其存储在 byte[]
变量中,但我需要绘制图像转换为 PDF 文档。
我知道提供了以下内容:
final byte[] image = this.restTemplate.getForObject(
this.imagesUrl + cableReference + this.format,
byte[].class
);
JPEGFactory.createFromStream()
对于 JPEG 格式,CCITTFactory.createFromFile()
对于 TIFF 图像,LosslessFactory.createFromImage()
如果从缓冲图像开始。但我不知道该用什么,因为我知道的关于这些图像的唯一信息是它们是 THUMBNAIL 格式,我不知道如何从 byte[]
转换为这些格式。
非常感谢您的帮助。
(这适用于 2.0 版,不适用于 1.8)
我不知道你所说的 THUMBNAIL 格式是什么意思,但试试看:
final byte[] image = ... // your code
ByteArrayInputStream bais = new ByteArrayInputStream(image);
BufferedImage bim = ImageIO.read(bais);
PDImageXObject pdImage = LosslessFactory.createFromImage(doc, bim);
使用
也许可以创建更高级的解决方案PDImageXObject.createFromFileByContent()
但是这个使用的是文件而不是流,所以它会比较慢(但会产生最好的图像类型)。
要将此图片添加到您的 PDF,请使用此代码:
PDDocument doc = new PDDocument();
try
{
PDPage page = new PDPage();
doc.addPage(page);
PDPageContentStream contents = new PDPageContentStream(doc, page);
// draw the image at full size at (x=20, y=20)
contents.drawImage(pdImage, 20, 20);
// to draw the image at half size at (x=20, y=20) use
// contents.drawImage(pdImage, 20, 20, pdImage.getWidth() / 2, pdImage.getHeight() / 2);
contents.close();
doc.save(pdfPath);
}
finally
{
doc.close();
}