2013-07-11 71 views
6

Ho un requisito per creare un PDF di record XML. Penso che non ci sia modo di creare direttamente pdf da xml ma usando XSLT o XSL FO credo che possa essere fatto. Ho letto molti articoli cercando il modo migliore per farlo usando C#.Il modo migliore per creare PDF da XML XSLT in C#

-> Qual è l'approccio migliore durante questo? ogni esempio sarebbe davvero fantastico.

mio scenario:

ho XML che assomiglia:

<Products> 
    <Brand name="Test"> 
    <Quantity value="2/> 
    <Price value="$20"/> 
    </Brand> 
    <Brand name="Test2"> 
    <Quantity value="3/> 
    <Price value="$30"/> 
    </Brand> 
    <Brand name="Test3"> 
    <Quantity value="4/> 
    <Price value="$40"/> 
    </Brand> 
</Products> 

Come si crea un file PDF che avrà una tabella che mostra tutte queste informazioni?

So che ci sono molte domande simili come questa, ma la maggior parte sono obsolete. Qualsiasi aiuto davvero apprezzato.

+0

Bene, cosa hai provato? Visto che parli di FO: hai * provato * FO? Ad esempio fonet.codeplex.net? Nota che FO non è banale: devi fare molto più lavoro che vorresti per HTML, ad esempio. Inoltre: hai considerato uno qualsiasi degli strumenti di conversione da html a PDF? (Ho usato molto HTMLDOC, alcuni anni fa). O uno qualsiasi degli strumenti di creazione PDF di basso livello? –

+0

duplicato http://stackoverflow.com/questions/1674257/using-xml-xslt-and-c-sharp-to-create-an-rtf-or-pdf – Mennan

+0

Come ho già detto sono per lo più obsoleti l'ultimo aggiornamento per FO Era il 2009. Sto cercando qualcosa che possa essere facilmente utilizzato in C#, e può essere preso come miglior strumento per automatizzare la creazione di pdf attraverso il codice. Ho dato un'occhiata a http://report.sourceforge.net/, http://itextpdf.com/terms-of-use/index.php, http://www.pdfsharp.com/PDFsharp/ e pochi altri ma ho bisogno feedback da coloro che l'hanno usato. – Bravo11

risposta

5

In passato ho utilizzato una libreria commerciale denominata Ibex PDF Creator per generare documenti PDF da dati XML utilizzando lo standard XSL-FO che ha funzionato molto bene.

Ecco un esempio di come avrei usato: i dati

XML:

<DocumentRoot> 
    <!-- Some content --> 
</DocumentRoot> 

XSL-FO di layout:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="/DocumentRoot"> 
     <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:ibex="http://www.xmlpdf.com/2003/ibex/Format"> 
      <ibex:properties 
       title="Some document" 
       subject="" 
       author="" 
       keywords="" 
       creator="" /> 
      <fo:layout-master-set> 
       <fo:simple-page-master master-name="A4" page-width="210mm" page-height="297mm"> 
        <fo:region-body margin-bottom="1cm" margin-top="3cm"/> 
        <fo:region-before extent="20mm"/> 
        <fo:region-after extent="8mm"/> 
        <fo:region-start extent="1mm"/> 
        <fo:region-end extent="1mm"/> 
       </fo:simple-page-master> 
      </fo:layout-master-set> 
     </<fo:root> 
    </xsl:template> 
</xsl:stylesheet> 

Generazione del documento PDF in .NET:

var data = new MemoryStream(dataBytes); 
var layout = new MemoryStream(layoutBytes); 
var pdf = new MemoryStream(); 

// Using the Ibex PDF Creator .NET API 
var doc = new FODocument(); 
doc.generate(data, layout, pdf); 

Spero che questo aiuti.

+0

Grazie Enrico, suggerisci eventuali alternative opensource? – Bravo11

+0

Personalmente, non ho provato alcuna alternativa open source per XSL-FO. Poiché il progetto a cui stavo lavorando riguardava la costruzione di un prodotto, abbiamo scelto di utilizzare una libreria commerciale per la documentazione e il supporto. –

+0

Grazie per la tua risposta. Spero che questo mi aiuti anche io. – Bravo11

-1

È possibile creare file PDF da xml utilizzando Aspose.PDF per .NET API. Ho trovato il codice di esempio per transforming xml to pdf in C#/.NET sulla pagina di documentazione di Aspose per pdf.

1

Ho usato Apache Fop.bat in un metodo come questo. (usando System.Diagnostics)

private void XML_TO_PDF_VIA_FOP(String xmlName, String xsltName, String pdfName) 
    { 
     String batchFile = "XSLT\\FOPv1\\fop.bat";  
     String xmlFile = xmlName; 
     String xsltFile = "XSLT\\" + xsltName; 
     String pdfFile = pdfName; 
     Process.Start(batchFile, " -xml " + xmlFile + " -xsl " + xsltFile + " -pdf " + pdfFile); 
    } 
+1

come creare Fop.bat?Download – Kalanamith

+0

da (https://xmlgraphics.apache.org/fop/) – gman