2016-12-09 2 views
0

Ich muss einzelne pdf mit wenigen HTML-Seiten erstellen. Tatsächlich haben HTMLs Tabellen. Jede HTMLs (Tabelle) hat eine unterschiedliche Anzahl von Spalten, daher sollte sie PDF mit unterschiedlichen oriontations exportieren.itextsharp html zu pdf mit verschiedenen oriontation

ZB:

  • htmlPg1 -> 4 Spalten
  • htmlPg2 -> 15 Spalten

Nach oben beschriebenen Szenario ist es erforderlich, die erste HTML-Seite mit Porträt kommt Modus und zweites HTML mit Landschaft.

in unten 'Codeblock 02' lst ist eine Liste, die 2 Attribute hat. (Siehe 'Codeblock 01') Wenn die lst Oriantation 0 zugewiesen ist, wird dies als Querformat und ansonsten als Hochformat betrachtet.

Codeblock 01

public class PdfExportDoc 
{ 
    public int Oriantation { get; set; } 
    public string Html { get; set; } 
} 

Alle korrekt mit Ausnahme der Orientierung arbeiten.

Codeblock 02

using (var ms = new MemoryStream()) 
     { 
      using (var doc = new Document()) 
      { 
       using (var writer = PdfWriter.GetInstance(doc, ms)) 
       { 
        doc.Open();      

        foreach (var ele in lst) 
        { 
         using (var srHtml = new StringReader(ele.Html)) 
         { 
          if (ele.Oriantation == 0) 
          { 
           doc.SetPageSize(PageSize.A4.Rotate()); 
          } 
          else 
          { 
           doc.SetPageSize(PageSize.A4); 
          } 
          XMLWorkerHelper.GetInstance().ParseXHtml(writer, doc, srHtml); 
          doc.NewPage();         
         } 
        } 
        doc.Close(); 
       } 
      } 
      bytes = ms.ToArray(); 
     } 

htmlPg1 Daten für 2 Seiten gezogen und htmlPg2 hat nur einen. So kommen die Daten als pdf.

Image 01 (Actually Data comes like this. But this is wrong)

Aber eigentlich brauche ich die pdf wie diese.

enter image description here

zeigen Sie mir bitte eine Richtung, dies zu tun.

+0

Ich löschte meine Antwort. Wenn es für Sie nicht funktioniert hat, habe ich Ihre Frage nicht richtig interpretiert. Das heißt: Ich denke, meine Antwort war korrekt (ich bin der ursprüngliche Entwickler von iText), und wenn jemand anderes antwortet, denke ich, dass Sie die gleiche Antwort bekommen werden. –

Antwort

0

Das löste mein Problem. Ich verstehe deinen Standpunkt Bruno. Sie haben in Ihrer gelöschten Antwort gesagt, dass NewPage keine neue Seite hinzugefügt hat, wenn sie leer ist. Also habe ich doc.NewPage sowohl vor als auch nach dem Erstellen von paraseXHtml hinzugefügt. Wie auch immer, danke für deine vorherige Richtung.

    foreach (var ele in lst) 
         { 
          using (var srHtml = new StringReader(ele.Html)) 
          {        

           if (ele.Oriantation == 1) 
           { 
            doc.SetPageSize(PageSize.A4.Rotate()); 
           } 
           else 
           { 
            doc.SetPageSize(PageSize.A4); 
           } 
           doc.NewPage(); 
           XMLWorkerHelper.GetInstance().ParseXHtml(writer, doc, srHtml); 
           doc.NewPage(); 
          } 
         } 
Verwandte Themen