使用pdfbox拆分pdf,但丢失字体

时间:2011-10-03 18:24:56

标签: java pdf fonts pdfbox

我使用pdfbox API在Java中编写了一些代码,该API将pdf文档拆分为单独的页面,查看特定字符串的页面,然后从页面上创建一个带有字符串的新pdf。我的问题是,当保存新页面时,我丢失了我的字体。我刚刚制作了一个快速word文档来测试它,默认字体是calibri,所以当我运行程序时,我得到一个错误框,上面写着:“无法提取嵌入字体...”所以它用其他一些默认字体替换字体

我已经看到很多示例代码,它们显示了当您输入要放在pdf中的文本时如何更改字体,但没有任何设置pdf的字体。

如果有人熟悉这样做的方法,(或者可以找到文档/示例),我将不胜感激!

编辑:忘记包含一些示例代码

if (pageContent.indexOf(findThis) >= 0){
                PDPage pageToRip = pages.get(i);
                >>set the font of pageToRip here
                res.importPage(pageToRip); //res is the new document that will be saved
            }

我不知道这是否有帮助,但我想我会把它包括在内。

此外,如果pdf是用calibri编写的,那么这就是变化:

left:calibri, right:what it changes to

注意:这可能不是一个问题,它取决于需要处理的文件中使用的字体。除了Calibri,我尝试了一些其他的东西,结果很好。

1 个答案:

答案 0 :(得分:0)

来自How to extract fonts from a PDF

  

实际上,您无法从PDF中提取字体,即使字体也是如此   完全嵌入。这是不可行的两个原因:

     

•大多数字体都受版权保护,因此使用提取器是非法的。

     

•当PDF中嵌入字体时,并非所有字体数据都是   包括在内。显然,包括字体轮廓数据以及   字体宽度表。其他信息,例如关于连字的数据,   在PDF中是无关紧要的,因此这些数据不会被包含在内   PDF。我不知道任何字体提取工具,但如果你来   跨越一个,上述原因应该明确这些   公用事业应该避免。