Написал небольшой и несложный тестовый класс для демонстрации работы Apache FOP, который выдаёт PDF-файл с «Hello World!». Сам я немного тормозил при знакомстве с FOP и такой пример мне тогда бы здорово помог. Надеюсь, вам он поможет избежать таких трудностей.
Содержание файла FoTestClass:
import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import javax.xml.transform.Result; import javax.xml.transform.Source; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.sax.SAXResult; import javax.xml.transform.stream.StreamSource; import org.apache.fop.apps.Fop; import org.apache.fop.apps.FopFactory; import org.apache.fop.apps.MimeConstants; import org.xml.sax.SAXException; public class FoTestClass { public static void main(String[] args) { try { FopFactory fopFactory = FopFactory.newInstance(new File("fop-2.1/conf/fop.xconf")); // конфигурация FOP OutputStream out = new BufferedOutputStream(new FileOutputStream(new File("myfile.pdf"))); // файл выдачи Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, out); TransformerFactory factory = TransformerFactory.newInstance(); Transformer transformer = factory.newTransformer(); File fo = new File("template.xml"); // шаблон Source src = new StreamSource(fo); Result res = new SAXResult(fop.getDefaultHandler() ); transformer.transform(src, res); out.close(); Runtime.getRuntime().exec("cmd /c start myfile.pdf"); // вызов составленного файла } catch (TransformerException e) { e.printStackTrace(); } catch(SAXException e) { e.printStackTrace(); } catch(IOException e) { e.printStackTrace(); } } }
Полный архив содержить этот класс и всё остальное, что требуется для исполнения примера. Для ленивых, так сказать, архив нужно только импортировать в Eclipse и нажать на кнопку пуск.
Понравился пост? Поделись в соцсетях и подписывайся на аккаунты в Twitter и Facebook!