Images.java
import java.util.*; import java.io.*; import java.awt.Color; import org.faceless.pdf2.*; /** * The Images example demonstrates inserting images into a document. * We insert a GIF image, two JPEG's and a PNG onto the page. * */ public class Images { public static void main(String[] args) throws IOException { // Create a new PDF document and A4 landscape page // PDF pdf = new PDF(); PDFPage page = pdf.newPage("A4-landscape"); // To make layout easier, store the width and height of the // page in a couple of variables, and have the whole page and measured in points // from the top-left of the page. // float width = page.getWidth(); float height = page.getHeight(); page.setUnits(PDFPage.UNITS_POINTS, PDFPage.ORIGIN_PAGETOP); // Draw a light blue rectangle filling most of the page. // PDFStyle background = new PDFStyle(); background.setFillColor(new Color(208,231,240)); page.setStyle(background); page.drawRectangle(100, 100, width-100, height-100); // Load the images. // // We're loading the images from files here, but there is no // reason whey they couldn't be loaded from a ByteArrayInputStream // or any other stream. // PDFImage map = new PDFImage(new FileInputStream("resources/images/africa.gif")); PDFImage sand = new PDFImage(new FileInputStream("resources/images/sanddune.jpg")); PDFImage canoe = new PDFImage(new FileInputStream("resources/images/canoe.jpg")); PDFImage logo = new PDFImage(new FileInputStream("resources/images/logosmall.png")); // Draw the images. // // Although we are specifying the upper-left and lower-right hand // corners for each images' rectangle, any two opposite corners // would do. // // We're blatently ignoring the image aspect ratios. // // Draw the first image (the map, a GIF image) with the top right // corner 100 pixels in from the top-right hand corner of the page // page.drawImage(map, width-430, 100, width-100, height-100); // Draw the next two images, both JPEGs. Put them above eachother // 120 pixels in from the left of the page (just inside the blue // rectangle). // page.drawImage(canoe, 120, 120, 350, 260); page.drawImage(sand, 120, 315, 350, 455); // Draw the last image - our logo, a PNG image - near the // bottom of the page. Although this appears as the smallest // image on the page, it's actually the highest resolution - you // will notice the difference when you zoom in on the images. // page.drawImage(logo, width-220, height, width-100, height-100); // Draw a black box around the blue rectangle. Do this after // the images. If we did it before we drew the imagse, they // would overwrite part of the line. // PDFStyle borderStyle = new PDFStyle(); borderStyle.setLineColor(Color.black); page.setStyle(borderStyle); page.drawRectangle(100, 100, width-100, height-100); // Add some text to complete the document. // // We're not doing anything clever with fonts in this // example, just using the built in Times-Roman and // Helvetica-Oblique // // Create three new styles to write in. // // 1. "footer" - 8 point Helvetica Oblique, Right aligned // 2. "header" - 24 point Times Roman // 3. "caption" - 12 point Times Roman // PDFStyle footer = new PDFStyle(); footer.setFont(new StandardFont(StandardFont.HELVETICAOBLIQUE), 8); footer.setFillColor(Color.black); footer.setTextAlign(PDFStyle.TEXTALIGN_RIGHT); PDFStyle caption = new PDFStyle(); caption.setFont(new StandardFont(StandardFont.TIMES), 12); caption.setFillColor(Color.black); PDFStyle heading = new PDFStyle(); heading.setFont(new StandardFont(StandardFont.TIMES), 24); heading.setFillColor(Color.black); // Now we can actually draw the text // page.setStyle(heading); page.drawText("Some Photos from Africa", 100, 70); page.setStyle(caption); page.drawText("An example showing two JPEG images, a GIF and a PNG image", 100, 90); page.drawText("A fishing boat on the beach - Western Ghana", 120, 280); page.drawText("The largest sand dunes in the world - Namibia", 120, 475); page.setStyle(footer); page.drawText("Document created using the Big Faceless PDF Library - http://big.faceless.org/products/pdf", width-240, height-45); //---------------------------------------------------------------- // // That's it! We've created the contents of the document. Now // to finish off we'll add some document meta-information and // set the page to resize when the document is opened. // //---------------------------------------------------------------- // Add some document info. // pdf.setInfo("Author", "Big Faceless Organization, Inc."); pdf.setInfo("Title", "Some Photos from Africa"); pdf.setAction(Event.OPEN, PDFAction.goToFit(page)); // Write the document to a file // OutputStream fo = new FileOutputStream("Images.pdf"); pdf.render(fo); fo.close(); } }