1. Using the Java library

With just a few lines you can create PDFs inside your applications and servlet.

The following sample program converts http://www.realobjects.com/ to PDF and saves it as realobjects.pdf.

import java.io.FileOutputStream;
import java.io.OutputStream;
import org.xml.sax.InputSource;
import com.realobjects.pdfreactor.PDFreactor;

public class FirstStepsWithPDFreactor {
public static void main(String[] args) {
try {

InputSource inputSource = new InputSource("http://www.realobjects.com/");
OutputStream outputStream = new FileOutputStream("realobjects.pdf");

PDFreactor pdfReactor = new PDFreactor();

// configuration settings
pdfReactor.setAddLinks(true);
pdfReactor.setAddBookmarks(true);

// render the PDF document
pdfReactor.renderDocument(inputSource, outputStream);

} catch (Exception e) {
e.printStackTrace();
}
}
}

You can also easily concatenate the output generated by PDFreactor with other PDF documents:

InputSource inputSource = new InputSource("http://www.realobjects.com/");
OutputStream outputStream = new FileOutputStream("realobjects.pdf");

PDFreactor pdfReactor = new PDFreactor();
pdfReactor.setMergeBeforePDF(false);
pdfReactor.setMergeURL("http://www.myserver.com/appendDoc.pdf");
pdfReactor.renderDocument(inputSource, outputStream);

See:

http://java.sun.com/j2se/1.4.2/docs/api/org/xml/sax/InputSource.html for more information on the class InputSource.

You can also use the shorthands renderDocumentFromByteArray, renderDocumentFromContent and renderDocumentFromURL:

byte[] pdf = pdfReactor.renderDocumentFromURL("http://www.realobjects.com/");
OutputStream outputStream = new FileOutputStream("realobjects.pdf");                
outputStream.write(pdf);
outputstream.close();

See:

the API documentation for details.

1.1. Using PDFreactor in a Servlet

When used in a Servlet to generate a PDF that is returned to the client (e.g. a browser) PDFreactor can write directly to the ServletOutputStream:

ServletOutputStream out = response.getOutputStream();
response.setContentType("application/pdf");
pdfReactor.renderDocument(inputSource, out);
out.close();

1.2. Logging

PDFreactor uses the Java Logging API to output information about it's progress. A simple console logger can be created like this:

pdfReactorLogger = Logger.getAnonymousLogger();
pdfReactorLogger.setLevel(Level.INFO);
pdfReactorLogger.addHandler(new DefaultHandler());
pdfReactor.setLogger(pdfReactorLogger);

See:

http://java.sun.com/j2se/1.4.2/docs/guide/util/logging/