01: package it.stefanochizzolini.clown.samples;
02:
03: import it.stefanochizzolini.clown.documents.Document;
04: import it.stefanochizzolini.clown.documents.contents.Contents;
05: import it.stefanochizzolini.clown.documents.contents.ContentScanner;
06: import it.stefanochizzolini.clown.documents.contents.Fonts;
07: import it.stefanochizzolini.clown.documents.contents.Resources;
08: import it.stefanochizzolini.clown.documents.contents.XObjects;
09: import it.stefanochizzolini.clown.documents.contents.colorSpaces.DeviceRGBColor;
10: import it.stefanochizzolini.clown.documents.contents.composition.AlignmentXEnum;
11: import it.stefanochizzolini.clown.documents.contents.composition.AlignmentYEnum;
12: import it.stefanochizzolini.clown.documents.contents.composition.PrimitiveFilter;
13: import it.stefanochizzolini.clown.documents.contents.entities.Image;
14: import it.stefanochizzolini.clown.documents.contents.fonts.StandardType1Font;
15: import it.stefanochizzolini.clown.documents.contents.xObjects.FormXObject;
16: import it.stefanochizzolini.clown.objects.PdfName;
17:
18: import java.awt.Dimension;
19: import java.awt.geom.Dimension2D;
20: import java.awt.geom.Point2D;
21: import java.awt.geom.Rectangle2D;
22: import java.util.Date;
23:
24: public class SampleHelper {
25: /**
26: Creates a common page template to use when generating sample documents.
27: @return Page template.
28: */
29: public static FormXObject createTemplate(Document document) {
30: // Create a template (form)!
31: FormXObject template = new FormXObject(document);
32:
33: // Size.
34: template.setSize(document.getPageSize());
35: Dimension2D templateSize = template.getSize();
36:
37: PrimitiveFilter builder = new PrimitiveFilter(template);
38:
39: Image image = null;
40: try {
41: // Instantiate a jpeg image object!
42: image = Image.get(new java.io.File(
43: ((java.net.URL) SampleHelper.class
44: .getResource("mountains.jpg")).toURI())
45: .getPath()); // Abstract image (entity).
46: } catch (Exception e) {/* NOOP. */
47: }
48: // Show the image inside the common content stream!
49: builder.showXObject(image.toXObject(document),
50: new Point2D.Double(0, 0), new Dimension(
51: (int) templateSize.getWidth() - 50, 125));
52:
53: // Showing the 'PDFClown' label inside the common content stream...
54: builder.beginLocalState();
55: builder.setFillColor(new DeviceRGBColor(115f / 255, 164f / 255,
56: 232f / 255));
57: // Set the font to use!
58: builder.setFont(new StandardType1Font(document,
59: StandardType1Font.FamilyNameEnum.Times, true, false),
60: 120);
61: // Show the text!
62: builder.showText("PDFClown");
63:
64: // Drawing the side rectangle...
65: builder.drawRectangle(new Rectangle2D.Double(templateSize
66: .getWidth() - 50, 0, 50, templateSize.getHeight()));
67: builder.fill();
68: builder.end();
69:
70: // Begin the graphics state!
71: builder.beginLocalState();
72: // Set the font to use!
73: builder.setFont(new StandardType1Font(document,
74: StandardType1Font.FamilyNameEnum.Helvetica, false,
75: false), 8);
76: // Set the fill color to use!
77: builder.setFillColor(DeviceRGBColor.White);
78: builder.beginLocalState();
79: builder.translate(templateSize.getWidth() - 20, 20);
80: builder.rotate(90);
81: builder.showText("Generated by PDF Clown on " + (new Date()));
82: builder.translate(0, -8);
83: builder
84: .showText("For more info, visit http://clown.stefanochizzolini.it");
85: builder.end();
86: // End the graphics state!
87: builder.end();
88:
89: builder.flush();
90:
91: return template;
92: }
93: }
|