MainClass.java Source code

Java tutorial

Introduction

Here is the source code for MainClass.java

Source

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

}