Sie können auch versuchen, XSL:FO zu verwenden. XSL:FO ist ein dokumentierter Standard für die Beschreibung des Seitenlayouts: http://www.w3.org/TR/xsl/#fo-section .
Ich hatte bei zwei Projekten Erfolg bei der Erstellung von Dokumenten, indem ich ein XML-Schema erstellt habe, das den Inhalt des "PDF" definiert. Anschließend verwende ich das XSD-Tool (von Microsoft), um eine Klasse zu erzeugen, die dieses Dokument darstellt. Anschließend ordne ich meine Daten dieser Struktur zu, serialisiere die ausgefüllte Klasse in XML zusammen mit einem XSL-Stylesheet, das definiert, wie diese Daten in FO umgewandelt werden sollen, und übergebe sie an einen FO-Formatierer. Als Formatierer habe ich Xml2Pdf von Alt-Soft mit Erfolg verwendet. Es gibt noch ein paar andere. Es gibt einige Tools, die bei der Erstellung des XSL-zu-FO-Stylesheets helfen (z. B. Stylusstudio und XmlSpy), aber ich empfehle, die FO-Konstrukte zu lernen, da die Tools anscheinend aufgeblähte Stylesheets erzeugen. FO ist vergleichbar mit HTML (wobei ein P-Tag in FO ein BLOCK-Tag ist), kann aber knifflig sein. Das Schöne an FO ist, dass einige Formatierer die Konvertierung in andere Formate, wie Word, HTML usw., unterstützen.
Andere Optionen:
-
iTextSharp (C#-Portierung von iText). Ich habe gerade angefangen, darüber zu lesen. Open Source und kostenlos. Ich glaube nicht, es gibt keine "Templating" mit diesem unterstützt, aber ich könnte falsch sein über das.
-
SQL Server-Berichtsdienste. Vorausgesetzt, Ihre Rechnungsdaten liegen in einem Format vor oder können in ein Format gebracht werden, das von den Berichtsdiensten (SQL Server, Web Service usw.) gelesen werden kann, definieren Sie das Layout in SSRS und veröffentlichen es dann auf dem Berichtsserver. Verwenden Sie die SSRS-Webdienste oder die Ausführung von Abfrageparametern, um den Bericht auszuführen und als PDF-Datei ausgeben zu lassen.