PDFBox在创建文档时添加背景

时间:2016-03-07 08:49:48

标签: java pdf pdfbox

因此,我不仅要在创建文本时将文本添加到PDF文件中,还要同时添加背景图像。我想知道这是否可能,因为我还没有找到任何例子,唯一与此类似的问题(This one)没有给出提出问题的人的任何反馈,而且它不是&# 39; t标记为已解决。

我现在正在使用这个非常简单的例子:

       PDDocument doc = null;
       PDPage page = null;

       try{
           doc = new PDDocument();
           page = new PDPage();

           doc.addPage(page);
           PDFont font = PDType1Font.HELVETICA_BOLD;

           PDPageContentStream content = new PDPageContentStream(doc, page);
           content.beginText();
           content.setFont( font, 12 );
           content.moveTextPositionByAmount( 100, 700 );
           content.drawString("Hello World");

           content.endText();
           content.close();
           doc.save("printme.pdf");
           doc.close();
       } catch (Exception e){
           System.out.println(e);
       }

感谢您的时间。

2 个答案:

答案 0 :(得分:1)

try {
        PDDocument document = new PDDocument();
        PDPage page = new PDPage(PDPage.PAGE_SIZE_A4);
        document.addPage(page);
        PDFont font = PDType1Font.HELVETICA_BOLD;
        PDPageContentStream contentStream = new PDPageContentStream(document, page, true, true);
        addImageToPage(document, 0, 0, 4f, "D:/test.jpg", contentStream);
        contentStream.beginText();
        contentStream.setFont(font, 12);
        contentStream.moveTextPositionByAmount(100, 700);
        contentStream.drawString("Hello World");
        contentStream.endText();
        contentStream.close();
        document.save("D:/mydoc.pdf");
    } catch (Exception e) {
        System.out.println(e);
    }

添加图片的方法:

public static void addImageToPage(PDDocument document, int x, int y, float scale, String imageFilePath, PDPageContentStream contentStream)
        throws IOException {
    BufferedImage tmp_image = ImageIO.read(new File(imageFilePath));
    BufferedImage image = new BufferedImage(tmp_image.getWidth(), tmp_image.getHeight(),
            BufferedImage.TYPE_4BYTE_ABGR);
    image.createGraphics().drawRenderedImage(tmp_image, null);
    PDXObjectImage ximage = new PDPixelMap(document, image);
    contentStream.drawXObject(ximage, x, y, ximage.getWidth() * scale, ximage.getHeight() * scale);
}

答案 1 :(得分:1)

相关问题