我有一个将HTML转换为PDF的Windows服务。我通过致电嵌入自定义面板

var fontSwiftFont = pdfDoc.EmbedFont("swift-fontv2", LanguageType.Latin);


在我的本地PC和QA环境上,一切都可以正常工作,但是在生产服务器上安装了新字体之后,该字体不会嵌入到Pdf中。该html在服务器上的IE中显示正常。

根据ABCPdf网站"Fonts are cached so newly added fonts will not be available to ABCpdf until the application is restarted."。但是,重新启动服务不能解决问题。

如果我运行的独立测试应用程序的功能与服务相同。

我怀疑重新启动可以解决问题,但是我无法重新启动,因为它的产品盒正在运行其他应用程序。

最佳答案

ABCpdf只知道当前的过程。为此,重新启动过程与重新启动计算机完全相同。

因此,如果这两种情况之间存在差异,则原因在于ABCpdf之外。

但是,更平凡的解释是错误的进程正在重新启动。最好的检查方法是使用“进程资源管理器”(在MS网站上)在计算机上搜索已加载ABCpdf.dll的所有进程。

如果您需要ABCpdf来选择这些字体而无需重新启动,则只需调用EmbedFont并提供字体文件的路径。同样,您可以使用XFont.Unload函数来卸载字体。

有关这两个功能的详细信息,请参见:

http://www.websupergoo.com/helppdfnet/source/5-abcpdf/doc/1-methods/embedfont.htm

http://www.websupergoo.com/helppdfnet/source/5-abcpdf/xfont/1-methods/unload.htm

请注意,由于Gecko引擎作为进程池运行,因此Gecko HTML引擎的字体工作稍有不同。因此,即使ABCpdf知道新字体,子流程也可能直到重新启动后才知道。使用EndTasks函数可以强制执行此操作。

有关此功能的详细信息,请参见:

http://www.websupergoo.com/helppdfnet/source/5-abcpdf/xhtmloptions/1-methods/endtasks.htm

10-01 10:12