2016-12-09 1 views
0

나는 몇몇 html 페이지를 사용하여 단 하나 pdf를 창조 할 필요가있다. 사실 HTML에는 표가 있습니다. 각 HTML (테이블)의 열 수가 다르므로 차이가있는 PDF로 내보내기해야합니다.itextsharp 다른 오리온을 가진 pdf에

예 :

  • htmlPg1 -> 4 열은
  • 은 htmlPg2 -> 15 열

위의 시나리오에 따르면, 필요 초상화 최초의 HTML 페이지를 제공하는 풍경과 두 번째 HTML 및 모드.

아래 '코드 블록 02'lst은 2 개의 속성을 갖는 목록입니다.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(); 
          } 
         }