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

Java 使用pdfbox拆分pdf,但丢失字体,java,pdf,fonts,pdfbox,Java,Pdf,Fonts,Pdfbox,我用Java编写了一些代码,使用PDFBOXAPI将pdf文档拆分为各个页面,在页面中查找特定字符串,然后从带有字符串的页面生成新的pdf。我的问题是,保存新页面时,我的字体会丢失。我刚刚制作了一个快速word文档来测试它,默认字体是calibri,所以当我运行程序时,我得到一个错误框,上面写着:无法提取嵌入的字体。。。因此,它用其他默认字体替换字体 我看到了很多示例代码,它们显示了在输入要放入pdf中的文本时如何更改字体,但没有为pdf设置字体 如果任何人都熟悉这样做的方法,或者可以找到文档/

我用Java编写了一些代码,使用PDFBOXAPI将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和split编写的,则这就是更改的外观:

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

来自:

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

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

•在PDF中嵌入字体时,并非所有字体数据都是 包括。显然,字体轮廓数据以及 字体宽度表。其他信息,如有关连字的数据, 在PDF中是不相关的,因此这些数据不会包含在 PDF。我不知道有任何字体提取工具,但如果你来 综上所述,上述原因应该清楚地表明 应避免使用公用设施


将其设置为Calibri会起作用吗?通过您所看到的示例代码,因为您无法设置它,所以我的想法应该与将其设置为所需的字体类似。我明白您的意思,但我找不到任何关于如何更改正在保存的内容字体的文档。我只是从pdf中剪切一页,然后将其放入一个新文档中。我所看到的字体更改功能只是在pdfIt中添加字符串,它有,也没有,我想大多数字体都是这样,但pdfbox确实有一些默认字体,您可以使用,而且还可以导入。我可以使用默认字体,比如TNR,但它会把它转换成一些奇怪和难看的东西。奇怪和难看。。。?你能举个例子吗?当然,我会在原来的问题上添加一个截图。当我将新文本复制并粘贴到word中时,它说它正在显示Arial,但显然不是,或者没有正确显示。啊,我明白了。是的,可能只是那个文本,有些文本有问题。