适用于 azure 1.50 的 PDFSharp 私有字体

2023-12-01

我已经下载并安装了 PDFSharp 1.5,但在使用私有字体时遇到问题。我在测试中创建了一个 pdf 创建器,效果很好。当我将其加载到 Azure 时,出现错误“无法加载字体”。研究发现他们没有任何加载的字体,所以我必须使用私有字体。我只能找到旧1.3版本的例子,方法也改成了新的。有人可以向我展示一个使用新版本 PDFSharp 的简单示例吗?

谢谢约翰


这是针对 PdfSharp 1.5 beta3b 的。这是一个完整且固定的示例,基于其他答案和其他问题的链接 - 但适用于 Arial。

将您想要的字体添加到您的项目中 - 在下面的示例中我放置Arial in MyProject\fonts\arial\arial.ttf等等。将每个字体文件设置为嵌入资源(属性 -> 构建操作)。

使用静态调用应用字体解析器,如下所示:

MyFontResolver.Apply(); // Ensures it's only applied once

这是字体解析器类:

class MyFontResolver : IFontResolver
{
    public FontResolverInfo ResolveTypeface(string familyName, bool isBold, bool isItalic)
    {
        // Ignore case of font names.
        var name = familyName.ToLower().TrimEnd('#');

        // Deal with the fonts we know.
        switch (name)
        {
            case "arial":
                if (isBold)
                {
                    if (isItalic)
                        return new FontResolverInfo("Arial#bi");
                    return new FontResolverInfo("Arial#b");
                }
                if (isItalic)
                    return new FontResolverInfo("Arial#i");
                return new FontResolverInfo("Arial#");
        }

        // We pass all other font requests to the default handler.
        // When running on a web server without sufficient permission, you can return a default font at this stage.
        return PlatformFontResolver.ResolveTypeface(familyName, isBold, isItalic);
    }

    public byte[] GetFont(string faceName)
    {
        switch (faceName)
        {
            case "Arial#":
                return LoadFontData("MyProject.fonts.arial.arial.ttf");;

            case "Arial#b":
                return LoadFontData("MyProject.fonts.arial.arialbd.ttf");;

            case "Arial#i":
                return LoadFontData("MyProject.fonts.arial.ariali.ttf");

            case "Arial#bi":
                return LoadFontData("MyProject.fonts.arial.arialbi.ttf");
        }

        return null;
    }

    /// <summary>
    /// Returns the specified font from an embedded resource.
    /// </summary>
    private byte[] LoadFontData(string name)
    {
        var assembly = Assembly.GetExecutingAssembly();

        // Test code to find the names of embedded fonts - put a watch on "ourResources"
        //var ourResources = assembly.GetManifestResourceNames();

        using (Stream stream = assembly.GetManifestResourceStream(name))
        {
            if (stream == null)
                throw new ArgumentException("No resource with name " + name);

            int count = (int)stream.Length;
            byte[] data = new byte[count];
            stream.Read(data, 0, count);
            return data;
        }
    }

    internal static MyFontResolver OurGlobalFontResolver = null;

    /// <summary>
    /// Ensure the font resolver is only applied once (or an exception is thrown)
    /// </summary>
    internal static void Apply()
    {
        if (OurGlobalFontResolver == null || GlobalFontSettings.FontResolver == null)
        {
            if (OurGlobalFontResolver == null)
                OurGlobalFontResolver = new MyFontResolver();

            GlobalFontSettings.FontResolver = OurGlobalFontResolver;
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

适用于 azure 1.50 的 PDFSharp 私有字体 的相关文章

  • 如何使用 Google 字体更改 Bootstrap 默认字体系列?

    我正在创建一个博客网站 我想更改 Bootstrap 字体 在 header 中的 import CSS 中我添加了这个字体 如何使用它作为我的引导程序默认字体 首先 你不能通过这种方式将字体导入到 CSS 中 您可以在 HTML 头中添加
  • Bigcommerce 购物车页面和结帐页面忽略主题字体样式

    我有一个大型商业网站 这是网站链接https www taoaccents com https www taoaccents com我正在为网站使用简单的主题 我已经上传自定义字体并将其调用到 styles css 中 并使用正确的路径 下
  • Google 网络字体与实际字体文件 - 适用于所有设备

    我正在寻找使用 Josefin Sans 它已列在 Google 网络字体中 我还有 eot svg ttf 和 woff 这意味着与文件完全兼容 据我所知 我的主要问题是 哪个更好 Google 字体加载速度更快吗 是不是更加兼容呢 或者
  • 谷歌字体@import + @font-face?

    我正在尝试在 CSS 中使用 import 和 font face 导入 Google Fonts 字体 我以前只使用 font face下载字体 但由于加载需要时间 我更喜欢使用Google Fonts方法 我不希望 Roboto 的 粗
  • 将控件定位在复选框的中间

    这是我之前问题的后续 依赖于字体的控制定位 https stackoverflow com questions 37306 font dependent control positioning 这是试图解决这个问题real这个问题背后的问题
  • Java中私有静态变量有什么用?

    如果一个变量被声明为public static varName 然后我可以从任何地方访问它ClassName varName 我还知道静态成员由类的所有实例共享 并且不会在每个实例中重新分配 将变量声明为private static var
  • 自定义字体和 XML 布局 (Android)

    我正在尝试在 Android 中使用 XML 文件定义 GUI 布局 据我所知 没有办法指定您的小部件应该在 XML 文件中使用自定义字体 例如您放置在 asset font 中的字体 并且您只能使用系统安装的字体 我知道 在 Java 代
  • 在 Mac OS X 中的 R 包 Cairo 中设置系统字体

    由于提出的问题在 R 的 expression 命令中使用 Unicode https stackoverflow com questions 19881553 using unicode inside rs expression comm
  • Java中如何获取真实的字符串高度?

    我在用着FontMetrics getHeight 获取字符串的高度 但它给了我一个错误的值 切断了字符串字符的下降部分 有更好的功能我可以使用吗 The getStringBounds 下面的方法是基于GlyphVector对于当前的Gr
  • iPhone 应用程序支持哪些字体? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我在这里找到了 iPhone 支持的字体列表 http daringfireball net misc 2007 07 iphone osx font
  • 如何更改 GTK 中的字体大小?

    有没有一种简单的方法可以更改 GTK 中文本元素的字体大小 现在我能做的就是set markup在标签上 写着一些愚蠢的东西 比如 lbl set markup span s span text 这 1 需要我设置字体 2 似乎有很多开销
  • 在 .NET 中使用字体之前如何确保该字体存在

    我有一个 VB NET Windows 窗体项目 它在运行时将文本直接绘制到窗体上 不过 在使用字体进行绘画之前 我想确保用户计算机上存在该字体和字体大小 如果没有 我会尝试其他一些类似的字体 最终默认使用 Arial 或其他字体 在用户计
  • 网络安全字体 - 这到底是什么意思?

    我知道哪些字体是网络安全字体 但我不确定其定义 网络安全字体是您的浏览器支持的字体还是操作系统上安装的字体 那么 如果某个字体无法在浏览器中显示 是因为您的浏览器无法渲染该字体还是因为您的操作系统上没有安装该字体 谢谢 网络安全字体是大多数
  • Android:设置自定义字体时出现异常

    自一小时以来 我一直在绞尽脑汁地从代码中设置自定义字体到文本 我已经在之前的项目中做到了这一点 而且它有效 但我不知道出于什么原因 它给了我例外 无法制作原生字体 在这里 我已经解决了许多与此相关的问题 并尝试了建议的解决方案并适用于这些情
  • Google 字体无法在移动设备中加载

    我读过类似的帖子 但这个问题有点不同 我有 rest of the code 在 css 样式文件中我有 body font family Source Sans Pro sans serif rest of the code 它在浏览器中
  • Firefox 无法识别字体

    我正在设计样式pre通过 CSS 的 HTML 元素如下所示 pre font family Franklin Gothic Medium Arial Narrow Bold Arial sans serif 它可以在 Chrome Chr
  • Android更改ListView字体

    似乎是一个简单的问题 但由于我是 Android 开发新手 所以我对 Android ListViews 知之甚少 以下是我在项目中用于 ListView 的代码 Listview code starts mainListView List
  • Android:向系统添加自定义字体

    我知道如何在应用程序中使用自定义字体 但我想做的是在系统范围内添加自定义字体 就像在 Windows 上添加新字体一样 如果没有官方的方法 我应该阅读android源代码的哪个模块 我必须更改 android 源代码并构建它以支持自定义字体
  • 自定义字体,eot,不起作用

    我无法让我的自定义字体在 IE7 和 IE8 中工作 http i creative dk iJob http i creative dk iJob 它在 IE9 Firefox 和 Chrome 中运行良好 对于 Firefox 和 Ch
  • 私有静态方法有必要吗?

    原理工程师 https stackoverflow com users 201787 metal在我上一家公司有一条规则private static方法应该作为实现文件中的函数实现 而不是作为类方法 我不记得他的规则是否有任何例外 我在目前

随机推荐

  • 在 CodeIgniter 中重定向 index.php

    我创建了一个 CodeIgniter 应用程序 现在我尝试将带有 index php 的 url 重定向到不带它的 url 我当前的 htaccess 是 RewriteEngine On RewriteBase Removes trail
  • 为什么除非使用临时变量,否则我不能推入 dyn Trait 的 Vec ?

    这是我的代码 use std rc Rc Weak use std cell RefCell trait Trait fn push
  • 尽管已设置标头,但仍不允许 CORS 请求

    我在尝试执行 XHR 请求时收到以下错误 我已经设置了 CORS 响应标头 但显然出现了问题 任何人都可以发现错误吗 XMLHttpRequest 无法加载http domain dev 路径 起源http mobile devAccess
  • 谷歌地图:事件监听器仅记住变量的最终值

    我正在整理一张 Google 地图 其中包含我国各地各个考试中心的位置 它在每个县上绘制一个标记 当您单击县标记时 它会放大并提供该县考试中心的概述 我也在使用 jQuery 来实现这个 问题是这样的 当我绘制县标记并单击它们时 它总是缩放
  • 正则表达式反向引用来匹配不同的值

    我有一个正则表达式 用于匹配以下形式的表达式 val1 operator val2 这个正则表达式看起来像 s a zA Z 0 9 0 9 s ni in gt gt lt lt s a zA Z 0 9 0 9 s 正如你所看到的 这实
  • 如何使用 javascript 更改 JQuery Mobile 按钮图标

    我想要一个根据用户选择更改数据图标类别的按钮 示例按钮为 a href language2 span English span a 我想知道我需要实现什么 JavaScript 代码才能更改自定义定义data icon english fl
  • Castle.Windsor:来自类型化工厂的组件的可选解析

    我有一个带有 Castle Windsor 的 WCF 服务设置 消息到达调度程序 调度程序将它们发送到正确的组件 基本上是一个IHandler
  • Chrome 的 Javascript 控制台:它以对象形式输出什么?

    从 Chrome 中的 javascript 控制台 gt function Person name this name name undefined 此时 根据 Javascript 规范 Person prototype 应该是一个空对
  • 如何并行迭代两个数组? [复制]

    这个问题在这里已经有答案了 我看起来能够并行迭代两个数组 或仅使用一个 for 循环 这是我尝试过的脚本 usr bin env python list1 one two three list2 I II III IV V for word
  • SpriteKit - 创建计时器

    如何创建一个每两秒触发一次的计时器 以便在屏幕上的 HUD 上将分数加一 这是我的 HUD 代码 implementation MyScene int counter BOOL updateLabel SKLabelNode counter
  • 如何在 R 中的直方图上叠加频率多边形?

    以下是我在 R 中使用的代码 使用 RGui 64 位 R 版本 3 3 1 用于绘制数据直方图以及频率多边形 我没有使用ggplot2 如何将频率多边形叠加在直方图之上 这样我就不必制作两个单独的图表 也就是说 我想要绘制直方图 并将频率
  • Firefox 中的 NS_ERROR_INVALID_POINTER 错误是什么?

    在 Firefox 3 5 中测试 JavaScript 代码时 有时会出现以下错误 Component returned failure code 0x80004003 NS ERROR INVALID POINTER 我尝试过谷歌搜索
  • 在自定义策略中获取 Azure AD B2C 应用程序客户端 ID

    您好 使用 B2C 应用程序的客户端 ID 调用自定义策略 我如何在策略中访问它 我认为这将被硬编码到 client id 声明中 但我不认为它是 它仅作为 aud 声明的默认值返回 但我再次在自定义策略中没有看到这一点 Thanks 好吧
  • 选择不同计数 cloudant/couchdb

    我正在使用 Cloudant 启动一个项目 这是一个简单的日志记录系统 因此我可以跟踪应用程序的使用情况 我的文档如下所示 app 应用程序名称 类型 页面视图 登录 ETC 所有者 用户的电子邮件 设备 iphone 安卓 ETC 日期
  • 通过 PHP 导出为 CSV

    假设我有一个数据库 有没有一种方法可以通过 PHP 将数据库中的内容导出到 CSV 文件 和文本文件 如果可能 我个人使用此函数从任何数组创建 CSV 内容 function array2csv array array if count a
  • javascript:如何在弹出窗口内编写

    我创建了一个 javascript 程序 创建了电影对象 创建了名为 myWin 的新窗口 并在 myWin 内创建了另一个名为 actorWin 的窗口 现在 当我单击 单击此处访问演员窗口 时 我想在 actorWin 中传递 url
  • 使用 svg 圆的 url 填充模式时图像模糊

    我正在尝试使用d3 js 圆形包装示例使用 SVG 的图案填充用图像填充一堆 svg 圆圈 我的源图像是 800x600 但圆圈的大小会有所不同 我设置如下 var patterns defs selectAll pattern data
  • 在 VBA 中处理一系列逗号分隔值

    我有这个函数 它以字符串形式返回以逗号分隔的字符串中的值 该值按给定整数值的顺序排列 Private Sub TestGetNthNumber Debug Print GetNthNumber NUMBERS 5088 5089 5090
  • 查找数组的最大值,如果数组为空则为 0

    我需要一种干净的方式来寻找max对于 JavaScript 中的数组 说它是arrayMax then arrayMax gt 0 arrayMax 1 2 gt 2 arrayMax 1 gt 1 我尝试过的 Math max apply
  • 适用于 azure 1.50 的 PDFSharp 私有字体

    我已经下载并安装了 PDFSharp 1 5 但在使用私有字体时遇到问题 我在测试中创建了一个 pdf 创建器 效果很好 当我将其加载到 Azure 时 出现错误 无法加载字体 研究发现他们没有任何加载的字体 所以我必须使用私有字体 我只能