0

JPanelなどのJava GUIコンポーネントをPDFBoxを使用してpdfに埋め込む最良の方法は何ですか? 現在、このコードを使用しています:

    PDDocument doc = null;
    PDPage page = null;
    PDXObjectImage ximage = null;      
    try {
        doc = new PDDocument();
        page = new PDPage(PDPage.PAGE_SIZE_A4);
        doc.addPage(page);
        PDPageContentStream content = new PDPageContentStream(doc, page);
        BufferedImage image = new BufferedImage((int)PDPage.PAGE_SIZE_A4.getWidth()*2,(int)PDPage.PAGE_SIZE_A4.getHeight()*2, BufferedImage.TYPE_4BYTE_ABGR); 

        Graphics2D g = image.createGraphics();
        g.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION,RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
        g.setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY);
        g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
        g.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);
        g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
        panel.setBounds(0, 0,(int)PDPage.PAGE_SIZE_A4.getWidth()*2,(int)PDPage.PAGE_SIZE_A4.getHeight()*2);
        panel.doLayout();
        panel.validate();
        panel.paint(g);
        g.dispose();

        ximage = new PDPixelMap(doc, image);
        content.drawXObject(ximage, 0 , 0 ,(int)PDPage.PAGE_SIZE_A4.getWidth(),(int)PDPage.PAGE_SIZE_A4.getHeight() );
        content.close();
        if (path==null || path.equals(""))
            doc.print();
        else
            doc.save(path);
        doc.close();

    } catch(Exception ie) {
        ie.printStackTrace();
    }

しかし、私がそれで得た2つの問題は、1.何らかの理由で空白のPDFが表示されることがあることと、2.それが機能するときにPDFがピクセル化されているように見えることです。

より良い方法はありますか?

PS: プロジェクトで iText を使用することは許可されていません

4

1 に答える 1