1 17 18 19 20 package embedding.intermediate; 21 22 import java.io.File ; 23 import java.io.IOException ; 24 import java.io.OutputStream ; 25 26 import javax.xml.transform.Result ; 27 import javax.xml.transform.Source ; 28 import javax.xml.transform.Transformer ; 29 import javax.xml.transform.TransformerException ; 30 import javax.xml.transform.TransformerFactory ; 31 import javax.xml.transform.sax.SAXResult ; 32 import javax.xml.transform.stream.StreamSource ; 33 34 import org.apache.fop.apps.FOPException; 35 import org.apache.fop.apps.FOUserAgent; 36 import org.apache.fop.apps.Fop; 37 import org.apache.fop.apps.FopFactory; 38 import org.apache.fop.apps.MimeConstants; 39 import org.apache.fop.area.AreaTreeModel; 40 import org.apache.fop.area.AreaTreeParser; 41 import org.apache.fop.area.RenderPagesModel; 42 import org.apache.fop.fonts.FontInfo; 43 import org.apache.fop.render.Renderer; 44 import org.apache.fop.render.xml.XMLRenderer; 45 import org.xml.sax.SAXException ; 46 47 import embedding.ExampleObj2XML; 48 import embedding.model.ProjectMember; 49 import embedding.model.ProjectTeam; 50 51 56 public class ExampleConcat { 57 58 private FopFactory fopFactory = FopFactory.newInstance(); 60 61 65 public static ProjectTeam createAnotherProjectTeam() { 66 ProjectTeam team = new ProjectTeam(); 67 team.setProjectName("The Dynamic Duo"); 68 team.addMember(new ProjectMember( 69 "Batman", "lead", "batman@heroes.org")); 70 team.addMember(new ProjectMember( 71 "Robin", "aid", "robin@heroes.org")); 72 return team; 73 } 74 75 84 public void convertToIntermediate(Source src, Source xslt, File intermediate) 85 throws IOException , FOPException, TransformerException { 86 87 FOUserAgent userAgent = fopFactory.newFOUserAgent(); 89 90 Renderer targetRenderer = userAgent.getRendererFactory().createRenderer( 92 userAgent, MimeConstants.MIME_PDF); 93 94 XMLRenderer xmlRenderer = new XMLRenderer(); 96 xmlRenderer.setUserAgent(userAgent); 97 98 xmlRenderer.mimicRenderer(targetRenderer); 100 101 userAgent.setRendererOverride(xmlRenderer); 103 104 OutputStream out = new java.io.FileOutputStream (intermediate); 106 out = new java.io.BufferedOutputStream (out); 107 try { 108 Fop fop = fopFactory.newFop(null, userAgent, out); 111 112 TransformerFactory factory = TransformerFactory.newInstance(); 114 Transformer transformer; 115 if (xslt != null) { 116 transformer = factory.newTransformer(xslt); 117 } else { 118 transformer = factory.newTransformer(); 119 } 120 121 Result res = new SAXResult (fop.getDefaultHandler()); 123 124 transformer.transform(src, res); 126 } finally { 127 out.close(); 128 } 129 } 130 131 139 public void concatToPDF(File [] files, File pdffile) 140 throws IOException , TransformerException , SAXException { 141 OutputStream out = new java.io.FileOutputStream (pdffile); 143 out = new java.io.BufferedOutputStream (out); 144 try { 145 FontInfo fontInfo = new FontInfo(); 147 FOUserAgent userAgent = fopFactory.newFOUserAgent(); 148 149 AreaTreeModel treeModel = new RenderPagesModel(userAgent, 151 MimeConstants.MIME_PDF, fontInfo, out); 152 153 AreaTreeParser parser = new AreaTreeParser(); 155 for (int i = 0; i < files.length; i++) { 156 Source src = new StreamSource (files[i]); 157 parser.parse(src, treeModel, userAgent); 158 } 159 160 treeModel.endDocument(); 162 } finally { 163 out.close(); 164 } 165 } 166 167 171 public static void main(String [] args) { 172 try { 173 System.out.println("FOP ExampleConcat\n"); 174 175 File baseDir = new File ("."); 177 File outDir = new File (baseDir, "out"); 178 outDir.mkdirs(); 179 180 File xsltfile = new File (baseDir, "xml/xslt/projectteam2fo.xsl"); 182 File [] files = new File [] { 183 new File (outDir, "team1.at.xml"), 184 new File (outDir, "team2.at.xml")}; 185 File pdffile = new File (outDir, "ResultConcat.pdf"); 186 for (int i = 0; i < files.length; i++) { 187 System.out.println("Intermediate file " + (i + 1) + ": " 188 + files[i].getCanonicalPath()); 189 } 190 System.out.println("PDF Output File: " + pdffile.getCanonicalPath()); 191 System.out.println(); 192 193 194 ProjectTeam team1 = ExampleObj2XML.createSampleProjectTeam(); 195 ProjectTeam team2 = createAnotherProjectTeam(); 196 197 ExampleConcat app = new ExampleConcat(); 198 199 app.convertToIntermediate( 201 team1.getSourceForProjectTeam(), 202 new StreamSource (xsltfile), files[0]); 203 app.convertToIntermediate( 204 team2.getSourceForProjectTeam(), 205 new StreamSource (xsltfile), files[1]); 206 207 app.concatToPDF(files, pdffile); 209 210 System.out.println("Success!"); 211 212 } catch (Exception e) { 213 e.printStackTrace(System.err); 214 System.exit(-1); 215 } 216 } 217 218 } 219
| Popular Tags
|