Java 如何扩展PDF的页面大小以添加水印?

Java 如何扩展PDF的页面大小以添加水印?,java,pdf,itext,watermark,Java,Pdf,Itext,Watermark,我的web应用程序签署PDF文档。我想让用户下载原始PDF文档(未签名),但在PDF文档的左边距添加图像和签名者 我在另一个web应用程序中看到了这个想法,我也希望这样做。当然,我想使用itext库来完成它 我附上了两张图片,原始PDF文档(未签名)和修改后的PDF文档 首先:在对文档进行数字签名之前,更改文档非常重要。一旦数字签名,这些更改将破坏签名 我将把问题分为两部分,跳过关于实际水印的部分,因为这里已经解释过了: 这个问题不是那个问题的重复,因为额外的要求是在右边增加额外的边距 看一下

我的web应用程序签署PDF文档。我想让用户下载原始PDF文档(未签名),但在PDF文档的左边距添加图像和签名者

我在另一个web应用程序中看到了这个想法,我也希望这样做。当然,我想使用itext库来完成它

我附上了两张图片,原始PDF文档(未签名)和修改后的PDF文档


首先:在对文档进行数字签名之前,更改文档非常重要。一旦数字签名,这些更改将破坏签名

我将把问题分为两部分,跳过关于实际水印的部分,因为这里已经解释过了:

这个问题不是那个问题的重复,因为额外的要求是在右边增加额外的边距

看一下文件。这是我们将在示例中使用的源文件,结果如下:。如您所见,每一页的左边都添加了半英寸的边距

这是如何做到的:

public void manipulatePdf(String src, String dest) throws IOException, DocumentException {
    PdfReader reader = new PdfReader(src);
    int n = reader.getNumberOfPages();
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
    // properties
    PdfContentByte over;
    PdfDictionary pageDict;
    PdfArray mediabox;
    float llx, lly, ury;
    // loop over every page
    for (int i = 1; i <= n; i++) {
        pageDict = reader.getPageN(i);
        mediabox = pageDict.getAsArray(PdfName.MEDIABOX);
        llx = mediabox.getAsNumber(0).floatValue();
        lly = mediabox.getAsNumber(1).floatValue();
        ury = mediabox.getAsNumber(3).floatValue();
        mediabox.set(0, new PdfNumber(llx - 36));
        over = stamper.getOverContent(i);
        over.saveState();
        over.setColorFill(new GrayColor(0.5f));
        over.rectangle(llx - 36, lly, 36, ury - llx);
        over.fill();
        over.restoreState();
    }
    stamper.close();
    reader.close();
}
public void manufacturepdf(String src,String dest)抛出IOException,DocumentException{
PdfReader读取器=新PdfReader(src);
int n=reader.getNumberOfPages();
PdfStamper stamper=新PdfStamper(读取器,新文件输出流(dest));
//性质
PdfContentByte超过;
PdfDictionary pageDict;
PdfArray媒体盒;
浮动llx、lly、ury;
//在每一页上循环

对于(int i=1;如果我认为该文档不仅添加了水印,而且页面大小也发生了变化,那么我是对的。就好像在左侧添加了额外的空间。这是正确的吗?这里解释了水印:。答案也是法语:是的,页面大小发生了变化。我在adobe reader中看到过。第一个文档ument页面大小为215,9 x 279,4,第二个文档页面大小为210 x 297(mm)好的,这很容易实现,但我目前在Adobe HQ参加关于ISO-32000-2的ISO会议,所以你必须给我一些时间。当然,花你所需要的所有时间,我之前告诉过你大小已经改变了,这是真的,但它已经改变了,因为原始文档大小不是210 x 297。原始文档大小是210 x 297则新文档的大小没有更改。这使我认为原始文档的内容被缩放并向右翻译,在页面左侧留下一个垂直空间以包含水印。非常感谢!!我相信有了所有这些信息,我将实现我的目标。