如何使用pdfbox将现有的pdf文件转换为A4大小?

时间:2016-10-28 10:44:49

标签: pdf pdfbox

我想将尺寸(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一样)。

0 个答案:

没有答案