Webprogrammierung

iText Html to Pdf Converter

iText ist eine OpenSource Projekt, welches ermöglicht nicht nur HTML in PDF zu konvertieren, sondern auch mittels Klassen ein beliebiges PDF zu erstellen. Man kann jedoch auch den umgekehrten Weg einschlagen und vom PDF ein HTML erstellen lassen.

Leider gibt es viele verschiedene Versionen von iText, dadurch stimmen die meisten Tutorials nicht zusammen. Wenn man Zeit hat, ist es jedoch eine sehr gute Lösung.

Hier zum download

Hier ein kleines Tutorial von mir:

Header und Footer einfügen in jede PDF-Seite:

Um einen Footer oder Header einzufügen müsst ihr die Funktion OnEndPage() der Klasse PdfPageEventHelper überschreiben

Dann müsst ihr noch das event euren PdfWriter hinzufügen

  public class _events : PdfPageEventHelper {         private Image _img;         private Image _footerImg;         public _events() {             _img = Image.GetInstance(@"\logo_de.jpg");             _footerImg = Image.GetInstance(@"\footer_de.png");             /*             * scale image to fit available space, if needed             */             //_img.ScalePercent(50);         }         // Definition vom Header und Footer         public override void OnEndPage(PdfWriter writerDocument document) {             //document.Add(new Phrase("test"));             Rectangle page = document.PageSize;             // create two column table;             //=====  HEADER             PdfPTable head = new PdfPTable(1);             head.TotalWidth = page.Width;              //add image; PdfPCell() overload sizes image to fit cell             PdfPCell c;// = new PdfPCell(_img, false);             c = new PdfPCell(_imgfalse);             c.VerticalAlignment = Element.ALIGN_TOP;             c.HorizontalAlignment = Element.ALIGN_RIGHT;             c.Border = Rectangle.NO_BORDER;             head.AddCell(c);             head.WriteSelectedRows(                 0, -1, // first/last row; -1 flags all write all rows                 0, // left offset                 // ** bottom** yPos of the table                 page.Height ,               writer.DirectContent             );             //====== FOOTER ===========================================             PdfPTable footer = new PdfPTable(1);             footer.TotalWidth = page.Width;             //add the collection to the document             // header text             c = new PdfPCell(_footerImg);             c.Border = Rectangle.NO_BORDER;             c.VerticalAlignment = Element.ALIGN_BOTTOM;             c.HorizontalAlignment = Element.ALIGN_CENTER;             footer.AddCell(c);             footer.WriteSelectedRows(               0, -1,          // first/last row; -1 flags all write all rows               0,                 footer.TotalHeight + 15,               writer.DirectContent             );         }  public void GeneratePDF(){             //create document          //   Response.Write(Server.MapPath("."));        �             try {                 Document document = new Document(PageSize.A4,40,40,120,50);                 //writer - have our own path!!!                  PdfWriter writer = PdfWriter.GetInstance(document, >new FileStream(@"D:\Projekte\Portale\Suedtirolcom\suedtirolcom\Pdf\" + "parsetest.pdf"FileMode.Create));                     // the object required to write to a (output) Stream                     //PdfWriter.GetInstance(document, ms);                     _events e = new _events();                     // INSTEAD DO THIS TO SAVE IN-MEMORY COPY                     //PdfWriter writer = PdfWriter.GetInstance(document,  Response.OutputStream);                     writer.PageEvent = e;                     document.Open(); //document.close(); . . . }

2 Comments

  • Manfred

    1

    Hallo Stefan Hast Du auch eine Lösung für HTML -> PDF wenn im HTML Bilder drin sind? Bei mir sind ab Version 5.0.2.0 von iText immer die Bilder mit der linken unteren Ecke im PDF eingefügt anstelle der linken oberen Ecke - somit sind die Bilder immer über dem oberen Text oder im Extremfall, wenn das HTML mit einem Bild beginnt ausserhalb des oberen PDF Randes. Hast Du dazu irendwo eine Lösung gesehen? Besten Dank Manfred

  • Tolpeit

    2

    Leider habe ich folgendes Problem noch nicht gehabt. Werde mich erkunden und dir die Lösung posten lg stefan

Leave a reply

Fields marked with * are required