String title = "This is my wonderful title!"; // Or whatever title you want. int marginTop = 30; // Or whatever margin you want. PDDocument document = new PDDocument(); PDPage page = new PDPage() PDPageStreamContent stream = new PDPageContentStream(document, page); PDFont font = PDType1Font.HELVETICA_BOLD; // Or whatever font you want. int fontSize = 16; // Or whatever font size you want. float titleWidth = font.getStringWidth(title) / 1000 * fontSize; float titleHeight = font.getFontDescriptor().getFontBoundingBox().getHeight() / 1000 * fontSize; stream.beginText(); stream.setFont(font, fontSize); stream.moveTextPositionByAmount((page.getMediaBox().getWidth() - titleWidth) / 2, page.getMediaBox().getHeight - marginTop - titleheight); stream.drawString(title); stream.endText(); stream.close();
PDDocument doc = new PDDocument(); PDPage page = new PDPage(); doc.addPage( page ); PDPageContentStream contentStream = new PDPageContentStream(doc, page); String[][] content = {{"a","b", "1"}, {"c","d", "2"}, {"e","f", "3"}, {"g","h", "4"}, {"i","j", "5"}} ; drawTable(page, contentStream, 700, 100, content); contentStream.close(); doc.save("test.pdf" );
PDDocument doc = PDDocument.load(new File("file.pdf")); int count = doc.getNumberOfPages();
doc = new PDDocument(); PDPage page = new PDPage(); doc.addPage(page); PDPageContentStream contentStream = new PDPageContentStream(doc, page); PDRectangle mediabox = page.getMediaBox(); float margin = 72; float width = mediabox.getWidth() - 2*margin; float startX = mediabox.getLowerLeftX() + margin; float startY = mediabox.getUpperRightY() - margin; spaceIndex = text.length(); String subString = text.substring(0, spaceIndex); float size = fontSize * pdfFont.getStringWidth(subString) / 1000; System.out.printf("'%s' - %f of %f\n", subString, size, width); if (size > width) contentStream.beginText(); contentStream.setFont(pdfFont, fontSize); contentStream.newLineAtOffset(startX, startY); for (String line: lines) contentStream.showText(line); contentStream.newLineAtOffset(0, -leading); contentStream.endText(); contentStream.close(); doc.save(new File(RESULT_FOLDER, "break-long-string.pdf"));
doc = new PDDocument(); PDPage page = new PDPage(); doc.addPage(page); PDPageContentStream contentStream = new PDPageContentStream(doc, page); PDRectangle mediabox = page.findMediaBox(); float margin = 72; float width = mediabox.getWidth() - 2*margin; float startX = mediabox.getLowerLeftX() + margin; float startY = mediabox.getUpperRightY() - margin; spaceIndex = text.length(); String subString = text.substring(0, spaceIndex); float size = fontSize * pdfFont.getStringWidth(subString) / 1000; System.out.printf("'%s' - %f of %f\n", subString, size, width); if (size > width) contentStream.beginText(); contentStream.setFont(pdfFont, fontSize); contentStream.moveTextPositionByAmount(startX, startY); for (String line: lines) contentStream.drawString(line); contentStream.moveTextPositionByAmount(0, -leading); contentStream.endText(); contentStream.close(); doc.save("break-long-string.pdf");
contentStream.drawLine(margin, nexty, margin+tableWidth, nexty); nexty-= rowHeight; contentStream.drawLine(nextx, y, nextx, y-tableHeight); nextx += colWidth; contentStream.setFont( PDType1Font.HELVETICA_BOLD , 12 ); for(int j = 0 ; j < content[i].length; j++){ String text = content[i][j]; contentStream.beginText(); contentStream.moveTextPositionByAmount(textx,texty); contentStream.drawString(text); contentStream.endText(); textx += colWidth;
PDDocument doc = PDDocument.load("C:/mydoc3.pdf"); List<PDPage> pages = doc.getDocumentCatalog().getAllPages(); for(PDPage page:pages){ Map<String,PDFont> pageFonts=page.getResources().getFonts(); }
/** * This will return the total page count of the PDF document. * * @return The total number of pages in the PDF document. */ public int getNumberOfPages() { return getDocumentCatalog().getPages().getCount(); }
/** * Returns the page tree. * * @return the page tree */ public PDPageTree getPages() { return getDocumentCatalog().getPages(); }
/** * Returns the page at the given index. * * @param index zero-based index */ public PDPage get(int index) { COSDictionary dict = get(index + 1, root, 0); sanitizeType(dict); ResourceCache resourceCache = document != null ? document.getResourceCache() : null; return new PDPage(dict, resourceCache); }
PDDocument watermarkDoc = PDDocument.load("watermark.pdf"); //Assuming your empty document with watermark image in it. PDDocument realDoc = PDDocument.load("document-to-be-watermarked.pdf"); //Let's say this is your document that you want to watermark. For example sake, I am opening a new one, you would already have a reference to PDDocument if you are creating one Overlay overlay = new Overlay(); overlay.overlay(realDoc,watermarkDoc); watermarkDoc.save("document-now-watermarked.pdf");
PDDocument document = PDDocument.load(new File(filename)); PDPage doc = document.getPage(0);
/** * Removes the given page from the page tree. * * @param page The page to remove. */ public void remove(PDPage page) { remove(page.getCOSObject()); }
/** * Set an extended graphics state. * * @param state The extended graphics state. * @throws IOException If the content stream could not be written. */ public void setGraphicsStateParameters(PDExtendedGraphicsState state) throws IOException { writeOperand(resources.add(state)); writeOperator("gs"); }
import java.io.File; import java.util.HashMap; import org.apache.pdfbox.multipdf.Overlay; import org.apache.pdfbox.pdmodel.PDDocument; public class TestPDF { public static void main(String[] args) throws Exception{ PDDocument realDoc = PDDocument.load(new File("originaldocument.pdf")); //the above is the document you want to watermark //for all the pages, you can add overlay guide, indicating watermark the original pages with the watermark document. HashMap<Integer, String> overlayGuide = new HashMap<Integer, String>(); for(int i=0; i<realDoc.getNumberOfPages(); i++){ overlayGuide.put(i+1, "watermark.pdf"); //watermark.pdf is the document which is a one page PDF with your watermark image in it. //Notice here, you can skip pages from being watermarked. } Overlay overlay = new Overlay(); overlay.setInputPDF(realDoc); overlay.setOutputFile("final.pdf"); overlay.setOverlayPosition(Overlay.Position.BACKGROUND); overlay.overlay(overlayGuide); } }