2016-12-27 47 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> 

我想在PDF轉換這些HTML代碼,通過利用iText打印library.But底部邊框:1px的不畫任何邊界PDF格式。請建議什麼是使用html在pdf中繪製水平線邊界的最佳選擇。
注意:我使用HTMLWorker將HTML轉換爲PDF頁面。TD邊框,下邊框沒有在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

我發佈了一個答案,證明我以前的評論是正確的。 iText的XML Worker支持CSS中的'border'。您確認使用「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-version:1.8,項目類型maven(Dropwizard框架) –

+1

也許你沒有使用最新版本的iText和XML Worker。 –

+0

我正在使用xmlworker-version 5.5.3 –