package it.stefanochizzolini.clown.samples; import it.stefanochizzolini.clown.documents.Document; import it.stefanochizzolini.clown.documents.Page; import it.stefanochizzolini.clown.documents.Pages; import it.stefanochizzolini.clown.documents.contents.composition.AlignmentXEnum; import it.stefanochizzolini.clown.documents.contents.composition.AlignmentYEnum; import it.stefanochizzolini.clown.documents.contents.composition.BlockFilter; import it.stefanochizzolini.clown.documents.contents.composition.PrimitiveFilter; import it.stefanochizzolini.clown.documents.contents.entities.EAN13Barcode; import it.stefanochizzolini.clown.documents.contents.fonts.StandardType1Font; import it.stefanochizzolini.clown.documents.contents.xObjects.XObject; import it.stefanochizzolini.clown.files.File; import java.awt.Dimension; import java.awt.geom.Dimension2D; import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; /** This sample demonstrates how to show bar codes in a PDF file. @author Stefano Chizzolini (http://www.stefanochizzolini.it) @version 0.0.6 @since 0.0.6 */ public class BarcodeSample implements ISample { // // private static final float Margin = 36; // // // // // // public void run( PDFClownSampleLoader loader ) { // 1. PDF file instantiation. File file = new File(); // 2. Content creation. Document document = file.getDocument(); populate(document,loader); // (boilerplate metadata insertion -- ignore it) loader.buildAccessories(document,this.getClass(),"Barcode","showing barcodes"); // 3. Serialize the PDF file (again, boilerplate code -- see the PDFClownSampleLoader class source code)! loader.serialize(file,this.getClass().getSimpleName(),false); } // // // /** Populates a PDF file with contents. */ private void populate( Document document, PDFClownSampleLoader loader ) { // Get the abstract barcode entity! EAN13Barcode barcode = new EAN13Barcode("8012345678901"); // Create the reusable barcode within the document! XObject barcodeXObject = barcode.toXObject(document); Pages pages = document.getPages(); // Page 1. { Page page = new Page(document); pages.add(page); Dimension2D pageSize = page.getSize(); PrimitiveFilter builder = new PrimitiveFilter(page); { BlockFilter blockFilter = new BlockFilter(builder); blockFilter.setHyphenation(true); blockFilter.begin( new Rectangle2D.Double( Margin, Margin, (float)pageSize.getWidth() - Margin * 2, (float)pageSize.getHeight() - Margin * 2 ), AlignmentXEnum.Left, AlignmentYEnum.Top ); StandardType1Font bodyFont = new StandardType1Font( document, StandardType1Font.FamilyNameEnum.Courier, true, false ); builder.setFont(bodyFont,32); blockFilter.showText("Barcode sample"); blockFilter.showBreak(); builder.setFont(bodyFont,16); blockFilter.showText("Showing the EAN-13 Bar Code on different compositions:"); blockFilter.showBreak(); blockFilter.showText("- page 1: on the lower right corner of the page, 100pt wide;"); blockFilter.showBreak(); blockFilter.showText("- page 2: on the middle of the page, 1/3-page wide, 25 degree counterclockwise rotated;"); blockFilter.showBreak(); blockFilter.showText("- page 3: filled page, 90 degree clockwise rotated."); blockFilter.showBreak(); blockFilter.end(); } // Show the barcode! builder.showXObject( barcodeXObject, new Point2D.Double( (float)pageSize.getWidth() - Margin, (float)pageSize.getHeight() - Margin ), new Dimension(100,0), AlignmentXEnum.Right, AlignmentYEnum.Bottom, 0 ); builder.flush(); } // Page 2. { Page page = new Page(document); pages.add(page); Dimension2D pageSize = page.getSize(); PrimitiveFilter builder = new PrimitiveFilter(page); // Show the barcode! builder.showXObject( barcodeXObject, new Point2D.Double( (float)pageSize.getWidth() / 2, (float)pageSize.getHeight() / 2 ), new Dimension((int)pageSize.getWidth()/3,0), AlignmentXEnum.Center, AlignmentYEnum.Middle, 25 ); builder.flush(); } // Page 3. { Page page = new Page(document); pages.add(page); Dimension2D pageSize = page.getSize(); PrimitiveFilter builder = new PrimitiveFilter(page); // Show the barcode! builder.showXObject( barcodeXObject, new Point2D.Double( (float)pageSize.getWidth() / 2, (float)pageSize.getHeight() / 2 ), new Dimension((int)pageSize.getHeight(),(int)pageSize.getWidth()), AlignmentXEnum.Center, AlignmentYEnum.Middle, -90 ); builder.flush(); } } // // // }