Developer Tools
|
Office Productivity Applications
|
Platform-Agnostic APIs
|
||||||||||||||||||||||||||







Home | Online Demos | Downloads | Buy Now | Support | About Us | News | Working Together | Contact Us
Having everything in one place is a rare virtue. Page overlays seem to bring that luxury to PDF documents.
PDF page overlays are also called page stitching, as pages can be placed side by side, one over another, or set against specified offsets. In PDFOne Java, page stitching is performed by method stitch(int stitchToPageNo, int stitchFromPageNo, double offsetX, double offsetY) method in class PDFDocument.
stitch() overlays content from a page in a document over another page in the same document. The offsets specify x-y coordinates of the position on the original page where the top-left corner of the overlay page is placed. In this article, we will use this method to provide a solution for the given scenario (mentioned along with the title).
To start with, we have a document LetterHead.pdf (Screenshot 1) containing a template and another document Letters.pdf (Screenshot 2) containing sample letter communications. Pages from the second document will be used as overlays on the template from the first document.
Using overlays, we should be able to obtain a document as shown below.
In our code, we first load the second document and append the letterhead page from the first document. The resulting document is saved as MergedForStitching.pdf. This is an intermediate file, which will then be used by stitch() to perform the page overlay operation.
try {
// Load document containing letter content
PdfDocument doc1 = new PdfDocument();
doc1.load("Letters.pdf");
// Copy letterhead page from another document
doc1.appendPagesFrom("LetterHead.pdf", "1");
// Save merged document to file
doc1.save("MergedForStitching.pdf");
doc1.close();
} catch (IOException | PdfException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Now, the MergedForStitching.pdf document has been created with both the overlay pages as well as the template.
Going further, we load MergedForStitching.pdf and specify that output of the overlay operation should be saved as StitchDocument.pdf.
PdfDocument doc2 = new PdfDocument();
try {
// Load merged document
doc2.load("MergedForStitching.pdf");
Rest of the implementation is as follows: Process the overlay pages in a loop. Inside each iteration, clone the template page and append it to the document. Now, call stitch() to overlay content from the current overlay page on newly appended cloned template page. After completing loop, delete the original overlay pages and the template page. This will give you the final document with just pages from the overlay operation, as shown in Screenshot 3.
// Obtain number of the letterhead page
int letterHeadPageNumber = doc2.getPageCount();
// Obtain number of the last page with letter content
int lastContentPageNumber = letterHeadPageNumber - 1;
PdfPage tempPage;
// Loop through the overlay pages
for (int i = 1; i <= lastContentPageNumber; i++) {
// Clone and append a copy of letterhead page
tempPage = (PdfPage) doc2.getPage(letterHeadPageNumber).clone();
doc2.add(tempPage);
// Copy content of letterhead page over cloned page
doc2.stitch(
letterHeadPageNumber + i, // to
i, // from
0, // horizontal offset
0); // vertical offset
}
// Delete content and letterhead pages
doc2.deletePages("1-" + letterHeadPageNumber);
// Save document to file
doc2.save("StitchDocument.pdf");
doc2.close();
} catch (IOException | PdfException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Downloads:
---o0O0o---
| Our .NET Developer Tools | |
|---|---|
Gnostice Document Studio .NETMulti-format document-processing component suite for .NET developers. |
PDFOne .NETA .NET PDF component suite to create, edit, view, print, reorganize, encrypt, annotate, and bookmark PDF documents in .NET applications. |
| Our Delphi/C++Builder developer tools | |
|---|---|
Gnostice Document Studio DelphiMulti-format document-processing component suite for Delphi/C++Builder developers, covering both VCL and FireMonkey platforms. |
eDocEngine VCLA Delphi/C++Builder component suite for creating documents in over 20 formats and also export reports from popular Delphi reporting tools. |
PDFtoolkit VCLA Delphi/C++Builder component suite to edit, enhance, view, print, merge, split, encrypt, annotate, and bookmark PDF documents. |
|
| Our Java developer tools | |
|---|---|
Gnostice Document Studio JavaMulti-format document-processing component suite for Java developers. |
PDFOne (for Java)A Java PDF component suite to create, edit, view, print, reorganize, encrypt, annotate, bookmark PDF documents in Java applications. |
| Our Platform-Agnostic Cloud and On-Premises APIs | |
|---|---|
StarDocsCloud-hosted and On-Premises REST-based document-processing and document-viewing APIs |
| Privacy | Legal | Feedback | Newsletter | Blog | Resellers | © 2002-2026 Gnostice Information Technologies Private Limited. All rights reserved. |