Как создать PDF-файл из XML на Java?

В настоящий момент я создаю XML-файл на 9X_xsltproc Java и отображаю его на странице JSP, преобразовывая 9X_xsltprocessor его с помощью XSL / XSLT. Теперь мне нужно 9X_xml-transform взять этот XML-файл и отобразить ту же информацию 9X_openjdk в PDF-файле. Есть ли способ сделать это, используя 9X_oraclejdk какой-нибудь файл XSL?

Я видел библиотеку 9X_itextpdf iText Java-PDF, но не могу найти способ использовать 9X_pdf ее с XML и таблицей стилей.

Мы будем благодарны 9X_itext за любую помощь. Заранее спасибо!

34
2

  • Теперь есть iText® XMLWorker, реал ...
7
Общее количество ответов: 7

Ответ #1

Ответ на вопрос: Как создать PDF-файл из XML на Java?

A - Объяснение

Для создания выходных данных в формате pdf следует 9X_xml-transform использовать структуру Apache FOP. Просто вы предоставляете 9X_xml-transform данные в формате xml и визуализируете страницу 9X_xml-transform с помощью файла xsl-fo и указываете такие параметры, как 9X_openjdk margin, макет страницы. в этом файле xsl-fo.

Я представлю простую демонстрацию. Я 9X_xslt использую инструмент сборки maven для сбора необходимых 9X_xslt файлов jar. Обратите внимание, что в конце 9X_itextpdf страницы есть графика svg, встроенная в 9X_openjdk pdf. Я также хочу продемонстрировать, что 9X_oraclejdk вы можете встраивать SVG-графику в PDF-файл.

B - Пример входных данных XML

 
 User Bill Data Thursday December 9 2016 00:04:29 John Doe 34239 123AD329248 17.84 Michael Doe 54823 942KFDSCW322 34.50 Jane Brown 66742 ABDD324KKD8 69.36 

C - Шаблон XSL-FO

 Bill Id: , Date: XXX COMPANY Page of MONTHLY BILL REPORT Full Name Postal Code National ID Payment  
  

D - Структура каталога проекта

9X_Как создать PDF-файл из XML на Java?_itextsharp

E - файл POM

 4.0.0 com.levent.fopdemo apache-fop-demo jar 1.0-SNAPSHOT apache-fop-demo http://maven.apache.org 2.1 org.apache.xmlgraphics fop ${fop.version} Apache Fop Demo org.apache.maven.plugins maven-compiler-plugin 3.5.1 1.8
                    1.8
                
            
        
    

F - Демо-код: PdfGenerationDemo.java

package com.levent.fopdemo; import java.io.File; import java.io.IOException; import java.io.OutputStream; import javax.xml.transform.Result; 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.FOPException; import org.apache.fop.apps.FOUserAgent; import org.apache.fop.apps.Fop; import org.apache.fop.apps.FopFactory; import org.apache.fop.apps.MimeConstants; public class PdfGenerationDemo { public static final String RESOURCES_DIR; public static final String OUTPUT_DIR; static { RESOURCES_DIR = "src//main//resources//"; OUTPUT_DIR = "src//main//resources//output//"; } public static void main( String[] args ) { try { convertToPDF(); } catch (FOPException | IOException | TransformerException e) { e.printStackTrace(); } } public static void convertToPDF() throws IOException, FOPException, TransformerException { // the XSL FO file File xsltFile = new File(RESOURCES_DIR + "//template.xsl"); // the XML file which provides the input StreamSource xmlSource = new StreamSource(new File(RESOURCES_DIR + "//data.xml")); // create an instance of fop factory FopFactory fopFactory = FopFactory.newInstance(new File(".").toURI()); // a user agent is needed for transformation FOUserAgent foUserAgent = fopFactory.newFOUserAgent(); // Setup output OutputStream out; out = new java.io.FileOutputStream(OUTPUT_DIR + "//output.pdf"); try { // Construct fop with desired output format Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, foUserAgent, out); // Setup XSLT TransformerFactory factory = TransformerFactory.newInstance(); Transformer transformer = factory.newTransformer(new StreamSource(xsltFile)); // Resulting SAX events (the generated FO) must be piped through to // FOP Result res = new SAXResult(fop.getDefaultHandler()); // Start XSLT transformation and FOP processing // That's where the XML is first transformed to XSL-FO and then // PDF is created transformer.transform(xmlSource, res); } finally { out.close(); } } } 

G - Пример вывода: output.pdf

9X_Как создать PDF-файл из XML на Java?_xsl

35
1

  • Интересно! Но мне нужно добавить `compile group: 'xml-apis', name: 'xml-apis', version: '1.4.01' в мою за ...

Ответ #2

Ответ на вопрос: Как создать PDF-файл из XML на Java?

Вы можете использовать объекты форматирования 9X_xsltprocessor XSL. Вот несколько хороших статей о том, как 9X_xslt это сделать:

  • http://www.xml.com/pub/a/2001/01/17/xsl-fo/index.html
  • http://www.xml.com/pub/a/2001/01/24/xsl-fo/index.html?page=1
  • http://www.javaworld.com/javaworld/jw-04-2006/jw-0410-html.html

20
0

Ответ #3

Ответ на вопрос: Как создать PDF-файл из XML на Java?

Вы также можете проверить проект Apache 9X_jre FOP here

7
0

Ответ #4

Ответ на вопрос: Как создать PDF-файл из XML на Java?

BIRT имеет графический интерфейс для Eclipse, который 9X_itextpdf позволяет вам определять PDF из XML, DB, CSV 9X_openjdk и т. д.

2
0

Ответ #5

Ответ на вопрос: Как создать PDF-файл из XML на Java?

Возможно, вы захотите взглянуть на существующие 9X_jre библиотеки XSL-FO, которые могут создавать 9X_xsl PDF-файлы в качестве преобразования. Попробую 9X_xslt найти ссылку.

1
0

Ответ #6

Ответ на вопрос: Как создать PDF-файл из XML на Java?

Попробуйте проект xhtmlrenderer. См. Статью «Generating PDFs for Fun and Profit with Flying Saucer and iText».

9X_jdk

1
0

Ответ #7

Ответ на вопрос: Как создать PDF-файл из XML на Java?

Вы можете применить XSL-Fo к своему XML 9X_xsltransform и преобразовать его с помощью преобразователя 9X_itext Java:

File xmlfile = new File(baseDir, xml); File xsltfile = new File(baseDir, xsl); File pdffile = new File(outDir, "ResultXMLPDF.pdf"); FopFactory fopFactory = FopFactory.newInstance(); FOUserAgent foUserAgent = fopFactory.newFOUserAgent(); OutputStream out = new java.io.FileOutputStream(pdffile); out = new java.io.BufferedOutputStream(out); try { Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, foUserAgent, out); // Setup XSLT TransformerFactory factory = TransformerFactory.newInstance(); Transformer transformer = factory.newTransformer(new StreamSource(xsltfile)); transformer.setParameter("versionParam", "1.0"); Source src = new StreamSource(xmlfile); Result res = new SAXResult(fop.getDefaultHandler()); transformer.transform(src, res); } finally { out.close(); } System.out.println("Success!"); 

1
0