3

我正在使用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();
    }
}

最终图像是:

在此处输入图像描述

不清楚,所以我放大并上传另一个:

在此处输入图像描述

为什么那里有这么奇怪的像素?

4

1 回答 1

1

这是由于内容流错误。您可能可以通过在写入图像后关闭然后再次打开流来绕过它,但这可能会导致更多错误(例如覆盖所有字体)。

我使用的解决方法是在每个页面开始时使用页面右侧 50000 像素的占位符图像。由于此图像已损坏,而不是其他图像,因此一切都很好。

于 2014-01-23T17:48:14.890 回答