我正在使用PDFBox将图像写入pdf。图像只是一个纯红色的矩形。
图像是:
我的代码是:

PDDocument doc = new PDDocument();
PDRectangle pageSize = new PDRectangle(CARD_WIDTH, CARD_HEIGHT);
PDPage page1 = new PDPage(pageSize);
doc.addPage(page1);

File imageFile = getRedImageFile();
PDXObjectImage pdImage = new PDPixelMap(doc, ImageIO.read(imageFile));

// write front image
PDPageContentStream contentStream = null;
try {
    contentStream = new PDPageContentStream(doc, page1);
    pdImage = parseImage(backImage, doc);
    contentStream.drawXObject(pdImage, 0, 0, CARD_WIDTH / 2, CARD_HEIGHT / 2);
} finally {
    if (contentStream != null) {
        contentStream.close();
    }
}

最终的图像是:
不清楚,所以我放大了它并上传了另一个:
为什么那里有这么奇怪的像素?

最佳答案

这是由于contentstream错误造成的。你也许可以在写完图片后关闭然后再打开流来解决这个问题,但是这会导致更多的错误(比如覆盖所有字体)。
我使用的解决方法是在每页的右边用一个50000像素的占位符图像开始。因为这张照片被破坏了,而不是其他的,一切都很好。

09-29 20:30