显示页眉/页脚和HTML表格网格线[HTML到PDF生成使用iTextSharp]
本文关键字:HTML PDF iTextSharp 网格线 显示 表格 | 更新日期: 2023-09-27 18:20:55
我创建了一个代码,用于从HTML文件中准备PDF。我的问题是生成的PDF没有显示HTML表的边框。我没有使用任何CSS文件,所有的竖框都是内联编写的。下面是我的HTML示例。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<table cellpadding="0" cellspacing="0" border="0" width="100%" style=" font-family:'Times New Roman', Times, serif; font-size:12px; margin:20px 0px; border:10px solid #000; color:#000;">
<tr>
<td width="40%" align="center"><img src="[LOGOIMAGE]" alt="logo" /></td>
<td width="30%" align="center" style="border-left:1px solid #000;">June, 26 2013<br />page 1 of 3</td>
<td width="30%" align="center" style="border-left:1px solid #000;">123456<br />Name</td>
</tr>
</table>
</body>
</html>
我还尝试将边界宽度增加到10px,因为在谷歌搜索时,我发现其他一些开发人员也面临同样的问题,并尝试解决这个问题,但这对我来说不起作用。
我使用以下代码生成PDF。
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=Details.pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
// Document d = new Document(new Rectangle(100f, 300f));
var doc = new Document(PageSize.A4, 50, 50, 25, 25);
// Create a new PdfWriter object, specifying the output stream
var output = new MemoryStream();
// var writer = PdfWriter.GetInstance(doc, output);
string path = Server.MapPath("pdfs");
PdfWriter.GetInstance(doc, new FileStream(path + "/doc3.pdf", FileMode.Create));
PdfWriter.GetInstance(doc, Response.OutputStream);
doc.Open();
string contents = File.ReadAllText(Server.MapPath("myfile.html"));
contents = contents.Replace("[LOGOIMAGE]", Server.MapPath("App_Data/images/logo.jpg"));
var parsedHtmlElements = HTMLWorker.ParseToList(new StringReader(contents), null);
// Enumerate the elements, adding each one to the Document...
foreach (var htmlElement in parsedHtmlElements)
doc.Add(htmlElement as IElement);
doc.Close();
Response.Write(doc);
Response.End();
如果您更改border="1",它们就会出现。