PRTokeniser : Introduction « PDF « Java Tutorial






import java.io.FileOutputStream;

import com.lowagie.text.Document;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.PRIndirectReference;
import com.lowagie.text.pdf.PRStream;
import com.lowagie.text.pdf.PRTokeniser;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfDictionary;
import com.lowagie.text.pdf.PdfName;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfWriter;

public class MainClass {

  public static void main(String[] args) throws Exception {
    Document document = new Document(PageSize.A6);
    PdfWriter.getInstance(document, new FileOutputStream("2.pdf"));
    document.open();
    document.add(new Paragraph("Hello World"));
    document.add(new Paragraph("Hello People"));
    document.close();

    PdfReader reader = new PdfReader("2.pdf");
    PdfDictionary page = reader.getPageN(1);
    PRIndirectReference objectReference = (PRIndirectReference) page.get(PdfName.CONTENTS);
    PRStream stream = (PRStream) PdfReader.getPdfObject(objectReference);
    byte[] streamBytes = PdfReader.getStreamBytes(stream);
    String contentStream = new String(streamBytes);
    System.out.println(contentStream);
    PRTokeniser tokenizer = new PRTokeniser(streamBytes);
    while (tokenizer.nextToken()) {
      if (tokenizer.getTokenType() == PRTokeniser.TK_STRING) {
        System.out.println(tokenizer.getStringValue());
      }
    }
    StringBuffer buf = new StringBuffer();
    int pos = contentStream.indexOf("Hello World") + 11;
    buf.append(contentStream.substring(0, pos));
    buf.append("Hello");
    buf.append(contentStream.substring(pos));
    String hackedContentStream = buf.toString();
    document = new Document(PageSize.A6);
    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(
        "HelloWorldStreamHacked.pdf"));
    document.open();
    PdfContentByte cb = writer.getDirectContent();
    cb.setLiteral(hackedContentStream);
    document.close();
  }

}








29.1.Introduction
29.1.1.Create your first Pdf document with Java
29.1.2.Create Empty page
29.1.3.Update a Pdf document
29.1.4.Read Pdf document to string
29.1.5.PRTokeniser
29.1.6.PdfDictionary
29.1.7.inspects a PDF file
29.1.8.Tagged PDF