簡體   English   中英

將 BufferedImage 添加到 PDFBox 文檔

[英]Add BufferedImage to PDFBox document

在我當前的項目中,我嘗試將BufferedImage添加到 PDFBox 文檔。 更具體地說,我使用來自JFreeChart的圖像。 我的代碼如下所示:

public void exportToPDF(JFreeChart chart, String filePath){
    PDDocument doc = null;
    PDPage page = null;
    PDXObjectImage ximage = null;

    try {
        doc = new PDDocument();
        page = new PDPage();
        doc.addPage(page);
        PDPageContentStream content = new PDPageContentStream(doc, page);
        BufferedImage image = chart.createBufferedImage(300, 300);
        ximage = new PDJpeg(doc, image);
        content.drawImage(ximage, 20, 20);
        content.close();
    } catch(IOException ie) {
    }
    doc.save(filePath);
    doc.close();
}

文檔被創建; 我可以添加文本,但我收到一條錯誤消息,指出圖像沒有足夠的信息來顯示。

任何線索我做錯了什么?

謝謝你幫我解決垃圾神。 昨晚和今天花了幾個小時對 PipedIn/OutStreams 感到困惑。 想不通。 但是,我讓它工作了。 事實證明,這並不是很困難。

public void exportToPDF(JFreeChart chart, String filePath){
    PDDocument doc = null;
    PDPage page = null;
    PDXObjectImage ximage = null;
    try {
        doc = new PDDocument();
        page = new PDPage();
        doc.addPage(page);
        PDPageContentStream content = new PDPageContentStream(doc, page);

        //create a new outStream
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        ChartUtilities.writeChartAsJPEG(out, chart, 300, 300);//write to outstream
        //create a new inputstream
        InputStream in = new ByteArrayInputStream(out.toByteArray());
        ximage = new PDJpeg(doc, in);
        content.drawImage(ximage, 5, 300);
        content.close();
    }
    catch (IOException ie){
        //handle exception
    }
    //save and close
    doc.save(filePath);
    doc.close();
}

我相信這可以做得更好,但它確實有效。

有一種簡單的方法可以使用 pdfbox 將 JFreeChart 插入 pdf:

BufferedImage bufferedImage = source.getChart().createBufferedImage(source.getWidth(),
        source.getHeight(), BufferedImage.TYPE_INT_RGB, null);
PDXObjectImage ximage = new PDJpeg(doc, bufferedImage);

沒有任何 stream;)

有兩點很突出:

  • 不要吞下異常。

  • 請按照此處的建議,使用ChartUtilities以合適的格式呈現圖像。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM