在将html转换为pdf时,ABCPdf嵌入了自定义字体无效

时间:2015-08-26 05:48:18

标签: fonts abcpdf

我正在尝试使用ABCPdf从html渲染PDF。 css包含自定义字体。我按照说明(Using @font-face with ABCPDF? Or other way of getting fonts into PDF?EmbedFont Function)进行了操作,并通过以下方式取得了一定程度的成功:

  1. 在生成PDF并重新启动的服务器上安装字体。
  2. 删除所有@ font-face css命令。
  3. 调用EmbedFont方法。如下。

    pdfDoc.Font = pdfDoc.EmbedFont("icomoon Regular", LanguageType.Latin);
    pdfDoc.Font = pdfDoc.EmbedFont("Open Sans Bold", LanguageType.Latin);
    pdfDoc.Font = pdfDoc.EmbedFont("Open Sans Bold Italic", LanguageType.Latin);
    pdfDoc.Font = pdfDoc.EmbedFont("Open Sans Extrabold", LanguageType.Latin);
    pdfDoc.Font = pdfDoc.EmbedFont("Open Sans Extrabold Italic", LanguageType.Latin);
    pdfDoc.Font = pdfDoc.EmbedFont("Open Sans Italic", LanguageType.Latin);
    pdfDoc.Font = pdfDoc.EmbedFont("Open Sans Light", LanguageType.Latin);
    pdfDoc.Font = pdfDoc.EmbedFont("Open Sans Light Italic", LanguageType.Latin);
    pdfDoc.Font = pdfDoc.EmbedFont("Open Sans Regular", LanguageType.Latin);
    pdfDoc.Font = pdfDoc.EmbedFont("Open Sans Semibold", LanguageType.Latin);
    pdfDoc.Font = pdfDoc.EmbedFont("Open Sans Semibold Italic", LanguageType.Latin);
    pdfDoc.Font = pdfDoc.EmbedFont("Sanchez Italic", LanguageType.Latin);
    pdfDoc.Font = pdfDoc.EmbedFont("Sanchez Regular", LanguageType.Latin);
    
  4. 我使用Gecko引擎和pdfDoc.AddImageHtml(html,false,documentWidth,true)来渲染pdf

  5. 如果我在安装了字体的计算机上查看PDF,它可以正常工作。

    如果我在安装了字体的计算机上查看PDF,则只有第一种字体可用(icomoon Regular)。为什么呢?

2 个答案:

答案 0 :(得分:0)

我实际上最终不需要字体,但我相信这个问题可以通过设置

来解决
pdfDoc.HtmlOptions.FontProtection = false;

答案 1 :(得分:0)

我设法通过添加这两个选项来实现这一目标:

doc.HtmlOptions.FontEmbed = true;
doc.HtmlOptions.FontProtection = false;

我只有一种特殊字体(icomoon)。