当前位置: 首页 > 知识库问答 >
问题:

使用PDFbox创建PDF引用OTF字体

越安翔
2023-03-14

早上好

我有一个新手PDFbox的问题,我希望一些帮助...

我刚刚(上周)从github下载了最新的PDFbox源代码,正在尝试创建HelloWorldOTF。java,基于HelloWorldTTF。java示例,希望创建一个PDF文件,该文件使用OTF字体(本例中为Adobe Caslon Pro Regular)将文本添加到输出PDF中。

到目前为止,我有以下信息:

        doc = new PDDocument();

        PDPage page = new PDPage();
        doc.addPage(page);

        String testOtfFontFile =  "c:/windows/fonts/ACaslonPro-Regular.otf";
        String testTtfFontFile = "c:/windows/fonts/arial.ttf";
        String testPdfFile = "c:/tmp/pdfboxtest.pdf";

        CFFFont font = loadCFFFont(testOtfFontFile);

        PDFont ttfFont = PDTrueTypeFont.loadTTF(doc, new File(testTtfFontFile));

        PDPageContentStream contentStream = new PDPageContentStream(doc,
                page);
        contentStream.beginText();
        // How to set the CFFFont?
        contentStream.setFont(ttfFont, 12);
        contentStream.moveTextPositionByAmount(100, 700);
        contentStream.drawString(text);
        contentStream.endText();
        contentStream.close();
        doc.save(testPdfFile);
        System.out.println(testPdfFile + " created!");

我可以使用以下代码加载CFFFont:(loadCFFFont()):

            CFFFont cff = null;
            input = new FileInputStream(file);
            byte[] bytes = IOUtils.toByteArray(input);
            CFFParser cffParser = new CFFParser();
            cff = cffParser.parse(bytes).get(0);

... 但是,我一辈子都搞不懂如何从CFFFont到PDFont,以便能够使用它通过setFont()设置字体。

任何帮助或指点将不胜感激...

非常感谢您阅读到目前为止;)

共有1个答案

秦安宁
2023-03-14

通过引用此链接,它对我起了作用。

使用OTFParser将otf转换为ttf。

OTFParser otfParser = new OTFParser();
OpenTypeFont otf = otfParser.parse(new File("C:/Users/beder/Downloads/code/CODE Light.otf"));

PDFont font = PDType0Font.load(document, otf, false);
 类似资料:
  • 我正在迁移一些代码(最初使用iText)来使用PdfBox进行PDF合并。除了创建PDF包或文件夹,一切都很好。我不得不承认,直到现在我才意识到它的存在。 这是我的代码片段(使用iText): 我需要这个,但与PdfBox。 我正在研究两者的 API 和文档,但找不到解决方案。任何帮助都会很棒。 附言。如果我给人留下印象,我需要在iText中解决方案,我需要它在PdfBox中,因为迁移是从iTex

  • 问题内容: 我需要创建一个PDF,其中将包含执行状态报告,其中状态将以表格结构显示。是否可以使用PDFBOX API生成pdf表格式? 以下是一些用于创建新PDF文档的示例代码: 问题答案: 试试这个: 只需在函数中调用此方法

  • 主要内容:创建一个空的PDF文档,实例现在让我们了解如何使用PDFBox库创建PDF文档。 创建一个空的PDF文档 可以通过实例化类来创建一个空的PDF文档。使用这个类的方法将文档保存在所需的位置。 以下是创建一个空的PDF文档的步骤。 第1步: 创建空白文档 包中的类是PDF文档的内存中表示形式。 因此,通过实例化这个类,可以创建一个空的,如下面的代码块所示。 第2步: 保存文档 创建文档后,需要将此文档保存在所需的路径中,可以使用

  • null 有人能解释一下,当我使用PdfReader阅读模板后,我如何制作模板的副本吗?有没有办法把表格写到模板副本上,而不是一个新文档上? 为了将来的参考,我做了以下工作:

  • 这就是我想做的: > 使用pdfbox制作2个不同的pdf文件 使用pdfmerger将这两个文件合并在一起 如果要将#1保存到服务器端本地硬盘并加载#2的文件,我知道如何执行此操作。但我想做的是使用“直接从内存”。我已经搜索了这个pdfboxes中的所有方法,但仍然找不到它。 这是我从本地文件获取的代码 谢谢你。

  • 一段时间以来,我一直在尝试如何翻转pdf,但还没有找到答案。我只找到了如何使用Graphics2D翻转图像: 你能帮我用PDFbox拿一下吗? 谢谢