PDFlib 复制页面并使用字体
PDFlib copy page and use font
PDFlib 示例 search and replace text 复制页面并粘贴矩形和文本。
我不想从我的硬盘加载字体(就像在 int font = p.load_font(REPLACEMENT_FONT, "unicode", "");
的示例中那样)我想使用源文档中的原始字体。
我怎样才能做到这一点?
我试过的是这样的:
当使用 int font = 0
(相当于第 244 行中 tet.fontid
的值)时,PDFlib 会抛出这样的异常:
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, "")
)读取目标文档中的字体会抛出异常
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)
无法使用通过 PDI 导入的文档中的字体在输出文档中创建文本。从理论上讲,通过 pCOS 函数从输入文档访问字体数据的想法听起来很有吸引力。人们可能认为应该可以将字体数据重新组合成例如一种有效的 TrueType 字体,然后可以通过 PDFlib load_font()
函数加载。
但这是不可能的,原因如下:
- 保存在PDF文档中的字体数据不是保存在TrueType字体中的完整数据。重要的 TrueType 表格丢失,无法从 PDF 文件中的字体数据重建。
- PDF 文件中的字体几乎总是只包含文档中实际使用的字形的子集。因此,即使可以使用输入文档中的字体数据,您也只能使用子集中的字形在输出文档中创建新文本。
此外,在通过 PDFlib 创建新输出时,TET 提供的 fontid
值不能用作字体句柄。 fontid
值是 pCOS 伪对象数组 fonts[]
中的索引,它与用于通过 PDFlib API.
创建新输出的任何句柄完全无关
PDFlib 示例 search and replace text 复制页面并粘贴矩形和文本。
我不想从我的硬盘加载字体(就像在 int font = p.load_font(REPLACEMENT_FONT, "unicode", "");
的示例中那样)我想使用源文档中的原始字体。
我怎样才能做到这一点?
我试过的是这样的:
当使用 int font = 0
(相当于第 244 行中 tet.fontid
的值)时,PDFlib 会抛出这样的异常:
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, "")
)读取目标文档中的字体会抛出异常
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)
无法使用通过 PDI 导入的文档中的字体在输出文档中创建文本。从理论上讲,通过 pCOS 函数从输入文档访问字体数据的想法听起来很有吸引力。人们可能认为应该可以将字体数据重新组合成例如一种有效的 TrueType 字体,然后可以通过 PDFlib load_font()
函数加载。
但这是不可能的,原因如下:
- 保存在PDF文档中的字体数据不是保存在TrueType字体中的完整数据。重要的 TrueType 表格丢失,无法从 PDF 文件中的字体数据重建。
- PDF 文件中的字体几乎总是只包含文档中实际使用的字形的子集。因此,即使可以使用输入文档中的字体数据,您也只能使用子集中的字形在输出文档中创建新文本。
此外,在通过 PDFlib 创建新输出时,TET 提供的 fontid
值不能用作字体句柄。 fontid
值是 pCOS 伪对象数组 fonts[]
中的索引,它与用于通过 PDFlib API.