ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java – 使用PDFBox 2.X在所有页面上特定位置的所有页面上叠加PDF图章

2019-07-01 13:50:26  阅读:211  来源: 互联网

标签:java pdf java-8 pdfbox


我正试图在每页左上角的PDF中覆盖所有页面顶部的图章(PDF).将被“盖章”的PDF具有不同的尺寸. PDF标记是一个常量大小,小于PDF的所有页面.

我似乎只能让PDFBox将标记放在PDF的中间.

我已经尝试了很多我不会在这里列出的东西.我宁愿不将PDF标记转换为位图(PDImageXObject)并将其插入到页面上.这是我正在玩的一些粗略的代码: –

public static void main(String[] args) throws Exception {
    String stampPath = "C:\\pdf2\\NuStamp.pdf";
    String stampMePath = "C:\\pdf2\\b.pdf";
    //Document to write to.
    PDDocument stampMe = PDDocument.load(new File(stampMePath));
    //Document that will be used as stamp.
    PDDocument stamp = PDDocument.load(new File(stampPath));

    //Adds some text to the PDF stamp and saves it.
    addTextToPdf(stamp, stampPath, 15, 100, 14, PDType1Font.HELVETICA_BOLD, "Application: Bla Bla Bla", "", "La la la la", "Ra ra ra", "Raba", "Dabba doo");
    addTextToPdf(stamp, stampPath, 250, 150, 14, PDType1Font.HELVETICA_BOLD, "Decision: whatever", "Date: 16/03/2018");
    //Hack!
    stampPath = stampPath + "Anno.pdf";

    HashMap<Integer, String> overlayGuide = new HashMap<>();
    for (int i = 0; i < stampMe.getNumberOfPages(); i++) {
        overlayGuide.put(i + 1, stampPath);
    }
    Overlay overlay = new Overlay();
    overlay.setInputPDF(stampMe);
    overlay.setOverlayPosition(Overlay.Position.FOREGROUND);
    overlay.overlay(overlayGuide);

    stampMe.save(new File(stampMePath + "_STAMPEDDDD.pdf"));
    overlay.close();
}

我的直觉是它的仿射转变,但我也无法做到这一点.

解决方法:

我创建了一个新的issue,它允许传递转换,这将是2.0.10或更高版本.这将通过扩展overlay类在calculateAffineTransform中完成.要将标记放在左上角,新方法将如下所示:

protected AffineTransform calculateAffineTransform(PDPage page, PDRectangle overlayMediaBox)
{
    AffineTransform at = new AffineTransform();
    PDRectangle pageMediaBox = page.getMediaBox();
    at.translate(0, pageMediaBox.getHeight() - overlayMediaBox.getHeight());
    return at;
}

要在2.0.10发布之前使用它,请自己构建2.0分支或在此处获取快照:
https://repository.apache.org/content/groups/snapshots/org/apache/pdfbox/pdfbox-app/2.0.10-SNAPSHOT/
该更改是从21.3.2018或更晚的任何版本.

标签:java,pdf,java-8,pdfbox
来源: https://codeday.me/bug/20190701/1347471.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有