2016-12-09 5 views
0

私はいくつかのhtmlページを使用して単一のpdfを作成する必要があります。実際にHTMLにはテーブルがあります。それぞれのHTML(テーブル)は異なる数の列を持っているため、差異のあるORiontationsでpdfをエクスポートする必要があります。itextsharp htmlから別のoriontationを持つpdf

例:

  • htmlPg1 - > 4列
  • htmlPg2 - > 15列

上記のシナリオによると、それは肖像画を持つ最初のHTMLページを起動したために必要とされますモードと2番目のhtmlと風景。

以下のコードブロック02 lstは、2つの属性を持つリストです。 (コードブロック01を参照してください) lstオリエンテーションに0が割り当てられている場合は、それは横向き、それ以外の場合は縦向きと見なされます。

コードブロック01

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

すべてが向きを除いて正しく動作しています。

コードブロック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データは、2ページのためにドラッグしhtmlPg2は一つだけあります。これはデータがpdf形式で提供される方法です。

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

しかし、実際に私はこのようなPDFファイルを必要としています。

enter image description here

私にこれを行うための方向性を提示してください。

+0

私は自分の答えを削除しました。それがあなたのために働かなかったら、私はあなたの質問を正しく解釈しなかった。これは言った:私は自分の答えは正しいと思う(私はiTextの元の開発者)、誰かが答えていると思う、私はあなたが同じ答えを得るだろうと思う。 –

答えて

0

これは私の問題を解決しました。 あなたはポイントブルーノを手に入れました。空白の場合、削除された答えでNewPageは新しいページを追加しないと言っています。そこで、paraseXHtmlの作成前後でdoc.NewPageを追加しました。どのようにあなたの以前の方向性に感謝します。

    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(); 
          } 
         } 
関連する問題