Mega Code Archive

 
Categories / Java Tutorial / PDF
 

PRTokeniser

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();   } }