1

我有以下在 Linux 上完美运行的代码:

auto pdf_doc = HPDF_New(nullptr, nullptr);
if (!pdf_doc) { /* error handling */ }

HPDF_SetCompressionMode(pdf_doc, HPDF_COMP_ALL);

HPDF_UseUTFEncodings(pdf_doc);
HPDF_SetCurrentEncoder(pdf_doc, "UTF-8");

const char* font_bold_name = HPDF_LoadTTFontFromFile(pdf_doc, "HelveticaBd.ttf", HPDF_TRUE);
auto font_bold = HPDF_GetFont(pdf_doc, font_bold_name, "UTF-8");

const char* font_regular_name = HPDF_LoadTTFontFromFile(pdf_doc, "Helvetica.ttf", HPDF_TRUE);
auto font_regular = HPDF_GetFont(pdf_doc, font_regular_name, "UTF-8");

但在 Windows 上,调用HPDF_LoadTTFontFromFile()返回""和错误105D设置在pdf_doc. 根据文档,此错误表示“无法嵌入字体。(许可证限制)”

但是同样的 TTF 字体文件也可以在 Linux 上运行。我还尝试了演示中提供的字体,但在这种情况下,它会设置错误 0x1017,pdf_doc这意味着“无法打开文件。(设置了详细代码。)”

当我通过时调用也会成功HPDF_FALSE(意思是“不要嵌入字体”)并且它可以工作。但我需要嵌入字体:(

有没有人遇到过类似的问题?
我错过了什么吗?
当 Linux 允许时,为什么许可证在 Windows 上会成为问题?
它是否与 Windows 上的任何字体相关设置/配置有关?

编辑:
Helvetica-bold 字体发生错误。Helvetica 的常规版本不会导致任何错误,但它不会被嵌入。
它与 Base-14 字体有什么关系吗?

4

0 回答 0