git-svn-id: https://svn.coded.pt/svn/SIPRP@1000 bb69d46d-e84e-40c8-a05a-06db0d633741

0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z
João Neto 17 years ago
parent 0f7443cac1
commit 1885d78608

@ -1,190 +0,0 @@
/*
* PDFCreator.java
*
* Created on 19 de Abril de 2006, 18:20
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package siprp.fop;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.swing.JFileChooser;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.sax.SAXResult;
import javax.xml.transform.stream.StreamSource;
import org.apache.avalon.framework.logger.ConsoleLogger;
import org.apache.fop.apps.Driver;
import org.apache.fop.apps.Options;
import org.apache.fop.viewer.SecureResourceBundle;
import org.apache.fop.viewer.Translator;
import com.evolute.utils.fop.FOPCreator;
/**
* PDFCreator creates PDF's using FO.
*
* @author Frederico Palma
* @version %I%, %G%
*/
public class PDFCreator
{
private final Translator translator = new SecureResourceBundle( null );
private static final Object LOCK = new Object();
private static PDFCreator pdfCreator;
private static String userConfig;
public static PDFCreator getPDFCreator()
{
synchronized( LOCK )
{
if( pdfCreator == null )
{
pdfCreator = new PDFCreator();
}
}
return pdfCreator;
}
public static void setUserConfig(String string)
{
PDFCreator.userConfig = string;
}
public static void main( String arg[] )
throws Exception
{
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
final FOPCreator creator = FOPCreator.getFOPCreator();
System.out.println( "Creating FO" );
JFileChooser chooser = new JFileChooser();
chooser.setDialogTitle( "Select XML data file:" );
int returnVal = chooser.showOpenDialog( null );
String dataFile = null;
if( returnVal == JFileChooser.APPROVE_OPTION )
{
dataFile = chooser.getSelectedFile().getAbsolutePath();
}
chooser.setDialogTitle( "Select XSL-FO template file:" );
returnVal = chooser.showOpenDialog( null );
String templateFile = null;
if( returnVal == JFileChooser.APPROVE_OPTION )
{
templateFile = chooser.getSelectedFile().getAbsolutePath();
System.out.println( chooser.getSelectedFile().getAbsolutePath() );
}
final String DATA = dataFile;
final String TEMPLATE = templateFile;
creator.createFOfromXML( new FileInputStream( DATA ),
new FileInputStream( TEMPLATE ), baos );
// Thread t = new Thread() {
// public void run()
// {
// try
// {
// creator.createFOfromXML( new FileInputStream( DATA ),
// new FileInputStream( TEMPLATE ), baos );
// System.out.println( "FO created" );
// }
// catch( Exception ex )
// {
// ex.printStackTrace();
// }
// } };
// t.start();
// Thread.currentThread().sleep( 2 );
System.out.println( "Starting to print" );
// options.put( FOP_DUPLEX_TYPE, javax.print.attribute.standard.Sides.TUMBLE );
byte pdf[] = PDFCreator.getPDFCreator().createPdfFromFo( baos.toByteArray() );
// new FOPPrinter().printFO( new FileInputStream( "c:\\simplecol.fo" ), true, false );
File pdfFile = new File( "/home/fpalma/acss/teste.pdf" );
File foFile = new File( "/home/fpalma/Desktop/teste.fo" );
pdfFile.createNewFile();
foFile.createNewFile();
FileOutputStream fos = new FileOutputStream( pdfFile );
FileOutputStream fofos = new FileOutputStream( foFile );
fos.write( pdf );
fofos.write( baos.toByteArray() );
fos.close();
fofos.close();
System.out.println( "DONE" );
}
/** Creates a new instance of PDFCreator */
private PDFCreator()
{
}
/**
* Creates PDF content as an array of bytes, given FO content as an array of bytes.
*
* @param fo the byte[] with the FO content to convert
* @return the PDF content
* @throws Exception if the conversion fails
*
*/
public byte[]createPdfFromFo( byte []fo )
throws Exception
{
InputStream inputStreamConf = ClassLoader.getSystemClassLoader().getResourceAsStream("siprp/fop/fop.xml");
InputStream inputStreamDTD = ClassLoader.getSystemClassLoader().getResourceAsStream("siprp/fop/config.dtd");
/*************************/
File f = File.createTempFile("fop", "conf");
f.deleteOnExit();
writeFile(inputStreamConf, f);
System.out.println(f.getParentFile());
/*************************/
File dtd = new File(f.getParentFile(), "config.dtd");
writeFile(inputStreamDTD, dtd);
new Options(f);
ByteArrayOutputStream pdf = new ByteArrayOutputStream();
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
Source src = new StreamSource( new ByteArrayInputStream( fo ) );
Driver driver = new Driver();
driver.setLogger( new ConsoleLogger( ConsoleLogger.LEVEL_INFO ) );
driver.setRenderer( Driver.RENDER_PDF );
driver.setOutputStream( pdf );
Result res = new SAXResult( driver.getContentHandler() );
transformer.transform( src, res );
return pdf.toByteArray();
}
private void writeFile(InputStream inputStreamConf, File f)
throws FileNotFoundException, IOException {
OutputStream out = new FileOutputStream(f);
byte buf[] = new byte[1024];
int len;
while ((len = inputStreamConf.read(buf)) > 0)
out.write(buf, 0, len);
out.close();
inputStreamConf.close();
}
}

@ -1,22 +0,0 @@
<!ELEMENT configuration (entry*, fonts?)>
<!ELEMENT entry (key,(value | list))>
<!ATTLIST entry
role CDATA #IMPLIED
>
<!ELEMENT key (#PCDATA)>
<!ELEMENT value (#PCDATA)>
<!ELEMENT list (value+ | subentry+)>
<!ELEMENT subentry (key,value+)>
<!ELEMENT fonts (font*)>
<!ELEMENT font (font-triplet+)>
<!ATTLIST font
metrics-file CDATA #REQUIRED
kerning CDATA #IMPLIED
embed-file CDATA #REQUIRED
>
<!ELEMENT font-triplet EMPTY>
<!ATTLIST font-triplet
name CDATA #REQUIRED
style CDATA #REQUIRED
weight CDATA #REQUIRED
>

@ -1,89 +0,0 @@
<!DOCTYPE configuration SYSTEM "config.dtd">
<!--
this file contains templates which allow an user easy
configuration of Fop. Actually normally you don't need this configuration
file, but if you need to change configuration, you should
always use this file and *not* config.xml.
Usage: java org.apache.fop.apps.Fop -c userconfig.xml -fo fo-file -pdf pdf-file
-->
<configuration>
<!-- NOT IMPLEMENTED
basedir: normally the base directory is the directory where the fo file is
located. if you want to specify your own, uncomment this entry
-->
<!--
<entry>
<key>baseDir</key>
<value></value>
</entry>
-->
<!--
************************************************************************
HYPHENATION
************************************************************************
-->
<!--
hyphenation directory
if you want to specify your own directory with hyphenation pattern
then uncomment the next entry and add the directory name
-->
<!--
<entry>
<key>hyphenation-dir</key>
<value>/java/xml-fop/hyph</value>
</entry>
-->
<!--
************************************************************************
Add fonts here
************************************************************************
-->
<fonts>
<!-- example -->
<!--
<font metrics-file="arial.xml" kerning="yes" embed-file="arial.ttf">
<font-triplet name="Arial" style="normal" weight="normal"/>
<font-triplet name="ArialMT" style="normal" weight="normal"/>
</font>
<font metrics-file="arialb.xml" kerning="yes" embed-file="arialb.ttf">
<font-triplet name="Arial" style="normal" weight="bold"/>
<font-triplet name="ArialMT" style="normal" weight="bold"/>
</font>
<font metrics-file="ariali.xml" kerning="yes" embed-file="ariali.ttf">
<font-triplet name="Arial" style="italic" weight="normal"/>
<font-triplet name="ArialMT" style="italic" weight="normal"/>
</font>
<font metrics-file="arialbi.xml" kerning="yes" embed-file="arialbi.ttf">
<font-triplet name="Arial" style="italic" weight="bold"/>
<font-triplet name="ArialMT" style="italic" weight="bold"/>
</font>
-->
<!-- Example Japanese fonts
<font metrics-file="msgothic.xml" embed-file="D:\winnt\font\msgothic.ttc" kerning="yes">
<font-triplet name="Gothic" style="normal" weight="normal"/>
<font-triplet name="Gothic" style="normal" weight="bold"/>
<font-triplet name="Gothic" style="italic" weight="normal"/>
<font-triplet name="Gothic" style="italic" weight="bold"/>
</font>
<font metrics-file="msmincho.xml" embed-file="Cyberbit.ttf" kerning="yes">
<font-triplet name="Mincho" style="normal" weight="normal"/>
<font-triplet name="Mincho" style="normal" weight="bold"/>
<font-triplet name="Mincho" style="italic" weight="normal"/>
<font-triplet name="Mincho" style="italic" weight="bold"/>
</font>
-->
</fonts>
</configuration>
Loading…
Cancel
Save