首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PDFlib复制页面并使用字体

PDFlib复制页面并使用字体
EN

Stack Overflow用户
提问于 2021-08-10 09:31:17
回答 1查看 383关注 0票数 1

PDFlib示例搜索和替换文本复制页面并粘贴矩形和文本。

我不想从我的硬盘中加载字体(就像在使用int font = p.load_font(REPLACEMENT_FONT, "unicode", "");的示例中所做的那样),而是使用源文档中的原始字体。

我怎样才能做到这一点?

我尝试的是:

当使用int font = 0 (相当于第244行tet.fontid的值)时,PDFlib抛出一个异常,如下所示:

代码语言:javascript
复制
com.pdflib.PDFlibException: Option 'font' has bad font handle 0
    at com.pdflib.pdflib.PDF_fit_textline(Native Method)
    at com.pdflib.pdflib.fit_textline(pdflib.java:1086)

什么可以工作,(还有我也无法运行的)

也许我可以读一下目标文档中的字体。在源文档中读取字体是可行的,可以使用以下内容:(int) lib.pcos_get_number(pdiHandle, "length:fonts");。尝试用(int) lib.pcos_get_number(outputPdfHandle, "length:fonts");读取目标文档中的字体(使用示例行560中的outputPdfHandle = p.begin_document(outfilename, "") )会引发异常

代码语言:javascript
复制
com.pdflib.PDFlibException: Handle parameter or option of type 'PDI document' has bad value 1
    at com.pdflib.pdflib.PDF_pcos_get_number(Native Method)
    at com.pdflib.pdflib.pcos_get_number(pdflib.java:1539)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-12 08:05:28

不可能使用通过PDI导入的文档中的字体在输出文档中创建文本。从理论上讲,通过pCOS函数访问输入文档中的字体数据听起来很有吸引力。人们可能认为,应该可以将字体数据重新组合成一个有效的TrueType字体,然后可以通过PDFlib load_font()函数加载该字体。

但这是不可能的,原因如下:

  • 存储在PDF文档中的字体数据不是存储在TrueType字体中的完整数据。缺少重要的TrueType表,无法从PDF文件中的字体数据中重构。
  • PDF文件中的字体几乎总是包含文档中实际使用的符号的子集。因此,即使可以使用输入文档中的字体数据,也只能使用子集中的象形文字在输出文档中创建新文本。

此外,TET提供的fontid值在通过PDFlib创建新输出时不能用作字体句柄。fontid值是pCOS伪对象数组fonts[]中的索引,它与通过PDFlib API创建新输出的任何句柄完全无关。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68724304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档