List of usage examples for com.lowagie.text.pdf PdfStamper PdfStamper
public PdfStamper(PdfReader reader, OutputStream os) throws DocumentException, IOException
From source file:questions.metadata.ReplaceXMP.java
public static void alterXmp1() { try {//from ww w . j av a 2 s. c o m PdfReader reader = new PdfReader(ORIGINAL); PdfDictionary catalog = reader.getCatalog(); PdfObject obj = catalog.get(PdfName.METADATA); PRStream stream = (PRStream) PdfReader.getPdfObject(obj); String metadata = new String(PdfReader.getStreamBytes(stream)); metadata = metadata.replaceAll("Hello World", "Hello Universe"); stream.setData(metadata.getBytes(), false); PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(RESULT1)); stamper.close(); } catch (IOException e) { e.printStackTrace(); } catch (DocumentException e) { e.printStackTrace(); } }
From source file:questions.metadata.ReplaceXMP.java
public static void alterXmp2() { try {/* w w w. j a v a 2s. c o m*/ PdfReader reader = new PdfReader(ORIGINAL); String metadata = new String(reader.getMetadata()); metadata = metadata.replaceAll("Hello World", "Hello Universe"); PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(RESULT2)); stamper.setXmpMetadata(metadata.getBytes()); stamper.close(); } catch (IOException e) { e.printStackTrace(); } catch (DocumentException e) { e.printStackTrace(); } }
From source file:questions.metadata.UpdateModDate.java
public static void main(String[] args) { Document document = new Document(); try {//w w w . j ava2s . c o m PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(ORIGINAL)); document.addTitle("Hello World example"); document.addSubject("This example shows how to add metadata"); document.addKeywords("Metadata, iText, XMP"); document.addCreator("My program using iText"); document.addAuthor("Bruno Lowagie"); writer.createXmpMetadata(); document.open(); document.add(new Paragraph("Hello World")); } catch (DocumentException de) { System.err.println(de.getMessage()); } catch (IOException ioe) { System.err.println(ioe.getMessage()); } document.close(); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } PdfReader reader; try { reader = new PdfReader(ORIGINAL); PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(MODIFIED)); stamper.close(); } catch (IOException e) { e.printStackTrace(); } catch (DocumentException e) { e.printStackTrace(); } }
From source file:questions.ocg.AddOptionalContentToExistingPdf.java
public static void main(String[] args) throws IOException, DocumentException { // creating an empty document Document document = new Document(); PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(RESULT01)); writer.setPdfVersion(PdfWriter.VERSION_1_5); document.open();/*from ww w . j av a 2s.c om*/ writer.setPageEmpty(false); document.close(); PdfReader reader = new PdfReader(RESULT01); PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(RESULT02)); PdfContentByte cb = stamper.getOverContent(1); writer = stamper.getWriter(); PdfLayer nested = new PdfLayer("Nested Layers", writer); PdfLayer nested_1 = new PdfLayer("Nested Layer 1", writer); PdfLayer nested_2 = new PdfLayer("Nested Layer 2", writer); PdfLayer layer21 = new PdfLayer("Layer 2", writer); PdfLayer layer22 = new PdfLayer("Layer 2", writer); nested_2.addChild(layer21); nested_2.addChild(layer22); nested.addChild(nested_1); nested.addChild(nested_2); cb.beginLayer(nested); ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, new Phrase("nested layers"), 50, 775, 0); cb.endLayer(); cb.beginLayer(nested_1); ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, new Phrase("nested layer 1"), 100, 800, 0); cb.endLayer(); cb.beginLayer(nested_2); ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, new Phrase("nested layer 2"), 100, 750, 0); cb.endLayer(); cb.beginLayer(layer21); ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, new Phrase("layer 2.1 in the group"), 150, 775, 0); cb.endLayer(); cb.beginLayer(layer22); ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, new Phrase("layer 2.2 in the group"), 150, 725, 0); cb.endLayer(); PdfLayer group = PdfLayer.createTitle("Grouped layers", writer); PdfLayer layer1 = new PdfLayer("Group: layer 1", writer); PdfLayer layer2 = new PdfLayer("Group: layer 2", writer); group.addChild(layer1); group.addChild(layer2); cb.beginLayer(layer1); ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, new Phrase("layer 1 in the group"), 50, 700, 0); cb.endLayer(); cb.beginLayer(layer2); ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, new Phrase("layer 2 in the group"), 50, 675, 0); cb.endLayer(); PdfLayer radiogroup = PdfLayer.createTitle("Radio Group", writer); PdfLayer radio1 = new PdfLayer("Radiogroup: layer 1", writer); radio1.setOn(true); PdfLayer radio2 = new PdfLayer("Radiogroup: layer 2", writer); radio2.setOn(false); PdfLayer radio3 = new PdfLayer("Radiogroup: layer 3", writer); radio3.setOn(false); radiogroup.addChild(radio1); radiogroup.addChild(radio2); radiogroup.addChild(radio3); ArrayList<PdfLayer> options = new ArrayList<PdfLayer>(); options.add(radio1); options.add(radio2); options.add(radio3); writer.addOCGRadioGroup(options); cb.beginLayer(radio1); ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, new Phrase("option 1"), 50, 600, 0); cb.endLayer(); cb.beginLayer(radio2); ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, new Phrase("option 2"), 50, 575, 0); cb.endLayer(); cb.beginLayer(radio3); ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, new Phrase("option 3"), 50, 550, 0); cb.endLayer(); PdfLayer not_printed = new PdfLayer("not printed", writer); not_printed.setOnPanel(false); not_printed.setPrint("Print", false); cb.beginLayer(not_printed); ColumnText.showTextAligned(cb, Element.ALIGN_CENTER, new Phrase("PRINT THIS PAGE"), 300, 700, 90); cb.endLayer(); PdfLayer zoom = new PdfLayer("Zoom 0.75-1.25", writer); zoom.setOnPanel(false); zoom.setZoom(0.75f, 1.25f); cb.beginLayer(zoom); ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, new Phrase("Only visible if the zoomfactor is between 75 and 125%"), 30, 530, 90); cb.endLayer(); stamper.close(); reader = new PdfReader(RESULT02); stamper = new PdfStamper(reader, new FileOutputStream(RESULT03)); Map ocg = stamper.getPdfLayers(); for (Iterator i = ocg.keySet().iterator(); i.hasNext();) { System.out.println(i.next()); } PdfLayer layer = (PdfLayer) ocg.get("Layer 2"); layer.setOn(false); cb = stamper.getOverContent(1); cb.beginLayer(layer); cb.moveTo(0, 0); cb.lineTo(500, 500); cb.stroke(); cb.endLayer(); PdfLayer parent = (PdfLayer) ocg.get("Layer 2(2)"); PdfLayer newLayer = new PdfLayer("Child layer", stamper.getWriter()); newLayer.setOn(false); parent.addChild(newLayer); cb.beginLayer(newLayer); cb.moveTo(0, 500); cb.lineTo(500, 0); cb.stroke(); cb.endLayer(); stamper.close(); }
From source file:questions.ocg.AddOptionalWatermark.java
public static void main(String[] args) throws DocumentException, IOException { PdfReader reader = new PdfReader(RESOURCE); PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(RESULT)); Image image1 = Image.getInstance(IMAGE_PRINTED); Image image2 = Image.getInstance(IMAGE_NOT_PRINTED); PdfLayer watermark_printed = new PdfLayer("printed", stamper.getWriter()); watermark_printed.setOn(false);// www.ja v a 2 s . com watermark_printed.setOnPanel(false); watermark_printed.setPrint("print", true); PdfLayer watermark_not_printed = new PdfLayer("not_printed", stamper.getWriter()); watermark_not_printed.setOn(true); watermark_not_printed.setOnPanel(false); watermark_not_printed.setPrint("print", false); for (int i = 0; i < stamper.getReader().getNumberOfPages();) { PdfContentByte cb = stamper.getUnderContent(++i); Rectangle rectangle = stamper.getReader().getPageSizeWithRotation(i); cb.beginLayer(watermark_printed); float AbsoluteX = rectangle.getLeft() + (rectangle.getWidth() - image1.getPlainWidth()) / 2; float AbsoluteY = rectangle.getBottom() + (rectangle.getHeight() - image1.getPlainHeight()) / 2; image1.setAbsolutePosition(AbsoluteX, AbsoluteY); cb.addImage(image1); cb.endLayer(); cb.beginLayer(watermark_not_printed); AbsoluteX = rectangle.getLeft() + (rectangle.getWidth() - image2.getPlainWidth()) / 2; AbsoluteY = rectangle.getBottom() + (rectangle.getHeight() - image2.getPlainHeight()) / 2; image2.setAbsolutePosition(AbsoluteX, AbsoluteY); cb.addImage(image2); cb.endLayer(); } stamper.close(); }
From source file:questions.stamppages.AddCropbox.java
public static void main(String[] args) { try {//from w w w. java 2 s. c o m PdfImportedPage page; PdfDictionary pageDict; PdfReader reader = new PdfReader(RESOURCE); Document document = new Document(reader.getPageSizeWithRotation(1)); PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(RESULT2)); document.open(); PdfContentByte cb = writer.getDirectContent(); int n = reader.getNumberOfPages(); for (int i = 1; i <= n; i++) { page = writer.getImportedPage(reader, 1); cb.rectangle(0, 52, 612, 668); cb.clip(); cb.newPath(); cb.addTemplate(page, 0, 0); pageDict = reader.getPageN(i); PdfArray crop = new PdfRectangle(0, 52, 612, 720); pageDict.put(PdfName.CROPBOX, crop); } document.close(); PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(RESULT1)); stamper.close(); } catch (IOException e) { e.printStackTrace(); } catch (DocumentException e) { e.printStackTrace(); } }
From source file:questions.stamppages.BookmarksToTOC1.java
@SuppressWarnings("unchecked") public static void main(String[] args) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); try {//from w ww .j av a2 s . c o m Document document = new Document(); PdfWriter writer = PdfWriter.getInstance(document, baos); writer.setViewerPreferences(PdfWriter.PageModeUseOutlines); writer.setPageEvent(new ParagraphBookmarkEvents(false)); document.open(); BufferedReader reader = new BufferedReader(new FileReader(RESOURCE)); String line; Paragraph p; while ((line = reader.readLine()) != null) { p = new Paragraph(line); p.setAlignment(Element.ALIGN_JUSTIFIED); document.add(p); document.add(Chunk.NEWLINE); } reader.close(); document.close(); } catch (IOException e) { e.printStackTrace(); } catch (DocumentException e) { e.printStackTrace(); } try { PdfReader reader = new PdfReader(baos.toByteArray()); Rectangle rect = reader.getPageSizeWithRotation(1); PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(RESULT)); stamper.insertPage(1, rect); ColumnText column = new ColumnText(stamper.getOverContent(1)); column.setSimpleColumn(rect.getLeft(36), rect.getBottom(36), rect.getRight(36), rect.getTop(36)); column.addElement(new Paragraph("TABLE OF CONTENTS")); List<Map> list = SimpleBookmark.getBookmark(reader); Chunk link; PdfAction action; String info; int p = 1; float y = 10; for (Map<String, String> bookmark : list) { link = new Chunk(bookmark.get("Title")); info = bookmark.get("Page"); p = Integer.parseInt(info.substring(0, info.indexOf(' '))); y = Float.parseFloat(info.substring(info.lastIndexOf(' ') + 1) + "f"); action = PdfAction.gotoLocalPage(p, new PdfDestination(PdfDestination.FITH, y), stamper.getWriter()); link.setAction(action); column.addElement(new Paragraph(link)); } column.go(); stamper.close(); } catch (IOException e) { e.printStackTrace(); } catch (DocumentException e) { e.printStackTrace(); } }
From source file:questions.stamppages.BookmarksToTOC2.java
@SuppressWarnings("unchecked") public static void main(String[] args) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); try {//from ww w. jav a 2 s . c om Document document = new Document(); PdfWriter writer = PdfWriter.getInstance(document, baos); writer.setViewerPreferences(PdfWriter.PageModeUseOutlines); writer.setPageEvent(new ParagraphBookmarkEvents(true)); document.open(); BufferedReader reader = new BufferedReader(new FileReader(RESOURCE)); String line; Paragraph p; while ((line = reader.readLine()) != null) { p = new Paragraph(line); p.setAlignment(Element.ALIGN_JUSTIFIED); document.add(p); document.add(Chunk.NEWLINE); } reader.close(); document.close(); } catch (IOException e) { e.printStackTrace(); } catch (DocumentException e) { e.printStackTrace(); } try { PdfReader reader = new PdfReader(baos.toByteArray()); Rectangle rect = reader.getPageSizeWithRotation(1); PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(RESULT)); stamper.insertPage(1, rect); ColumnText column = new ColumnText(stamper.getOverContent(1)); column.setSimpleColumn(rect.getLeft(36), rect.getBottom(36), rect.getRight(36), rect.getTop(36)); column.addElement(new Paragraph("TABLE OF CONTENTS")); List<Map> list = SimpleBookmark.getBookmark(reader); Chunk link; String dest; for (Map<String, String> bookmark : list) { link = new Chunk(bookmark.get("Title")); dest = bookmark.get("Named"); link.setAction(PdfAction.gotoLocalPage(dest, false)); column.addElement(new Paragraph(link)); } column.go(); stamper.close(); } catch (IOException e) { e.printStackTrace(); } catch (DocumentException e) { e.printStackTrace(); } }
From source file:questions.stamppages.ChangeViewerPreferences.java
public static void main(String[] args) throws IOException, DocumentException { PdfReader reader = new PdfReader(RESOURCE); PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(RESULT)); stamper.setViewerPreferences(PdfWriter.PageModeUseThumbs); stamper.addViewerPreference(PdfName.NUMCOPIES, new PdfNumber(5)); stamper.close();// w w w .j a v a 2 s . com }
From source file:questions.stamppages.IncreaseMediabox.java
public static void main(String[] args) { try {//from w w w . ja v a 2 s . c o m PdfDictionary pageDict; PdfReader reader = new PdfReader(RESOURCE); int n = reader.getNumberOfPages(); for (int i = 1; i <= n; i++) { Rectangle rect = reader.getPageSize(i); pageDict = reader.getPageN(i); PdfRectangle pdfrect = new PdfRectangle(rect.getLeft(-36), rect.getBottom(-36), rect.getRight(-36), rect.getTop(-36)); pageDict.put(PdfName.MEDIABOX, pdfrect); } PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(RESULT)); stamper.close(); } catch (IOException e) { e.printStackTrace(); } catch (DocumentException e) { e.printStackTrace(); } }