0

Graphics2D itext 機能を使用しており、g2.drawImage(x, y, null) で画像を描画しています。ImageIO.read() を使用してこの画像をロードすると、生成された PDF で画像が白黒に見えます。ただし Toolkit.getDefaultToolkit().createImage() は正常に動作します。コードは次のとおりです。

public static final String filename = "dummy.pdf";
public static void main(String[] args) {
    try {
        Document doc = new Document();
        PdfWriter writer = PdfWriter.getInstance(doc, new FileOutputStream(filename));
        writer.setPdfVersion(PdfWriter.VERSION_1_5);

        doc.open();
        PdfContentByte cb = writer.getDirectContent();
        Graphics2D g2 = cb.createGraphics(1654, 1168);
        draw(g2);


        doc.close();
        System.out.println("Done!");
    } catch(Exception e) {
        e.printStackTrace();
    }
}


private static void draw(Graphics2D g2) throws Exception {
    g2.setColor(Color.red);
    g2.fill(new Rectangle2D.Double(0, 0, 100, 100));

    BufferedImage img = ImageIO.read(new File("Speedy2BigClr.gif"));
    BufferedImage bi = toBufferedImage(img);
    Image i = makeColorTransparentAndBW(bi, Color.WHITE);

    Image iii = Toolkit.getDefaultToolkit().createImage("Speedy2BigClr.gif");

    g2.translate(0, 300);
    g2.scale(0.3, 0.3);
    g2.drawImage(img, 0, 0, null);

}
}

残念ながら、別の gif では ImageIO は正常に動作し、Toolkit は動作しません。しかし、すべての画像は画面上できれいに見えます。画像の読み込み方法が PDF の結果に影響するのはなぜですか?

ここに画像の説明を入力

PS 明確な理由から、LGPL iText (2.0.4、2.1.7、4.2.0) を使用しています。 UPD:iText-5.3.5で正常に動作しますが、使用できません:-(

4

0 に答える 0