我将HTML转换为PDF,如下所示:
public const string PdfDocumentHeaderHtml = @"<!DOCTYPE html>
<html lang='en' xmlns='http://www.w3.org/1999/xhtml'>
<head>
<meta charset='utf-16' />
<title></title>
</head>
<body>
<table>
<tr>
<td colspan='3'>
<span Style='font-family:Arial;font-size:10pt;font-weight:bold;'>{0}</span>
<br/>
<br/>
<span class='pageHeaderText'>{1}</span>
</td>
<td colspan='1'>
<span><img src='' width='150' height='90' alt='NOS'/></span>
</td>
</tr>
</table>
</body>
</html>";
使用以下代码保存为PDF:
public override void OnCreatePDF(PdfWriter writer, Document document)
{
iTextSharp.text.FontFactory.Register(@"C:\Windows\Fonts\arial.ttf", "Arial");
base.OnCreatePDF(writer, document);
if (writer == null)
throw new ArgumentNullException("writer");
if (document == null)
throw new ArgumentNullException("document");
var headerHtml = string.Format(Constants.NosPdfDocumentHeaderHtml, Urn, Title);
var providers = new Dictionary<string, Object> { { HTMLWorker.IMG_BASEURL, string.Format(Constants.HeaderImageLocation, SiteUrlForHeaderImage) } };
List<IElement> htmlarraylist = HTMLWorker.ParseToList(new StringReader(headerHtml), null, providers);
foreach (IElement htmlElement in htmlarraylist)
{
document.Add(htmlElement);
document.Add(new LineSeparator((float)0.90, 100, new BaseColor(0, 112, 192, 0), 0, 0));
}
}
我想为PDF设置字体系列:Arial ,但问题是,当我看到PDF文件属性时,它说使用了Helvetica。 < / p>
我想我需要下载Adobe Font Metric文件( arial.afm文件)并设置此字体系列(而不是 arial.ttf )以与pdf一起使用。但我不知道该怎么做。
你可以请一下建议吗?
谢谢,
答案 0 :(得分:0)
在评论部分,您要求另外一种方法是将表结构添加到文档中。
PdfPTable
很容易。例如,如果我想创建一个包含3列的表,我会这样做:
PdfPTable table = new PdfPTable(3);
我想在页面的边距之间跨越100%的可用宽度,所以我这样做:
table.WidthPercentage = 100;
我希望第一列的宽度是第二列和第三列的两倍,所以我这样做:
table.SetWidths(new int[]{2, 1, 1});
现在我添加单元格:
PdfPCell cell;
cell = new PdfPCell(new Phrase("Table 1"));
cell.Colspan = 3;
table.AddCell(cell);
cell = new PdfPCell(new Phrase("Cell with rowspan 2"));
cell.Rowspan = 2;
table.AddCell(cell);
table.AddCell("row 1; cell 1");
table.AddCell("row 1; cell 2");
table.AddCell("row 2; cell 1");
table.AddCell("row 2; cell 2");
最后,我将表格添加到Document
:
document.Add(table);
就是这样。