2013-07-11 14 views
6

Mam wymóg utworzenia pliku PDF z rekordami XML. Myślę, że nie ma sposobu, aby bezpośrednio stworzyć pdf z xml, ale używając XSLT lub XSL FO wierzę, że można to zrobić. Czytałem wiele artykułów, szukając dobrego sposobu na zrobienie tego przy pomocy C#.Najlepszy sposób na tworzenie plików PDF z XML XSLT w C#

-> Jakie jest najlepsze podejście podczas tego? każdy przykład byłby naprawdę świetny.

Moja Scenariusz:

Mam XML, który wygląda tak:

<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> 

Jak mogę utworzyć plik PDF, który będzie mieć tabelę pokazującą wszystkie te informacje?

Wiem, że istnieje wiele podobnych pytań, ale większość z nich jest nieaktualna. Każda pomoc naprawdę doceniona.

+0

Cóż, co próbowaliście? Odkąd wspomniałeś FO: czy * wypróbowałeś * FO? Na przykład fonet.codeplex.net? Zwróć uwagę, że FO nie jest trywialne - musisz zrobić o wiele więcej pracy niż HTML. Ponadto: czy rozważałeś jakieś narzędzia do konwersji html na PDF? (Używałem HTMLDOC dużo, kilka lat temu). Lub któreś z niskopoziomowych narzędzi do tworzenia plików PDF? –

+0

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

+0

Jak już wspomniałem są one przeważnie nieaktualne ostatnia aktualizacja FO był w 2009 roku. Szukam czegoś, co można łatwo wykorzystać w języku C#, i może być traktowany jako najlepsze narzędzie do automatyzacji tworzenia plików PDF za pomocą kodu. Zajrzałem na http://report.sourceforge.net/, http://itextpdf.com/terms-of-use/index.php, http://www.pdfsharp.com/PDFsharp/ i kilka innych, ale potrzebuję informacje zwrotne od tych, którzy z niego korzystali. – Bravo11

Odpowiedz

5

W przeszłości używałem komercyjnej biblioteki o nazwie Ibex PDF Creator do generowania dokumentów PDF z danych XML przy użyciu standardu XSL-FO, który działał naprawdę dobrze.

Oto przykład tego, jak chciałbym go używać: dane

XML:

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

XSL-FO układ:

<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> 

Generowanie dokumentu PDF w .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); 

Mam nadzieję, że to pomoże.

+0

Dziękuję Enrico, czy sugerujesz jakieś alternatywne źródła alternatywne? – Bravo11

+0

Osobiście nie próbowałem żadnej alternatywy open source dla XSL-FO. Ponieważ projekt, nad którym pracowałem, dotyczył budowy produktu, zdecydowaliśmy się na komercyjną bibliotekę na dokumentację i wsparcie. –

+0

Niesamowite dzięki za odpowiedź. Mam nadzieję, że to mi pomoże. – Bravo11

1

Użyłem Apache Fop.bat w taki sposób. (używając 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

jak stworzyć Fop.bat? – Kalanamith

+0

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

Powiązane problemy