使用iText替换PDF中的子集字体

使用iText替换PDF中的子集字体,pdf,fonts,itext,subset,Pdf,Fonts,Itext,Subset,是否可以通过任何机制(例如使用iText)将PDF中的子集嵌入字体替换为非子集嵌入字体 我们的目标是编写一些java例程,它将接受带有子集字体的输入PDF,并输出带有完全嵌入字体的PDF,其中字体的整个字符集的完整副本存储在PDF中 任何建议都会对我有很大帮助。这取决于字体子集的嵌入方式。例如:如果它们作为简单字体嵌入,则子集最多可以包含256个字符。大多数字体都有更多的字符,所以在这种情况下,你就不走运了。如果您的字体嵌入为复合字体,则可以存储更多字符,但即使如此,这也是一项棘手的工作,因为您

是否可以通过任何机制(例如使用iText)将PDF中的子集嵌入字体替换为非子集嵌入字体

我们的目标是编写一些java例程,它将接受带有子集字体的输入PDF,并输出带有完全嵌入字体的PDF,其中字体的整个字符集的完整副本存储在PDF中


任何建议都会对我有很大帮助。

这取决于字体子集的嵌入方式。例如:如果它们作为简单字体嵌入,则子集最多可以包含256个字符。大多数字体都有更多的字符,所以在这种情况下,你就不走运了。如果您的字体嵌入为复合字体,则可以存储更多字符,但即使如此,这也是一项棘手的工作,因为您可能会错误地获得字符和字形之间的映射。它不建议用嵌入式字体替换嵌入式子集。我想不出一个用例可以证明这项工作的合理性。布鲁诺·洛瓦吉:嗨,谢谢你的重播。这样做的目的是因为我正在分解PDF并将资源(字体和图形)保存到数据库中,然后链接到它们。有了这个逻辑,我可以只保存一次资源,并在再次编写pdf时引用他。对于输入中的子集,我必须保存每个子集字体(每个字体都是唯一的)。在“节省存储空间”与“用臃肿的PDF烦扰人”的权衡中,我会选择不用臃肿的PDF烦扰人,而是购买额外的存储空间。您所做的与PDF中的最佳实践背道而驰。您存储的文档不会是PDF/A文档(PDF/A或ISO-19005是存档的标准)。@Fleky您正在尝试处理哪种PDF?如果它们的起源不受控制,你就不应该在那个项目上浪费时间。完全有效的PDF有太多的方法让您的进程严重受损。这不是一个真正的编程问题,更多的是一个通用工具问题,所以您真的想问这个问题。而且,事实证明,有人已经做到了:看看它取决于字体子集是如何嵌入的。例如:如果它们作为简单字体嵌入,则子集最多可以包含256个字符。大多数字体都有更多的字符,所以在这种情况下,你就不走运了。如果您的字体嵌入为复合字体,则可以存储更多字符,但即使如此,这也是一项棘手的工作,因为您可能会错误地获得字符和字形之间的映射。它不建议用嵌入式字体替换嵌入式子集。我想不出一个用例可以证明这项工作的合理性。布鲁诺·洛瓦吉:嗨,谢谢你的重播。这样做的目的是因为我正在分解PDF并将资源(字体和图形)保存到数据库中,然后链接到它们。有了这个逻辑,我可以只保存一次资源,并在再次编写pdf时引用他。对于输入中的子集,我必须保存每个子集字体(每个字体都是唯一的)。在“节省存储空间”与“用臃肿的PDF烦扰人”的权衡中,我会选择不用臃肿的PDF烦扰人,而是购买额外的存储空间。您所做的与PDF中的最佳实践背道而驰。您存储的文档不会是PDF/A文档(PDF/A或ISO-19005是存档的标准)。@Fleky您正在尝试处理哪种PDF?如果它们的起源不受控制,你就不应该在那个项目上浪费时间。完全有效的PDF有太多的方法让您的进程严重受损。这不是一个真正的编程问题,更多的是一个通用工具问题,所以您真的想问这个问题。而且,事实证明,有人已经做到了:看看它取决于字体子集是如何嵌入的。例如:如果它们作为简单字体嵌入,则子集最多可以包含256个字符。大多数字体都有更多的字符,所以在这种情况下,你就不走运了。如果您的字体嵌入为复合字体,则可以存储更多字符,但即使如此,这也是一项棘手的工作,因为您可能会错误地获得字符和字形之间的映射。它不建议用嵌入式字体替换嵌入式子集。我想不出一个用例可以证明这项工作的合理性。布鲁诺·洛瓦吉:嗨,谢谢你的重播。这样做的目的是因为我正在分解PDF并将资源(字体和图形)保存到数据库中,然后链接到它们。有了这个逻辑,我可以只保存一次资源,并在再次编写pdf时引用他。对于输入中的子集,我必须保存每个子集字体(每个字体都是唯一的)。在“节省存储空间”与“用臃肿的PDF烦扰人”的权衡中,我会选择不用臃肿的PDF烦扰人,而是购买额外的存储空间。您所做的与PDF中的最佳实践背道而驰。您存储的文档不会是PDF/A文档(PDF/A或ISO-19005是存档的标准)。@Fleky您正在尝试处理哪种PDF?如果它们的起源不受控制,你就不应该在那个项目上浪费时间。完全有效的PDF有太多的方法让您的进程严重受损。这不是一个真正的编程问题,更多的是一个通用工具问题,所以您真的想问这个问题。事实证明,已经有人这么做了:看看