/* * $Id$ * * This code is part of the 'iText Tutorial'. * You can find the complete tutorial at the following address: * http://itextdocs.lowagie.com/tutorial/ * * This code is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * itext-questions@lists.sourceforge.net */ package com.lowagie.examples.objects.images; import java.awt.Color; import java.io.FileOutputStream; import java.io.IOException; import com.lowagie.text.Document; import com.lowagie.text.DocumentException; import com.lowagie.text.Element; import com.lowagie.text.Image; import com.lowagie.text.Rectangle; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.PdfContentByte; import com.lowagie.text.pdf.PdfWriter; /** * This is a tool that allows you to make a DVD Cover. * @author blowagie */ public class DvdCover { /** * Sets the Image that has to be on the back of the cover. * @param back an Image object. */ public void setBack(Image back) { this.back = back; } /** * Sets the backgroundcolor of the cover. * @param backgroundcolor a Color object. */ public void setBackgroundcolor(Color backgroundcolor) { this.backgroundcolor = backgroundcolor; } /** * Sets the Image that has to be on the front of the cover. * @param front an Image object. */ public void setFront(Image front) { this.front = front; } /** * Sets the Image that has to be on the back of the cover. * @param side an Image object. */ public void setSide(Image side) { this.side = side; } /** * Sets the title of the movie (will be printed on the side if there is no side image) * @param title The title to set. */ public void setTitle(String title) { this.title = title; } /** * Sets the filename of the resulting PDF * @param filename The filename to set. */ public void setFilename(String filename) { this.filename = filename; } /** the name of the file that has to be generated. */ protected String filename; /** the title that has to be on the side of the cover. */ protected String title; /** the backgroundcolor of the cover. */ protected Color backgroundcolor; /** the front image of the cover. */ protected Image front; /** the side image of the cover. */ protected Image side; /** the back image of the cover. */ protected Image back; /** * Creates a DVD Cover object. */ public DvdCover() { } /** * Example that generates a DVD Cover in PDF. * @param args an array containing [0] a filename [1] a title [2] a backgroundcolor [3] a front image [4] a back image [5] a side image */ public static void main(String[] args) { System.out.println("DVD Cover"); DvdCover cover = new DvdCover(); if (args.length > 0) { cover.setFilename(args[0]); } if (args.length > 1) { cover.setTitle(args[1]); } if (args.length > 2) { cover.setBackgroundcolor(Color.decode(args[2])); } if (args.length > 3) { try { cover.setFront(Image.getInstance(args[3])); } catch (Exception e) { e.printStackTrace(); } } if (args.length > 4) { try { cover.setBack(Image.getInstance(args[4])); } catch (Exception e) { e.printStackTrace(); } } if (args.length > 5) { try { cover.setSide(Image.getInstance(args[5])); } catch (Exception e) { e.printStackTrace(); } } cover.generatePdf(); } /** * Method that generates the actual PDF file. */ public void generatePdf() { // step 1: creation of a document-object Rectangle pageSize = new Rectangle(780, 525); if (backgroundcolor != null) pageSize.setBackgroundColor(backgroundcolor); Document document = new Document(pageSize); try { // step 2: // we create a writer that listens to the document // and directs a PDF-stream to a file if (filename == null) { filename = "dvdcover.pdf"; } PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(filename)); // step 3: we open the document document.open(); // step 4: PdfContentByte cb = writer.getDirectContent(); if (title != null) { cb.setFontAndSize(BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, false), 24); cb.beginText(); if (front == null) { cb.showTextAligned(Element.ALIGN_CENTER, title, 595f, 262f, 0f); } if (side == null) { cb.showTextAligned(Element.ALIGN_CENTER, title, 385f, 262f, 270f); } cb.endText(); } cb.moveTo(370, 0); cb.lineTo(370, 525); cb.moveTo(410, 525); cb.lineTo(410, 0); cb.stroke(); if (front != null) { front.scaleToFit(370, 525); front.setAbsolutePosition(410f + (370f - front.getScaledWidth()) / 2f, (525f - front.getScaledHeight()) / 2f); document.add(front); } if (back != null) { back.scaleToFit(370, 525); back.setAbsolutePosition((370f - back.getScaledWidth()) / 2f, (525f - back.getScaledHeight()) / 2f); document.add(back); } if (side != null) { side.scaleToFit(40, 525); side.setAbsolutePosition(370 + (40f - side.getScaledWidth()) / 2f, (525f - side.getScaledHeight()) / 2f); document.add(side); } } catch(DocumentException de) { System.err.println(de.getMessage()); } catch(IOException ioe) { System.err.println(ioe.getMessage()); } // step 5: we close the document document.close(); } }