2015-03-27 2 views
0

Код ниже создаст PDF-код из HTML. Проблема в том, что при маркировке документа теги TH записываются в PDF как TD. В любом случае, чтобы теги в формате PDF отображались как TH?iTextSharp проанализирует HTML-таблицу, совместимую с HTML, до 508

  string html = @"<table> 
          <tr> 
           <TH> header1 </TH> 
           <TH> header2 </TH> 
           <TH> header3 </TH> 
          </tr> 
          <tr> 
           <td> col 1</td> 
           <td> col 2</td> 
           <td> col 3</td> 
          </tr> 
         </table>"; 

     FileStream fs = new FileStream(@"C:\\test.pdf", FileMode.Create); 
     TextReader reader = new StringReader(html); 

     Document document = new Document(PageSize.A4, 30, 30, 30, 30); 

     PdfWriter writer = PdfWriter.GetInstance(document, fs); 
     writer.SetTagged(); 

     writer.SetPdfVersion(PdfWriter.PDF_VERSION_1_7); 

     document.Open(); 


     XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, reader); 
     document.Close(); 

     fs.Close();` 
+0

Попробуйте положить первый 'элемент' ' в ', а другой '' в '' элемент , как http://www.w3schools.com/tags/tag_thead.asp – xanatos

+0

Я просто попытался что без везения, метод iTextSharp ParseXHtml даже не распознал тег, и в результате его даже не добавили в PDF – user2936735

+0

. Я создал билет на трекер для оплаты, чтобы кто-то мог взглянуть. Если у вас есть учетная запись в трекер проблема, сообщите мне, чтобы я мог добавить вас в качестве наблюдателя в этот билет, чтобы вы были информированы о прогрессе. –

ответ

2

Мы добавили правильную маркировку элемента TH. Изменения будут включены в следующий выпуск iText XMLWorker. Как правило, XMLWorker не используется для создания правильно помеченного PDF-файла. Но XMLWorker использует базовую теговую привязку iText Core, а TD - роль по умолчанию для всех типов ячеек таблицы.

0

Функциональность, которую вы хотите, не поддерживается в релизе, который вы используете.

Пожалуйста, обратите внимание на today's update of the TableData class in XML Worker:

@@ -97,6 +99,10 @@ 
       if (direction != PdfWriter.RUN_DIRECTION_DEFAULT) { 
        cell.setRunDirection(direction); 
       } 
+ 
+  if (HTML.Tag.TH.equalsIgnoreCase(tag.getName())) { 
+   cell.setRole(PdfName.TH); 
+  } 
     try { 
      HtmlPipelineContext htmlPipelineContext = getHtmlPipelineContext(ctx); 
      cell = (HtmlCell) getCssAppliers().apply(cell, tag, htmlPipelineContext); 

Это устраняет проблему в IText. Теперь планируется перенос на iTextSharp. Исправление будет в следующей версии.

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