2016-12-27 4 views
0
<tr><td style='border-bottom:1px solid #333;'><p style='font-family:arial; font-size:8px; margin:0px 0px 10px 0px; line-height:10px;'><strong>Customer Details </strong><br>Lawakush Kurmi<br>8285998390<br>[email protected]<br> </p></td><td valign='top' style='font-family:arial; font-size:8px; text-align:right; border-bottom:1px solid #333;'>&nbsp;</td></tr> 

Я пытаюсь преобразовать этот HTML код в формате PDF с использованием IText library.But границами дна: 1px не делать какую-либо границы в PDF. Пожалуйста, предложите наилучший вариант для рисования границ горизонтальных линий в pdf с помощью html.
ПРИМЕЧАНИЕ: Я использую HTMLWorker для преобразования HTML в PDF-страницу.тд границы, граница дно не печатает в формате PDF с использованием библиотеки IText

+0

Поведение, которое вы описываете, характерно для устаревшего «HTMLWorker». Вместо этого вы должны использовать XML Worker. На данный момент я не рассматриваю этот вопрос, потому что вы не показываете, что используете, 'HTMLWorker' или XML Worker. См. Http://developers.itextpdf.com/faq/category/parsing-xml-and-xhtml и узнайте, что границы таблиц работают. –

+0

Да, я использую HTMLWorker, это моя ошибка. Но факт заключается в том, что HTMLWorker не поддерживает границы tb и так много атрибутов html. Итак, можете ли вы предложить мне лучший способ конвертировать html в pdf с библиотекой с открытым исходным кодом. –

+0

Я отправил ответ, который доказывает, что мой предыдущий комментарий верен. XML Worker iText поддерживает 'border' в CSS. Вы подтверждаете, что использование «HTMLWorker» является ошибкой, и я объяснил, что «HTMLWorker» был оставлен в пользу XML Worker, поэтому почему вы не используете XML Worker? –

ответ

1

Позвольте мне повторно использовать код из iTextSharp add (css style or a css file) and download pdf file и немного изменить некоторые значения:

public static final String CSS = "th { border-top: 5px solid green; } " 
    + "td { font-size: 10pt; border-color: gray; border: 3px}"; 
public static final String HTML = "<html><body><table class='table-bordered'>" 
    + "<thead><tr><th>Customer Name</th><th>Customer's Address</th> </tr></thead>" 
    + "<tbody><tr><td> XYZ </td><td> Bhubaneswar </td></tr>" 
    + "<tr><td> MNP </td><td> Cuttack </td></tr></tbody>" 
    + "</table></body></html>"; 

/** 
* @param file 
* @throws IOException 
* @throws DocumentException 
*/ 
public void createPdf(String file) throws IOException, DocumentException { 
    Document document = new Document(); 
    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(file)); 
    document.open(); 


    CSSResolver cssResolver = new StyleAttrCSSResolver(); 
    CssFile cssFile = XMLWorkerHelper.getCSS(new ByteArrayInputStream(CSS.getBytes())); 
    cssResolver.addCss(cssFile); 

    // HTML 
    HtmlPipelineContext htmlContext = new HtmlPipelineContext(null); 
    htmlContext.setTagFactory(Tags.getHtmlTagProcessorFactory()); 

    // Pipelines 
    PdfWriterPipeline pdf = new PdfWriterPipeline(document, writer); 
    HtmlPipeline html = new HtmlPipeline(htmlContext, pdf); 
    CssResolverPipeline css = new CssResolverPipeline(cssResolver, html); 

    // XML Worker 
    XMLWorker worker = new XMLWorker(css, true); 
    XMLParser p = new XMLParser(worker); 
    p.parse(new ByteArrayInputStream(HTML.getBytes())); 
    document.close(); 
} 

Результирующий PDF выглядит следующим образом:

enter image description here

Если вы посмотрите на CSS, вы видите что мы определили границу для тега <th> как border-top: 5px solid green; и границы для тега <td> как font-size: 10pt; border-color: gray; border: 3px. Это доказывает, что iText поддерживает CSS для границ таблицы.

+0

Привет, я скопировал ваш же код, но все же border-top не работает, я также могу поделиться с вами снимком экрана. Итак, можете ли вы предложить мне исходную проблему, почему границы и нижний край не работают. Для получения дополнительной информации моя конфигурация системы: OS: ubuntu, java-версия: 1.8, тип проекта maven (Dropwizard framework) –

+1

Возможно, вы не используете последнюю версию iText и XML Worker. –

+0

Я использую xmlworker-версию 5.5.3 –