java - PDFBox在创建文档时添加背景

标签 java pdf pdfbox

所以我不仅想在创建 pdf 时添加文本,还想同时添加背景图像。我想知道这是否可能,因为我找不到任何示例,并且与此类似的唯一问题( This one )没有给出提出问题的人的任何反馈,并且没有标记为已解决.

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

       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);
       }

感谢您的宝贵时间。

最佳答案

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);
}

关于java - PDFBox在创建文档时添加背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35839517/

相关文章:

java - 禁用 JMenuItem 后 KeyStroke 加速器不工作

eclipse - Java iText 中的 PDF 加密错误

java - 使用 PDFBox 2.0.17 对具有多个签名字段的 PDF 进行签名

java - 使用 PDFBox 读取 PDF 文件的前 N ​​个字符

java - 从 Postgres 获取的日期不正确

java - GWT:如何创建自己的异步方法?

Java - 如何从 zip 文件内的 CSV 文件获取行数

python - 自动将 PDF 转换为图像

pdf - 使用 jodconverter 和 OpenOffice 将 doc/docx 转为 pdf

java - 无法使用 pdfbox 打印任何内容