Frage

Ich bin mit iTextSharp HTML in PDF konvertieren und es scheint nicht mit absolut positionierten Elementen zu arbeiten. Zum Beispiel habe ich diese HTML-Datei:

<html>
<body>
    <p style="position: absolute; left: 10px; top: 100px; width: 50px;">Hello World</p>
</body>
</html>

Der Text wird nicht korrekt in der PDF-Datei positioniert. Wissen Sie, ob es möglich ist, absolut positionierten Elemente zu haben, wenn HTML in PDF konvertieren? Jede freie Lösung (iTextSharp oder andere), die dies ermöglicht es würde sehr geschätzt werden.

Hier ist der Code, den ich mit der Umwandlung mit iTextSharp auszuführen:

class Program
{
    static void Main(string[] args)
    {
        Document document = new Document(PageSize.A4);
        using (Stream output = new FileStream("out.pdf", FileMode.Create, FileAccess.Write, FileShare.None))
        using (Stream htmlStream = new FileStream("input.htm", FileMode.Open, FileAccess.Read, FileShare.Read))
        using (XmlTextReader reader = new XmlTextReader(htmlStream))
        {
            PdfWriter.GetInstance(document, output);
            HtmlParser.Parse(document, reader);
        }
        Process.Start(@"C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe", "out.pdf");
    }
}        

EDIT:

Nach einer weiteren Untersuchung scheint es, dass iTextSharp HTML zu PDF-Konvertierung Fähigkeit zu einigen sehr einfachen HTML-Dokumente beschränkt ist. Es gibt ein schönes Java-Projekt Flying Saucer genannt, die komplexe HTML-Dokumente verarbeitet. Also versuchte ich es mit IKVM verwenden und es funktionierte sehr gut. Das einzige Problem ist, dass es fühlt sich irgendwie eine schmutzige Lösung. Hinzufügen von 31MB von Assembler-Code für HTML zu PDF Konvertierung scheint ziemlich viel. Gibt es eine bessere und „frei“ Alternativen dieses Szenario zu behandeln.

War es hilfreich?

Lösung

entschied ich mich schließlich zu benutzen xhtmlrenderer . Es ist meine Bedürfnisse perfekt passt, es hat viele Funktionen und es war in der Lage, richtig jede meiner HTML-Dateien zu machen.

zur Zeit Da es nur eine JAVA-Version hat musste ich die Gläser in eine .NET-Assembly konvertieren mit IKVM .

Andere Tipps

Angenommen, Sie auf Windows verfügbar sind, wie etwa die kostenlose PDFCreator über COM oder die Befehlszeile HTML in PDF über Internet Explorer Rendering-Engine zu machen?

Es gibt viele Automatisierungs Beispiele im Verzeichnis C: \ Programme \ PDFCreator \ COM \ Ordner, wenn PDFCreator installiert ist

Mit ikvmc auf den JAR-Dateien in der binären Verteilung zeigte mir eine Menge Warnungen von Klassen, die nicht durchgeführt werden können. die iKVM Kernbibliotheken nach auch mit der Tatsache zu tun, dass Flying Saucer zielt auf Java-Objekte, lief ich in der folgenden Ausnahme:

`Cannot load AWT toolkit: ikvm.awt.NetToolkit, IKVM.AWT.WinForms, Version=0.40.0.1, Culture=neutral, PublicKeyToken=13235d27fcbfff58`

und das war nur von der Ausführung:

`ITextRenderer toRender = new ITextRenderer();`

Welche scheint das Hauptobjekt von Flying Saucer verwendet werden. Können Sie einige Quelle für zur Verfügung stellen, wie Sie es verwendet?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top