0

我正在将 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 设置Font-Family:Arial但问题是,当我看到 PDF-File 属性时,它说使用了 Helvetica。

我想我需要下载 Adob​​e Font Metric 文件(arial.afm 文件)并将这个字体系列(而不是arial.ttf)设置为与 pdf 一起使用。但我不知道该怎么做。

你能建议吗?

谢谢,

4

1 回答 1

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

就是这样。

于 2014-11-07T16:04:15.817 回答