我在.net中编写代码来制作发票。首先,我将html代码分配给stringbuilder,然后将其传递给PDF转换器。我使用内联css样式style='width: 100%;
,页面宽度标记工作正常,但当我使用font-family: 'Times New Roman';
时,它不会显示在输出PDF文件中。
我想在输出pdf文件中添加样式字体和图像。
protected void GenerateInvoicePDF(object sender, EventArgs e)
{
using (StringWriter sw = new StringWriter())
{
using (HtmlTextWriter hw = new HtmlTextWriter(sw))
{
StringBuilder sb = new StringBuilder();
sb.Append("<table style='width: 100%; font-family: 'Times New Roman'; -fs-pdf-font-embed: embed; -fs-pdf-font-encoding: Identity-H;'>");
sb.Append("<tr><td>INVOICE #00007654345</td>");
sb.Append("<tr><td colspan='2'></td></tr>");
sb.Append("<td style='text-align: right;font-family: 'Times New Roman'; -fs-pdf-font-embed: embed; -fs-pdf-font-encoding: Identity-H;'>Senor John<br />55th Road, CoolVill<br />654554 - ARR<br /><br />+1 123 4567 8910<br />e-mail</td>");
sb.Append("</tr><tr><td colspan='2'></td></tr></table>");
//Export HTML String as PDF.
StringReader sr = new StringReader(sb.ToString());
Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
PdfWriter writer = PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
pdfDoc.Open();
htmlparser.Parse(sr);
pdfDoc.Close();
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=Invoice_" + orderNo + ".pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Write(pdfDoc);
Response.End();
}
}
}
BTW:我首先用inline data
使用HTMLWriter编写HTML页面而不是将其转换为pdf文件我是否可能在HTMLWriter中使用所有html组件,即引导程序,图像或样式....?
或者只是忘记所有这些事情并开始使用Crystal Reports来发票制作......?
答案 0 :(得分:2)
您要使用style
开头的单引号结束Times New Roman
的属性。
注意如果将其视为html
,它的呈现方式<table style='width: 100%; font-family: 'Times New Roman'; -fs-pdf-font-embed: embed; -fs-pdf-font-encoding: Identity-H;'>
您需要使用双引号并将其转义。
sb.Append("<table style='width: 100%; font-family: \"Times New Roman\"; -fs-pdf-font-embed: embed; -fs-pdf-font-encoding: Identity-H;'>");
这将呈现为
<table style='width: 100%; font-family: "Times New Roman"; -fs-pdf-font-embed: embed; -fs-pdf-font-encoding: Identity-H;'>