public void doIt( String file, String message) throws IOException, COSVisitorException
{
// the document
COSDocument doc = null;
OutputStream os = null;
COSWriter writer = null;
try
{
doc = new COSDocument();
// the pages dict
COSDictionary pages = new COSDictionary();
pages.setItem(COSName.TYPE, COSName.PAGES);
// the pagesarray
COSArray pagesArray = new COSArray();
// a page
COSDictionary page = new COSDictionary();
page.setItem(COSName.TYPE, COSName.PAGE);
page.setItem(COSName.PARENT, doc.createObject(pages));
COSArray mediaBox = new COSArray();
mediaBox.add( new COSInteger(0));
mediaBox.add( new COSInteger(0));
mediaBox.add( new COSInteger(612));
mediaBox.add( new COSInteger(792));
page.setItem(COSName.getPDFName("MediaBox"), mediaBox);
byte[] bytes = ("BT /F1 24 Tf 100 100 Td (" + message + ") Tj ET").getBytes();
COSDictionary streamDict = new COSDictionary();
streamDict.setItem(COSName.LENGTH, new COSInteger(bytes.length));
COSStream contents = new COSStream(streamDict,doc.getScratchFile());
OutputStream output = contents.createUnfilteredStream();
output.write(bytes);
output.close();
page.setItem(COSName.CONTENTS, doc.createObject(contents));
COSDictionary resources = new COSDictionary();
// the procset
COSArray procSet = new COSArray();
procSet.add(COSName.getPDFName("PDF"));
procSet.add(COSName.getPDFName("Text"));
resources.setItem(COSName.getPDFName("ProcSet"), doc.createObject(procSet));
// the font
COSDictionary font = new COSDictionary();
font.setItem(COSName.TYPE, COSName.FONT);
font.setItem(COSName.SUBTYPE, COSName.getPDFName("Type1"));
font.setItem(COSName.getPDFName("Name"), COSName.getPDFName("F1"));
font.setItem(COSName.getPDFName("BaseFont"), COSName.getPDFName("Helvetica"));
COSDictionary fontDict = new COSDictionary();
fontDict.setItem(COSName.getPDFName("F1"), doc.createObject(font));
resources.setItem(COSName.getPDFName("Font"), fontDict);
page.setItem(COSName.RESOURCES, resources);
// now add the page
pagesArray.add(doc.createObject(page));
pages.setItem(COSName.KIDS, pagesArray);
pages.setItem(COSName.COUNT, new COSInteger(pagesArray.size()));
// the catalog dict
COSDictionary catalog = new COSDictionary();
catalog.setItem(COSName.TYPE, COSName.CATALOG);
catalog.setItem(COSName.PAGES, doc.createObject(pages));
doc.createObject(catalog);
//The document trailer
COSDictionary trailer = new COSDictionary();
trailer.setItem( COSName.ROOT, catalog );
doc.setTrailer( trailer );
os = new FileOutputStream( file );
writer = new COSWriter(os);
writer.write(doc);
}
finally
{
doc.close();
os.close();
writer.close();
}
}