向 Apache Pdfbox 添加字体?

2024-04-11

有没有办法将其他字体样式添加到 Apache Pdfbox 中?

我们目前正在尝试解决在我们的系统中打印 PDF 的问题(目前正在使用PDF渲染器 https://java.net/projects/pdf-renderer.)我一直在寻找各种替代方案(pdfbox http://pdfbox.apache.org/, jpedal http://www.jpedal.org/, jPDF打印 http://www.qoppa.com/pdfprint/)

我们希望有一个免费的 GPL 兼容库可供使用,因此我们倾向于 pdfbox。我已经能够编写一些示例代码来打印“有效”的pdf。见下文:

PDDocument doc;
try {
        doc = PDDocument.load("test.pdf");
        doc.print();
    } catch (Exception e) {
        // Come up with better thing to do on fail.
        e.printStackTrace();
    }

正如我提到的,这可行,但我遇到的问题是 PdfBox 似乎无法识别 pdf 中使用的字体,因此会更改所使用的字体。结果,文档看起来很奇怪(间距和字符大小不同,看起来很奇怪)。我经常看到以下日志消息或类似的内容:

2014 年 4 月 16 日下午 2:56:21 org.apache.pdfbox.pdmodel.font.PDSimpleFont 绘制字符串 警告:将 上的字体从 更改为默认字体

有谁知道如何将新字体类型添加到 pdfbox 中的方法(或参考)?或者除此之外,如何更改默认字体类型?

据我所知,pdfbox 支持14种标准字体 http://pdfbox.apache.org/cookbook/workingwithfonts.html。不幸的是 NimbusMono 不是其中之一。任何指导将不胜感激。


未发布的2.0版本支持嵌入字体的渲染。您可以将其作为快照获取https://repository.apache.org/content/groups/snapshots/org/apache/pdfbox/ https://repository.apache.org/content/groups/snapshots/org/apache/pdfbox/或通过“svn checkouthttp://svn.apache.org/repos/asf/pdfbox/trunk/ http://svn.apache.org/repos/asf/pdfbox/trunk/“。API 与 1.8.x 版本略有不同,并且可能会发生变化,最好是查看代码示例。快速测试您的文件是否会正确呈现是下载“pdfbox-app”https://repository.apache.org/content/groups/snapshots/org/apache/pdfbox/pdfbox-app/2.0.0-SNAPSHOT/ https://repository.apache.org/content/groups/snapshots/org/apache/pdfbox/pdfbox-app/2.0.0-SNAPSHOT/然后运行查看器: java -jar pdfbox-app-2.0.0-20140416.173452-273.jar PDFReader 你的文件名.pdf 还有打印功能。

祝你好运!

2016年更新:2.0版本已发布,请下载here https://pdfbox.apache.org/download.cgi。 如果您使用过1.8版本,请阅读迁移指南 https://pdfbox.apache.org/2.0/migration.html.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

向 Apache Pdfbox 添加字体? 的相关文章

  • org.apache.sling.api.resource,version=[2.3,3) -- 无法解析

    您好 我无法访问我的项目内容 我已经上传了从 CQ 访问内容所需的所有包 我唯一能看到的是 org apache sling api resource version 2 3 3 无法解析 这是否是异常的原因 如果是 请告诉我如何解决 中Q
  • 正则表达式拆分数字和字母组,不带空格

    如果我有一个像 11E12C108N 这样的字符串 它是字母组和数字组的串联 如何在中间没有分隔符空格字符的情况下分割它们 例如 我希望分割结果为 tokens 0 11 tokens 1 E tokens 2 12 tokens 3 C
  • 如何使用 Java 处理 Selenium WebDriver 中的新窗口?

    这是我的代码 driver findElement By id ImageButton5 click Thread sleep 3000 String winHandleBefore driver getWindowHandle drive
  • Java AES 128 加密方式与 openssl 不同

    我们遇到了一种奇怪的情况 即我们在 Java 中使用的加密方法会向 openssl 生成不同的输出 尽管它们在配置上看起来相同 使用相同的键和 IV 文本 敏捷的棕色狐狸跳过了懒狗 加密为 Base64 字符串 openssl A8cMRI
  • 比较两个文本文件的最快方法是什么,不将移动的行视为不同

    我有两个文件非常大 每个文件有 50000 行 我需要比较这两个文件并识别更改 然而 问题是如果一条线出现在不同的位置 它不应该显示为不同的 例如 考虑这个文件A txt xxxxx yyyyy zzzzz 文件B txt zzzzz xx
  • JAVA - Xuggler - 组合 MP3 音频文件和 MP4 电影时播放视频

    使用 JAVA 和 Xuggler 以下代码组合 MP3 音频文件和 MP4 电影文件并输出组合的 mp4 文件 我希望在合并音频和视频文件时应自动播放输出视频文件 String inputVideoFilePath in mp4 Stri
  • wait() 在游戏中如何工作?

    在 playframework 的文档中here http www playframework org documentation 1 2 1 asynchronous已写 public static void loopWithoutBlo
  • Java 文件上传速度非常慢

    我构建了一个小型服务 它从 Android 设备接收图像并将其保存到 Amazon S3 存储桶中 代码非常简单 但是速度非常慢 事情是这样的 public synchronized static Response postCommentP
  • 如何模拟从抽象类继承的受保护子类方法?

    如何使用 Mockito 或 PowerMock 模拟由子类实现但从抽象超类继承的受保护方法 换句话说 我想在模拟 doSomethingElse 的同时测试 doSomething 方法 抽象超类 public abstract clas
  • 匿名类上的 NotSerializedException

    我有一个用于过滤项目的界面 public interface KeyValFilter extends Serializable public static final long serialVersionUID 7069537470113
  • 在 Netbeans 8 上配置 JBoss EAP 的问题

    我已经下载了 JBoss EAP 7 并正在 Netbeans 8 上配置它 我已经到达向导 实例属性 其中要求从选择框中选择 域 当我打开选择框时 它是空的 没有什么可以选择的 因此 完成 按钮也处于非活动状态 这使得无法完成配置 我通过
  • 编辑文件名在 JComboBox 中的显示方式,同时保持对文件的访问

    我对 Java 很陌生 对堆栈溢出也很陌生 我正在尝试利用 JMF API 创建一个用 Java 编码的简单媒体播放器 到目前为止 我已经能够设置一个简单的队列 播放列表来使用JComboBox called playListHolder
  • 如何在selenium服务器上提供自定义功能?

    我知道可以通过某种方法获得一些硒功能 其中之一如下 driver getCapabilities getBrowserName 它返回浏览器名称的值 但如果它指的是一个可用的方法 如果我没有误解的话 这似乎与自定义功能有关 就像我的意思是
  • IntelliJ - 调试模式 - 在程序内存中搜索文本

    我正在与无证的第三方库合作 我知道有一定的String存储在库深处的某个字段中的某处 我可以预测的动态值 但我想从库的 API 中获取它 有没有一种方法可以通过以下方式进行搜索 类似于全文搜索 full程序内存处于调试模式并在某个断点处停止
  • HQL Hibernate 内连接

    我怎样才能在 Hibernate 中编写这个 SQL 查询 我想使用 Hibernate 来创建查询 而不是创建数据库 SELECT FROM Employee e INNER JOIN Team t ON e Id team t Id t
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • 如何从 Maven 存储库引用本机 DLL?

    如果 JAR 附带 Maven 存储库中的本机 DLL 我需要在 pom xml 中放入什么才能将该 DLL 放入打包中 更具体地举个例子Jacob http search maven org artifactdetails 7Cnet s
  • 在 RESTful Web 服务中实现注销

    我正在开发一个需要注销服务的移动应用程序 登录服务是通过数据库验证来完成的 现在我陷入了注销状态 退一步 您没有提供有关如何在应用程序中执行身份验证的详细信息 并且很难猜测您在做什么 但是 需要注意的是 在 REST 应用程序中 不能有会话
  • 如何在 JFreeChart 中设置多个系列的线条粗细?

    我创建了很多图表 在他们每个人中我都需要打电话 renderer setSeriesStroke i new BasicStroke 2 0f 对于每个系列 renderer is chart getXYPlot getRenderer 我

随机推荐

  • 在 PostgreSQL 中创建具有加密密码的用户

    是否可以在 PostgreSQL 中创建用户而不提供纯文本密码 理想情况下 我希望能够创建一个仅提供使用 sha 256 加密的密码的用户 我想做的是创建一个具有类似内容的用户 CREATE USER martin WITH PASSWOR
  • Android Material Design 示例代码给出缺少资源错误

    我正在尝试运行从下面相同的 Android 材料设计https github com material components material components android https github com material com
  • 我可以在 Rust 中将字符串转换为枚举而不使用宏吗?

    例如 如果我有如下代码 enum Foo Bar Baz Bat Quux impl Foo from input str gt Foo Foo input 这显然会失败 因为input不是 Foo 的方法 我可以手动输入 from inp
  • 如何处理错误并正确使用 Promise

    首先 我正在对我发布的这个问题进行跟进不久前 https stackoverflow com questions 53940043 unhandledpromiserejectionwarning this error originated
  • 如何从 VIM 运行 C 程序?

    有没有一种方法可以从 VIM 编译并运行 C 程序而无需输入文件名 gcc o somename somename使用时 将替换为当前打开的文件的名称 当你的项目变得更大时 你还可以编写一个makefile并编译当前项目 make 如果有任
  • 如何加载高分辨率图像Windows Phone任务代理? [内存不足]

    众所周知 Windows Phone 8 任务代理只能使用 11 5MB 内存 我试图在后台任务代理中制作动态锁屏图像 当我得到 480 800 图像时 它工作正常 但当我将其更改为 768 1280 时 出现异常 内存不足 1 像素投射
  • 如何循环遍历 Golang 结构体中的字段以可扩展的方式获取和设置值?

    我有一个结构体 Person type Person struct Firstname string Lastname string Years uint8 然后我有这个结构的两个实例 PersonA 和 Person PersonA Ob
  • 如何保存WPF UI状态?

    我有一个TabControl在它下面我有几个元素 例如TreeView and DataGrid 当我展开树并调整数据网格列的大小时 如果我然后切换到另一个选项卡并返回 整个 UI 状态都会被忘记 我必须重新展开树并调整列的大小 是否有一种
  • Android 没有按钮的对话框

    我可以创建一个没有否定或肯定按钮的对话框吗 特定行动后会自我毁灭吗 AlertDialog Builder dialog detect new AlertDialog Builder MainActivity this dialog set
  • 如何在 Swift 中将图像添加到 ARSCNScene 中?

    我在开发 Swift 游乐场时偶然发现了一个障碍 我想将图像添加到我的 ARSCNScene ARKit SceneKit 不是作为背景 而是作为具有位置和所有内容的实际节点 有谁知道这是否可能 我在网上找不到任何东西 谢谢 您可以轻松地将
  • 如何更改 vagrant 安装的 puppet 版本

    我在 Precision32 Base Box 上使用 vagrant 1 0 1 来玩木偶 配置工作正常 我的清单正在执行 默认情况下 vagrant 在 guest 虚拟机上的 opt vagrant ruby bin puppet 下
  • 使用 awk 在匹配后连接行

    我有一个如下所示的列表 gt aaa AAAAAAAAAA gt bbb BBBBBBBBBBBBBBBB gt ccc CCCCCCC 我想使用 awk 在 或 之后加入下一行 并使用逗号分隔符 这样它看起来像这样 gt aaa AAAA
  • C# Server.URLEncode 的 JavaScript 等价物是什么?

    C Server URLEncode 的 JavaScript 等价物是什么 encodeURI http xkr us articles javascript encode compare ref js msdn http xkr us
  • Maven 问题:项目构建错误:未解析的父 POM

    项目构建错误 无法解析 org springframework gs spring boot 0 1 0 的父 POM 无法从以下位置传输 org springframework boot spring boot starter paren
  • 在 Azure DevOps 中,是否有一种简单的方法可以将 wiki 从一个存储库复制到另一个存储库?

    我看到有一个 克隆维基 链接 但我不知道是否可以将克隆维基导入到另一个存储库中 我们正在做的是将我们的存储库从我们自己的 Azure 帐户移动到客户的 Azure 帐户 这样 wiki 将丢失 我不想手动复制所有 wiki 页面 是否可以将
  • 如何使用Sphinx管理多个版本的文档? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我维护一个用 C 编写的小型库项目 我想使用 Sphinx 来维护每个发行版本的图书馆网站 用户文档 我发现 类似的问题如何管理多个版本 htt
  • 无法在jsf页面中执行Javascript

    我是jsf新手 我一直在尝试用 commandbutton 做一个简单的 Javascript 函数 我尝试了很多次 但甚至无法发出警报消息 这是我的代码的一部分 请任何人指导我 并告诉我出了什么问题 以及我应该做什么才能让它运行
  • 如何在 UINavigationBar 中设置自定义字体?

    如何在 UINavigationBar 中设置自定义字体 我需要 tahoma 字体 void viewDidLoad self title My text 完全有可能 只是做起来有点棘手 一旦你找到了你需要的字体 iOS 已经附带的替代品
  • PHP 中使用 @ 运算符抑制错误

    您认为 在您可能正在处理错误的情况下 使用 运算符来抑制 PHP 中的错误 警告是否有效 如果是这样 你会在什么情况下使用它 欢迎使用代码示例 编辑 回复者注意 我不想关闭错误报告 但是 例如 常见的做法是使用 fopen file 然后检
  • 向 Apache Pdfbox 添加字体?

    有没有办法将其他字体样式添加到 Apache Pdfbox 中 我们目前正在尝试解决在我们的系统中打印 PDF 的问题 目前正在使用PDF渲染器 https java net projects pdf renderer 我一直在寻找各种替代