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);
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();
the API documentation for details.
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();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);
http://java.sun.com/j2se/1.4.2/docs/guide/util/logging/