我想将尺寸(A4)设置为现有文档。
我正在使用pdfbox进行水印。我使用以下link添加水印。在这里,我正在使用另一个文件,其中有水印文本。后者我们只是将此图层添加为原始文件的叠加层。
当具有水印文本的文件具有与要添加水印的原始文档不同的大小时,出现问题。在这种情况下,水印在位置方面没有得到适当的补充。
版本:我使用的是pdfbox 1.8。我试过2.0,但我对这个版本感觉更舒服。
这是代码
PDDocument originalPdfFile = PDDocument.load(filename);
PDRectangle pdRect=new PDRectangle(595, 842);//Here I am setting height and width in terms of points
List PageList = originalPdfFile.getDocumentCatalog().getAllPages();
int noOfPages=PageList.size();
System.out.println("No of pages in original document="+noOfPages);
PDPage page=new PDPage();
//PDPage page=new PDPage(PDPage.PAGE_SIZE_A4);
//Here also I tried to add page size
for (int i = 0; i < PageList.size(); i++) {
page=(PDPage)PageList.get(i);
System.out.println("Original Document size in page before cropping: "+(i+1)+", Page Resolution: "+page.getMediaBox());
page.setMediaBox(pdRect);
System.out.println("Original Document size in page after cropping: "+(i+1)+", Page Resolution: "+page.getMediaBox());
//System.out.println("Original Document size in page: "+i+", Height: "+page.getMediaBox().getHeight()+",Width: "+page.getMediaBox().getWidth());
PDRectangle rec=page.getMediaBox();
generateWatermarkText(organisationName,rec);
}
HashMap<Integer, String> overlayGuide = new HashMap<Integer, String>();
for(int i=0; i<originalPdfFile.getNumberOfPages(); i++)
{
overlayGuide.put(i+1, "C:/drm/final/final.pdf");
//watermarktext.pdf is the document which is a one page PDF with your watermark image in it.
}
Overlay overlay = new Overlay();
overlay.setInputPDF(originalPdfFile);
overlay.setOutputFile(filename);
overlay.setOverlayPosition(Overlay.Position.FOREGROUND);
overlay.overlay(overlayGuide,false);
//pdf will have the original PDF with watermarks.
上面的代码成功添加了水印,但我无法缩小页面。 这条线 PDRectangle pdRect = new PDRectangle(595,842); 裁剪页面,但它会削减页面的内容,这是我不想要的。我想要包含,但应该适合该页面,页面应该是指定的大小(在我的情况下像A4一样)。