字体系列不适用于PDF

时间:2014-11-06 10:55:30

标签: pdf itextsharp font-family xmlworker

我将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一起使用。但我不知道该怎么做。

你可以请一下建议吗?

谢谢,

1 个答案:

答案 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);

就是这样。