【问题标题】:Fonts don't load in the pdf viewer字体不会在 pdf 查看器中加载
【发布时间】:2016-08-04 15:47:32
【问题描述】:

我目前在使用 PdfSharp/MigraDoc 和 pdf 查看器时遇到问题。我使用EZFontResolver made by Thomas 能够生成带有自定义字体的pdf。不幸的是,pdf 查看器无法呈现字体,我不知道为什么。我在 Thomas 的博客上看到了一个错误 described by Travis,它指出,如果 EZFontResolver 没有多个粗体/斜体符号识别(例如“fontname|b|b”),那么 PdfDocumentRenderer.RenderDocument() 失败。关键是,当我尝试这样的事情时:

Document document = DdlReader.DocumentFromString(ddl);
_renderer = new DocumentRenderer(document);
_renderer.PrepareDocument();

比 EZFontResolver 被要求提供名称为“customfont|b|b”的字体(当我仅使用 PdfDocument.Save(...) 时不会发生这种情况)而不是“自定义字体”。

我的 pdf 查看器覆盖 DocumentViewer 并查看 FixedDocument 类实例。有趣的是,保存的 pdf 文件设置了所有字体,但预览无法做到这一点(这是我的大问题)。即使我使用解析器返回正确的字体,所有这些都会发生。

编辑:

ddl 是一个字符串,看起来像这样:

"\\document
[
  Info
  {
    Title = \"My file\"
    Subject = \"My pdf file\"
    Author = \"mikes\"
  }
]
{
  \\styles
  {
    Heading1 : Normal
    {
      Font
      {
        Name = \"My custom font\"
        Bold = true
      }
      ParagraphFormat
      {
        Alignment = Center
        SpaceBefore = \"0.5cm\"
        SpaceAfter = \"0.5cm\"
      }
    }

    header : Normal
    {
      Font
      {
        Name = \"My custom font\"
        Size = 6
      }
      ParagraphFormat
      {
        Alignment = Center
      }
    }

而当我删除 Travis 的 bug 修复时,_renderer.PrepareDocument() 中抛出异常(修复后,堆栈跟踪显示多个“|b”的来源也是离开那里)。

【问题讨论】:

    标签: c# wpf pdf pdfsharp migradoc


    【解决方案1】:

    模拟粗体和模拟斜体使用常规字体,但应用了转换。

    因此,如果 PDF 查看器不支持这些转换,模拟将无法工作。

    MigraDoc 附带的 DocumentViewer 不显示 PDF 文件,它显示 MigraDoc 文档。由于技术原因,它不能使用通过 IFontResolver 接口提供的字体。 EZFontResolver 是 IFontResolver 的一个实现。

    关于“customfont|b|b”:我不能说这是一个错误还是常规行为。如果您认为这是一个错误,请提供 MCVE(完整示例)。

    【讨论】:

    • 那么是否可以通过其他方式在 MigraDoc 文件中设置自定义字体?有了这个bug,我真的很难展示整个过程,但我会努力的。
    • MDDDL 文件描述了一个文档,任何字体都可以在这里“使用”。创建 PDF 文件的渲染器支持 EZFontResolver 使用的接口,您可以使用它来添加自定义字体。 DocumentViewer 使用的渲染器不支持 EZFontResolver - 您可以使用已安装的字体或 XPrivateFontCollection 进行 GDI 构建。 EZFontResolver 提供的字体将嵌入到 PDF 文件中,可供任何 PDF 查看器使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    • 2019-02-19
    • 2018-11-18
    • 2012-10-30
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多