Java Tutorial/PDF/PDF Stamper

Материал из Java эксперт
Перейти к: навигация, поиск

Copy a selection of pages to new PDF files

   <source lang="java">

import java.io.FileOutputStream; import com.lowagie.text.pdf.PdfReader; import com.lowagie.text.pdf.PdfStamper; public class MainClass {

 public static void main(String[] args) throws Exception {
   PdfReader reader = new PdfReader("HelloWorldMultiplePages.pdf");
   PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("HelloSelectedOdd.pdf"));
   reader.selectPages("o");
   stamper.close();
   reader = new PdfReader("HelloWorldMultiplePages.pdf");
   stamper = new PdfStamper(reader, new FileOutputStream("HelloSelectedEven.pdf"));
   reader.selectPages("e");
   stamper.close();
   reader = new PdfReader("HelloWorldMultiplePages.pdf");
   stamper = new PdfStamper(reader, new FileOutputStream("HelloSelected12379.pdf"));
   reader.selectPages("1-3, 7-9, !8");
   stamper.close();
 }

}</source>





Create PdfImportedPage

   <source lang="java">

import java.io.FileOutputStream; import java.util.HashMap; import java.util.List; import com.lowagie.text.PageSize; import com.lowagie.text.Rectangle; import com.lowagie.text.pdf.PdfAnnotation; import com.lowagie.text.pdf.PdfContentByte; import com.lowagie.text.pdf.PdfImportedPage; import com.lowagie.text.pdf.PdfReader; import com.lowagie.text.pdf.PdfStamper; import com.lowagie.text.pdf.SimpleBookmark; public class MainClass {

 public static void main(String[] args) throws Exception {
   PdfReader reader = new PdfReader("test.pdf");
   PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("my.pdf"));
   stamper.insertPage(1, PageSize.A4);
   PdfContentByte cb = stamper.getOverContent(1);
   PdfImportedPage p = stamper.getImportedPage(reader, 2);
   cb.addTemplate(p, 0.4f, 0f, 0f, 0.4f, 36f, 450);
   p = stamper.getImportedPage(reader, 3);
   cb.addTemplate(p, 0.4f, 0f, 0f, 0.4f, 300f, 450);
   p = stamper.getImportedPage(reader, 4);
   cb.addTemplate(p, 0.4f, 0f, 0f, 0.4f, 36f, 100);
   stamper.addAnnotation(PdfAnnotation.createText(stamper.getWriter(), new Rectangle(300f, 350f,
       500f, 450f), "inserted page", "This page contains a copy of the next three pages.", true,
       null), 1);
   List list = SimpleBookmark.getBookmark(reader);
   HashMap<String, String> map = new HashMap<String, String>();
   map.put("Title", "title content");
   map.put("Action", "GoTo");
   map.put("Page", "1 FitH 806");
   list.add(0, map);
   stamper.setOutlines(list);
   stamper.close();
 }

}</source>





Import page

   <source lang="java">

import java.io.FileOutputStream; import com.lowagie.text.Document; import com.lowagie.text.pdf.PdfCopy; import com.lowagie.text.pdf.PdfReader; public class MainClass {

 public static void main(String[] args) throws Exception {
   PdfReader reader = new PdfReader("HelloWorldMultiplePages.pdf");
   reader.selectPages("o");
   int pages = reader.getNumberOfPages();
   Document document = new Document();
   PdfCopy copy = new PdfCopy(document, new FileOutputStream("HelloWorldSelectPagesOdd.pdf"));
   document.open();
   for (int i = 0; i < pages;) {
     ++i;
     copy.addPage(copy.getImportedPage(reader, i));
   }
   document.close();
 }

}</source>





Stamping PDF file

   <source lang="java">

import java.io.ByteArrayOutputStream; import java.io.FileOutputStream; import com.lowagie.text.Document; import com.lowagie.text.PageSize; import com.lowagie.text.Rectangle; import com.lowagie.text.pdf.AcroFields; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.GrayColor; import com.lowagie.text.pdf.PdfContentByte; import com.lowagie.text.pdf.PdfCopyFields; import com.lowagie.text.pdf.PdfReader; import com.lowagie.text.pdf.PdfStamper; import com.lowagie.text.pdf.PdfWriter; import com.lowagie.text.pdf.TextField; public class MainClass{

 public static void main(String[] args) throws Exception {
   createPdf("1.pdf", "field1", "value");
   createPdf("2.pdf", "field2", "value");
   ByteArrayOutputStream baos = new ByteArrayOutputStream();
   PdfCopyFields copy = new PdfCopyFields(baos);
   copy.addDocument(new PdfReader("1.pdf"));
   copy.addDocument(new PdfReader("2.pdf"));
   copy.close();
   PdfReader reader = new PdfReader(baos.toByteArray());
   PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(
       "HelloWorldCopyStamp.pdf"));
   AcroFields form = stamper.getAcroFields();
   form.setField("field1", "World");
   form.setField("field2", "People");
   stamper.setFormFlattening(true);
   stamper.close();
 }
 private static void createPdf(String filename, String field, String value)
     throws Exception {
   Document document = new Document(PageSize.A4);
   PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(
       filename));
   document.open();
   BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI,
       BaseFont.NOT_EMBEDDED);
   PdfContentByte cb = writer.getDirectContent();
   cb.beginText();
   cb.setFontAndSize(bf, 12);
   cb.setLeading(16);
   cb.moveText(36f, 788f);
   cb.showText("Hi");
   cb.newlineShowText("this is a atest");
   cb.endText();
   TextField tf = new TextField(writer, new Rectangle(64, 785, 340, 800),
       field);
   tf.setFontSize(12);
   tf.setFont(bf);
   tf.setText(value);
   tf.setTextColor(new GrayColor(0.5f));
   writer.addAnnotation(tf.getTextField());
   document.close();
 }

}</source>