Как создать 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 это сделать:

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