Простейший пример составления документа PDF в FOP

минута на чтение

Написал небольшой и несложный тестовый класс для демонстрации работы 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!
Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

Похожие записи:

В последнее время помимо других новых для меня вещей я столкнулся с созданием документов PDF в FOP/Java и мне стало интересно, можно ли это сделать в JavaScript и php. В данный момент пытаюсь запустить Tecnickcom tc-lib-pdf. Собрать библиотеку можно с помощью ...
Для одного проекта мне пришлось разобраться со штрихкодами (или баркодами — кому как нравится). В компании уже был реализован механизм печати документов PDF посредством FOP, мне нужно было добавить в определённый документ эти коды. Существовало техническое ог...
Для одного проекта для учёбы мне нужно было обрабатывать события нажатия кнопок на вебсайте. Простейший пример, как это можно реализовать с помощью JavaScript, а именно библиотеки jQuery, рассмотрим в этом посту. В коде ниже при загрузке страницы к ней прикре...