0

それでも、xml から pdf を生成しようとしています。HTML を介して方法を見つけましたが、変更は許可します。コードにはまだエラーが含まれています。

手伝って頂けますか?私は絶望的です:/

使用例コード、バドは xsl のみを編集しました - http://thinktibits.blogspot.cz/2011/05/java-itext-convert-xml-to-pdf-example.html

import java.io.*;
import com.lowagie.text.DocumentException;
import org.xhtmlrenderer.pdf.ITextRenderer;
import javax.xml.transform.*;
import javax.xml.transform.stream.*;

Java:
public class FAtoPDF {
 public static void main(String[] args) 
            throws IOException, TransformerException,TransformerConfigurationException,FileNotFoundException, DocumentException {                  

        TransformerFactory tFactory = TransformerFactory.newInstance();
        Transformer transformer = tFactory.newTransformer(new StreamSource("sample.xsl"));
        transformer.transform(new StreamSource("report.xml"),new StreamResult(new FileOutputStream("sample.html")));
        String File_To_Convert = "sample.html";
        String url = new File(File_To_Convert).toURI().toURL().toString();
        //System.out.println(""+url);
        String HTML_TO_PDF = "ConvertedFile.pdf";
        OutputStream os = new FileOutputStream(HTML_TO_PDF); 
        ITextRenderer renderer = new ITextRenderer();
        //renderer.setDocument(url);      
        renderer.setDocument(new File("sample.html"));
        renderer.layout();
        renderer.createPDF(os);   
        os.close();
    }
}

XSL:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method='html' version='4.0' encoding='ISO-8859-1' indent='yes' /> 
  <xsl:template match="/">    
  <html>
  <body>
  <h2>FAP - Report from FIO Banka</h2>
    <table>
      <tr style="background-color:#9acd32;">
        <th align="left">ID pohybu</th>
        <th align="left">Datum</th>
        <th align="left">Objem</th>
        <th align="left">Mena</th>
        <th align="left">Protiucet</th>
        <th align="left">Kod banky</th>
        <th align="left">Nazev banky</th>
        <th align="left">KS</th>
        <th align="left">Uzivatel. identifikace</th>
        <th align="left">Typ</th>
        <th align="left">Provedl</th>
        <th align="left">Komentar</th>
        <th align="left">ID Pokynu</th> 
      </tr>
      <xsl:for-each select="AccountStatement/TransactionList/Transaction">
      <tr>
        <td><xsl:value-of select="column_22"/></td>
        <td><xsl:value-of select="column_0"/></td>
        <td><xsl:value-of select="column_1"/></td>
        <td><xsl:value-of select="column_14"/></td>
        <td><xsl:value-of select="column_2"/></td>
        <td><xsl:value-of select="column_3"/></td>
        <td><xsl:value-of select="column_12"/></td>
        <td><xsl:value-of select="column_4"/></td>
        <td><xsl:value-of select="column_7"/></td>
        <td><xsl:value-of select="column_8"/></td>
        <td><xsl:value-of select="column_9"/></td>
        <td><xsl:value-of select="column_25"/></td>
        <td><xsl:value-of select="column_17"/></td>
      </tr>
      </xsl:for-each>
    </table>
    <p>Vygenerovano </p> 
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>

問題は、XML/HTML に「ščřžýáíéě」のような文字が含まれていることかもしれません ...

HTML: http://pastebin.com/qSPUpV1u

4

1 に答える 1

0

まず、XSL を製品の XSL FO に簡単に変更できるのであれば、XML から HTML、PDF に移行することはありませんでした。そうは言っても、HTML が PDF に問題なく変換できることを示すフィドルがあります (実際に HTML を使用し、css スタイリングをそのままにして XSL FO に変換します)。

http://jsfiddle.net/m35q1d9w/

    function printMe() {
    xepOnline.Formatter.Format('print_me',
    {pageWidth:"11in", pageHeight:"8in"});

印刷ボタンを押します。テーブルと見出しを囲む 'print_me' という ID の div を出力します。

HTML のクリーンアップにもっと時間がかかるはずです。少なくとも改ページでヘッダーを繰り返し表示できるように、thead 要素を追加しました。そして、そのテーブルに css を追加して、外観を大幅に改善することができます。

これは、必要な言語をサポートする GitHub の css-to-pdf を使用し、iacute などのエンティティの使用もサポートします。

結果PDF

于 2014-08-10T19:55:26.577 に答える