private Rectangle pageSize = PageSize.A4;
public boolean execute() {
Progress.start(progress);
PreviewController controller = Lookup.getDefault().lookup(PreviewController.class);
controller.getModel(workspace).getProperties().putValue(PreviewProperty.VISIBILITY_RATIO, 1.0);
controller.refreshPreview(workspace);
PreviewProperties props = controller.getModel(workspace).getProperties();
Rectangle size = new Rectangle(pageSize);
if (landscape) {
size = new Rectangle(pageSize.rotate());
}
Color col = props.getColorValue(PreviewProperty.BACKGROUND_COLOR);
size.setBackgroundColor(new BaseColor(col.getRed(), col.getGreen(), col.getBlue()));
Document document = new Document(size);
PdfWriter pdfWriter = null;
try {
pdfWriter = PdfWriter.getInstance(document, stream);
pdfWriter.setPdfVersion(PdfWriter.PDF_VERSION_1_5);
pdfWriter.setFullCompression();
} catch (DocumentException ex) {
Exceptions.printStackTrace(ex);
}
document.open();
PdfContentByte cb = pdfWriter.getDirectContent();
cb.saveState();
props.putValue(PDFTarget.LANDSCAPE, landscape);
props.putValue(PDFTarget.PAGESIZE, size);
props.putValue(PDFTarget.MARGIN_TOP, new Float((float) marginTop));
props.putValue(PDFTarget.MARGIN_LEFT, new Float((float) marginLeft));
props.putValue(PDFTarget.MARGIN_BOTTOM, new Float((float) marginBottom));
props.putValue(PDFTarget.MARGIN_RIGHT, new Float((float) marginRight));
props.putValue(PDFTarget.PDF_CONTENT_BYTE, cb);
target = (PDFTarget) controller.getRenderTarget(RenderTarget.PDF_TARGET, workspace);
if (target instanceof LongTask) {
((LongTask) target).setProgressTicket(progress);
}
try {
controller.render(target, workspace);
} catch (Exception e) {
throw new RuntimeException(e);
}
cb.restoreState();