代码之家  ›  专栏  ›  技术社区  ›  Malhotra

如何创建和使用自定义字体生成PDF文档

  •  1
  • Malhotra  · 技术社区  · 9 年前

    我想用附加符号扩展传统MS Windows字体包中的truetype字体,并使用它生成新的pdf文档。有可能吗?

    1 回复  |  直到 9 年前
        1
  •  2
  •   Malhotra    4 年前

    使用内置EUDC编辑器(Windows)设计自定义TrueType字体

    您可以使用任何能够处理 TrueType(TrueType) 打开类型 最简单和可用的是由Microsoft提供并随Windows一起提供的最终用户字符编辑器。它被称为eudcedit,可以通过执行 造字程序 运行窗口中的命令(可通过按 Windows键+R ).编辑器启动,您现在可以使用它的图形工具设计自己的字符,并定义它们的代码。当你完成角色设计后,你可以选择 文件->字体链接 和按压 好啊 在调用的对话框中。

    从现在起,如果这些最终用户定义的字符实现了EUDC支持,那么许多文本编辑和查看应用程序都可以使用这些字符。如果他们使用Windows API显示文本,它将自动工作。

    我们将设计一些简单的字符,并在PDF生成例程中使用生成的字体。下图显示了字符编辑器窗口、代码分配和字体保存过程。 enter image description here

    分配的字符代码在前面的图像中突出显示,我们使用默认分配的字符,但可以使用任何允许的代码。我们可以使用设计和保存的字符并创建包含它的PDF文件。 为了使其工作,让我们从windows字体目录复制生成的字体,并通过将其扩展名从tte更改为ttf来重命名生成的文件。

    假设OS安装在 C: \Windows 我们要把文件复制到 C: \customfonts\eudc.ttf 它看起来如下(使用命令提示符)。以下代码生成包含我们创建的字符的PDF文件(使用Apitron.PDF.Kit for.NET的API):

    // create document
    FlowDocument document = new FlowDocument() { Margin = new Thickness(5) };
               
    // lets create the village, using \uE000 charcode for each symbol
    document.Add(new TextBlock("\uE000\uE000\uE000\uE000\uE000\uE000\uE000\uE000")
                    { Font = new Font(@"c:\customfonts\eudc.ttf", 20) });
    
    // generate PDF document
    using (Stream stream = File.Create("CustomFontsUsageSample.pdf"))
    {               
        document.Write(stream, new ResourceManager(), new PageBoundary(Boundaries.A4));
    }
    

    下图显示了结果: enter image description here

    此外,这个自定义字体将嵌入到生成的文档中,使其在显然没有安装自定义字体的其他设备上可见。