2016-12-09 3 views
0

Мне нужно создать одиночный pdf, используя несколько html-страниц. На самом деле HTML имеют таблицы. Каждый HTML (таблица) имеет разное количество столбцов, поэтому ему необходимо экспортировать pdf с разным oriontations.itextsharp html to pdf с различным oriontation

Eg:

  • htmlPg1 -> 4 колонки
  • htmlPg2 -> 15 столбцов

Согласно выше сценарию, это необходимо, чтобы придумывает первый HTML страницу с портретом режим и второй 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 не добавит новую страницу, если она пуста. Поэтому я добавил doc.NewPage как до, так и после создания paraseXHtml. Какая благодарность за ваше предыдущее направление.

    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(); 
          } 
         } 

 Смежные вопросы

  • Нет связанных вопросов^_^