使用PDFBox生成的PDF在通过Safari打印/保存时会放大

时间:2015-07-01 18:01:50

标签: pdf safari pdfbox

我使用PDFBox生成了一个pdf,然后将其发送到前端。当我在Chrome / Firefox中打印/保存此pdf时,它看起来不错。但是,当我尝试使用Safari时,pdf会被放大。

不确定这是否是浏览器问题,或者是否与Safari无法正确阅读pdf有关。有什么想法吗?

This是从Chrome生成的pdf,this是来自Safari的(我已经完善了一些细节)。

这是我的代码:

PDXObjectImage blankImg = (PDXObjectImage) object;
if(blankImg.getHeight() > 460){         
BufferedImage img = ImageIO.read(new ByteArrayInputStream(shippingLabel));

BufferedImage resizedImage = Scalr.resize(img, Scalr.Method.BALANCED, Scalr.Mode.FIT_EXACT, img.getWidth(), img.getHeight());

// Convert images to jpg format
BufferedImage jpegImage = new BufferedImage(resizedImage.getWidth(),resizedImage.getHeight(), BufferedImage.TYPE_INT_RGB);
jpegImage.createGraphics().drawImage(resizedImage, 0, 0, Color.WHITE, null);
ByteArrayOutputStream baos = new ByteArrayOutputStream();                       
ImageIO.write(jpegImage, "jpg", baos);                      

// Replace empty image in template with the image generated from shipping label byte array
PDXObjectImage carrierLabel = new PDJpeg(doc, new ByteArrayInputStream(baos.toByteArray()));
blankImg.getCOSStream().replaceWithStream(carrierLabel.getCOSStream());
break;
}

PDStream updatedStream = new PDStream(doc);
OutputStream out = updatedStream.createOutputStream();
ContentStreamWriter tokenWriter = new ContentStreamWriter(out);
tokenWriter.writeTokens(tokens);
page.setContents(updatedStream);

// Convert PDDoc to byte[]
ByteArrayOutputStream outUpdated = new ByteArrayOutputStream();
doc.save(outUpdated);
return outUpdated.toByteArray();

这就是我正在做的事情。我有一张带有空白图像的pdf。我读取了这个图像,并将其替换为另一个可用作字节数组的现有图像,最后将更新后的pdf作为字节数组返回,作为后端运行的Spring启动服务器的ResponseEntity。

感谢。

0 个答案:

没有答案