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

これは contentstream のバグによるものです。画像を書き込んだ後にストリームを閉じてから再度開くことでおそらく回避できますが、それによりさらにバグが発生する可能性があります (すべてのフォントを上書きするなど)。

私が使用した回避策は、ページの右側に 50000 ピクセルのプレースホルダー イメージを使用してすべてのページを開始することでした。他の画像ではなくこの画像が破損したため、すべて問題ありませんでした。

于 2014-01-23T17:48:14.890 に答える