Dear Team,

I need your help regarding how to calculate actual size of PDF page of specific 
pdf files.

We have built a PDF stamping feature. But this feature is getting affected 
negatively because of wrong page size calculated by page PDFBox library (Or pdf 
document itself may have some issues).
I am using PDFBox library version: 2.0.26

We perform following actions:

  *
Calculate page height and width.
  *
Based on page size, we create a sample pdf page of that size and print the html 
stamp on it. Location of the stamp is based on configured co-ordinates.
  *
Overlay this newly generated pdf page with stamp based on original page size 
and same the file.

Please find attached files which are created during these processes.

Following is the code base:


try (PDDocument pdDocument = PDDocument.load(downloadedPdfFile, 
MemoryUsageSetting.setupTempFileOnly());
       Overlay overlay = new Overlay();) {
    // Get the pages and create a map with page number and the image to
    // be water marked.
    Map<Integer, String> overlayProps = new HashMap<Integer, String>();
    if (pageNo == -1) {
       for (int i = 0; i < pdDocument.getNumberOfPages(); i++) {
          burnStampOnPage(position, htmlStamp, sizeByStampFile, pdDocument, 
overlayProps, i);
          PDPage page = pdDocument.getPage(i);
          PDRectangle pageSize = page.getMediaBox();
          int rotation = page.getRotation();
          boolean rotate = rotation == 90 || rotation == 270;
          float pageWidth = rotate ? pageSize.getUpperRightY() : 
pageSize.getUpperRightX();
          float pageHeight = rotate ? pageSize.getUpperRightX() : 
pageSize.getUpperRightY();

          //Convert the width and height to inches
          pageWidth = pageWidth/72;    // 14.114173
          pageHeight = pageHeight/72; // 9.980314

          stampFilePath = generateStamp(htmlStamp, pageWidth, pageHeight, 
rotation, position); // Code to generate sample pdf page with stamp printed on 
it at desired position
          overlayProps.put(pageNo + 1, stampFilePath);

          // Using the Overlay object add the map of properties to the PDF
         overlay.setInputPDF(pdDocument);
         overlay.setOverlayPosition(Overlay.Position.FOREGROUND);
         overlay.overlay(overlayProps);
        // Save the PDF to a new location
        File stampedPdfFile = new 
File(FileHandleUtils.getTempDir(tempStampFolderName), 
downloadedPdfFile.getName());
        pdDocument.save(stampedPdfFile);
       }
    }

Ideally, in the final file, stamp should appear at the right age as you can see 
in "Generated_pdf_page_with_custom_stamp.pdf" but the final file shows its bit 
shifted to left from the right age.
I think the calculated size (marked in yellow above) is wrong. If I manually 
set the width from 14.114173 to 16.54 inches and height from 9.980314 to 11.69 
inches, then it appears as expected.
Is it possible for you to investigate this?

Kindly let us know if you need more information.


Kind regards,



Aniket Kulkarni | Java Developer

Assai Software Services B.V.



[cid:ec879ade-db18-4ba2-b18b-1cbef5346ca4]<https://www.assai-software.com/https:/www.assai-software.com/>



Phone: +31 (0) 345 516 663

Web: www.assai-software.com<http://www.assai-software.com/> | E-mail: 
a.kulka...@assai.nl<mailto:a.kulka...@assai.nl>



Address: Parallelweg Oost 13a, 4103 NC  Culemborg, the Netherlands



[cid:01487fac-7c5c-4b39-909c-a6ab6582970e]<https://www.linkedin.com/company/assai-software-services-b.v./>
 [cid:59b93a0d-d9e5-4354-9e85-06a8eea04112] 
<https://www.youtube.com/channel/UCipQXkL4bbqKYf5uhyR4OGA>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@pdfbox.apache.org
For additional commands, e-mail: users-h...@pdfbox.apache.org

Reply via email to