2015-09-15 4 views
0

HTML-код:iTextSharp XMLWorker не работает с css border-collapse: collapse;

<html> 
    <head> 
     <title>test</title> 
     <style type="text/css"> 
      table { 
       border-collapse: collapse; 
      } 
       table tr td { 
        border: 2px solid black; 
       } 
     </style> 
    </head> 
    <body> 
     <table> 
      <tr> 
       <td>row 1 cell 1</td> 
       <td>row 1 cell 2</td> 
      </tr> 
      <tr> 
       <td>row 2 cell 1</td> 
       <td>row 2 cell 2</td> 
      </tr> 
     </table> 
    </body> 
</html> 

Но в выходном файле PDF, внутренние границы в два раза ширину. Я использую последнюю версию iTextSharp 5.5.6 & XML Worker 5.5.6.

У кого-нибудь есть идеи, почему?

Спасибо! Leo

+0

Я уверен, что функция CSS 'border-collapse' не поддерживается. Как документировано, XML Worker не является инструментом URL2PDF. Это простой инструмент HTML2PDF, который позволяет людям создавать простые шаблоны в HTML для создания отчетов в формате PDF. Это означает, что у вас есть поддержка большого количества HTML и CSS-тегов и атрибутов, но не для всех. –

+0

Ну, их сайт четко заявил, что эта функция CSS поддерживается как для ячейки, так и для таблицы. Вот ссылка: http://demo.itextsupport.com/xmlworker/itextdoc/CSS-conformance-list.htm Но я нашел простую обходную проблему для решения этой проблемы. – user538220

+0

@ user538220 Не могли бы вы поделиться этим обходным путем с остальными из нас? Благодаря! –

ответ

1

border-collapse: collapse; похоже, что на самом деле не обрушивают границы, а просто перемещают их очень близко друг к другу, если вы внимательно посмотрите, вы увидите тонкую линию посередине жирной границы. Я мог видеть только его, когда мой PDF открывается в Chrome, но не в моем PDF-читателя .. Вот скриншот, показывающий, что я имею в виду:

fine line in fat border

Так что я в конечном итоге установив верхнюю и левую границы стол, а правая и нижняя границы ячеек в таблице, которая дала мне нужную тонкую линию только 1px вместо 2px, (AKA: только одну строку, вместо двух линий)

.tableborder { 
    border-collapse: collapse; 
    border-spacing: 0; 
    border-top-color: black; 
    border-top-width: 1px; 
    border-top-style: solid; 
    border-left-color: black; 
    border-left-width: 1px; 
    border-left-style: solid; 
} 

    .tableborder th, .tableborder td { 
     border-collapse: collapse; 
     border-spacing: 0; 
     border-right-color: black; 
     border-right-width: 1px; 
     border-right-style: solid; 
     border-bottom-color: black; 
     border-bottom-width: 1px; 
     border-bottom-style: solid; 
    } 

Не довольно, но он выполняет эту работу ;-)

Be передняя:

before

После:

after

@user538220, вы упомянули простой обходной путь в своем комментарии, это было что-то вроде этого, или это было лучшим решением?

+0

Я думаю, ваше решение тоже работает. Я бы принял это как ответ. Обходной путь, о котором я говорил, прост. Установите границу таблицы равным 1 и обе td, th границы равны 0.5. Это не идеальный, но менее CSS-код. – user538220

0

ниже код работал для меня.

table th,td { 
border-right-width: 0px; 
border-bottom-width: 0px; 
border-left-width: 0px; 
border-top-width: 0px; 
} 
Смежные вопросы