dejavu中如何添加html文件,如何使用iText和Flying Saucer在HTML中创建PDF格式的字体? | 所有编程讨论 | zhouni.net...
问题 如何使用iText和Flying Saucer在HTML中创建PDF格式的字体?
我将波兰字体嵌入到从HTML转换的PDF中时遇到问题。
我的HTML代码在正文中有样式:
我尝试了两种将这种HTML转换为PDF的方法:
与htmlcleaner的FOP
iText与飞碟
对于FOP,我可以将所有使用的字体添加到其配置文件中,然后创建PDF,嵌入这些字体(如果字体用于HTML)。在生成的PDF中,我在Identity-H编码中使用了Tahoma字体。它看起来不错 - 所有波兰语字母都按预期显示。
然后我尝试用iText进行这样的转换:看起来比较简单,因为我不需要为每个HTML创建转换。不幸的是,我不知道如何将使用过的字体嵌入到生成的PDF中。我发现的大多数示例都是从头开始创建PDF,我不知道如何将这些方法应用于Flying Saucer ITextRenderer或转换中使用的其他对象。
我当前的代码尝试添加字体 PDFCreationListener.preOpen() 得到 ITextFontResolver 并添加字体 fs.addFont(path, true);。但我创建的所有.pdf都没有我想要的字体。
第二个问题是结果PDF没有波兰语字母。飞碟或iText有问题吗? Acrobat显示创建的PDF文档使用带Ansi编码的Helvetica和ArialMT作为字体。我认为这个Ansi编码并不好。如何设置波兰语编码(Identity-H)?
1141
2017-09-23 07:03
起源
答案:
您可以尝试使用-fs-pdf-font-embed和-fs-pdf-font-encoding css规则。
-fs-PDF的字体嵌入: 使用嵌入在font-face规则中的值
让Flying Saucer在PDF文档中嵌入一个字体文件,
避免需要调用FontResolver的addFont()方法
类
-fs-PDF的字体编码: 在font-face规则中使用来指定
enconding您嵌入PDF中的自定义字体;拿走了
编码的名称作为值。
例如在你的print css中:
@font-face {
font-family: DejaVu Serif;
src: url(fonts/DejaVuSerif.ttf);
-fs-pdf-font-embed: embed;
-fs-pdf-font-encoding: Identity-H;
}
9
2017-10-05 14:07
谢谢,我试过这个,这不起作用。当然我也试过了 FontResolver.addFont(),但在结果PDF中没有我想要的字体。 - Michał Niklas
奇怪,这对我来说很好。只要确保使用正确 src 句法; FS似乎只了解了 url() 部分,不是 format() 或其他任何东西。必须只有一个src只有ttf文件。上面的例子有效。 - rustyx
我还可以确认,这个DejaVu Serif字体可以正常工作 - Kristof Dombi
答案:
您可以尝试使用-fs-pdf-font-embed和-fs-pdf-font-encoding css规则。
-fs-PDF的字体嵌入: 使用嵌入在font-face规则中的值
让Flying Saucer在PDF文档中嵌入一个字体文件,
避免需要调用FontResolver的addFont()方法
类
-fs-PDF的字体编码: 在font-face规则中使用来指定
enconding您嵌入PDF中的自定义字体;拿走了
编码的名称作为值。
例如在你的print css中:
@font-face {
font-family: DejaVu Serif;
src: url(fonts/DejaVuSerif.ttf);
-fs-pdf-font-embed: embed;
-fs-pdf-font-encoding: Identity-H;
}
9
2017-10-05 14:07
谢谢,我试过这个,这不起作用。当然我也试过了 FontResolver.addFont(),但在结果PDF中没有我想要的字体。 - Michał Niklas
奇怪,这对我来说很好。只要确保使用正确 src 句法; FS似乎只了解了 url() 部分,不是 format() 或其他任何东西。必须只有一个src只有ttf文件。上面的例子有效。 - rustyx
我还可以确认,这个DejaVu Serif字体可以正常工作 - Kristof Dombi
我的错误是使用 FontResolver.addFont() 在 PDFCreationListener.preOpen()。我刚才搬过它 renderer.layout(); 它现在有效!
1
2017-10-17 07:01
嘿,我有同样的问题,我尝试了这段代码 renderer.getFontResolver().addFont("c:/simsun.ttf", "UTF-8",BaseFont.EMBEDDED);//I also tried with arialuni.ttf 但它不起作用 - Ankur
它也不适合我。 - gtiwari333
dejavu中如何添加html文件,如何使用iText和Flying Saucer在HTML中创建PDF格式的字体? | 所有编程讨论 | zhouni.net...相关推荐
- latex中表格怎么加标题_导出到LaTeX时,使组织表格标题显示在表格下方 | 所有编程讨论 | zhouni.net...
我正在制作一份文件 org-mode 其中有相当多的表,使用内置的表功能构建.我已经为表格添加了标题,但是当我将它们导出到 LaTeX,而不是出现在表格下方的标题,它出现在它上面.在手册中 关于表格的 ...
- vs的资源管理器中一次性添加整个文件夹
如何在vs的资源管理器中一次性添加整个文件夹 如何一次添加整个文件夹到vs资源管理器中? 1.将你想要添加的文件夹复制到你想要添加的项目当中 2.打开你所在的项目,点击项目,在菜单中,项目-> ...
- 在Xcode8中 如何添加.pch文件
在Xcode8中 如何添加.pch文件 转载于:https://www.cnblogs.com/domore77/p/5958814.html
- ug后处理如何加密_UG在NX加工中如何添加后处理文件?
在使用UG加工中,往往使用的机床不一样就要特定后处理文件,那么如何在UG中添加之前制定好的后处理文件呢? 下面以UG8.5为例来说明. 1.首先确认UG后处理文件是否完整. 完整的后处理文件包括后缀为 ...
- Qt工程中如何添加.pri文件
pri文件中的i 是包含(include)的首字母.类似于C.C++中的头文件就是我们可以把 .pro 文件内需要include的一部分或者多个工程相同的部分单独放到一个 .pri 文件内,然后包含到 ...
- ug后处理如何加密_UG编程中如何添加后处理文件呢?小小干货拿走不谢
UG中如何添加后处理可能对于有的小伙伴来说都不知道怎么处理,那么今天我们就来学习一下吧 觉得简单的小伙伴可以分享一下其他的小技巧哦,这样子方便大家一起学习哈 第一:我们打开UG安装目录下--[UG10 ...
- qt中怎样添加库文件
qmake -project qmake name.pro 在Qt中工程通过.pro文件管理,所以库文件要在.pro文件中添加. 1.添加库文件 静态库 linux:LIBS += your_lib_ ...
- win11 / win10 彻底删除系统“快速访问”中自动添加的文件夹 - 不再自动添加
效果图 修改前,系统自动在"快速访问"中添加常用的文件夹: 修改后,干干净净,不再自动显示: 实现步骤 (1 / 4)对着"快速访问"右键,"显示更多 ...
- QT项目添加现有文件后不能运行,MFC在类视图中自动隐藏类
解决方案:1)QT 5.6版本的QtCreator打开pro文件,在最后加一行空行或者删除一行空行,保存即可: 2)在隐藏的类对应的头文件中增加一行或删除一行(空格也可以),即可自动出现. 转载于:h ...
- iPhone 在xcode4.2中手工添加GPX文件,指定位置
XCode 4.2终于支持地点模拟了,不用忍受真机调试的各种不便了,模拟方法也很简单(恕我盗用几个别人的图): 当Debug一个需要地理位置信息的App时,在Debug栏默认就会有地点模拟的图标,如下 ...
最新文章
- 小程序商城制作,轻松打造自己的会员系统
- 浅谈Aho-Corasick automaton(AC自动机)
- Python 写各大聊天系统的屏蔽脏话功能原理
- Git仓库迁移,包括所有的分支、标签、日志
- pythonpyqt5线程暂停重启时间_PyQT5 停止死循环线程(监控文件是否修改)
- Mark—零散知识汇总
- C# WinForm打开PDF文件
- 提高淘宝店铺动态评分的四大技巧
- 中华名将索引 - 第一批:白起
- Java-如何防止XSS攻击
- 新视智科“5G+工业互联网”产品线南山研发中心揭牌成立,助力制造业转型创新发展
- 发展智慧城市,需要重点解决哪三大问题?
- 看得更近,监督得更好:通过基于组件的鉴别器一次性生成字体
- GTD软件比较和选用
- 1001. Poker (思维 / 模拟)(2020年百度之星*程序设计大赛-初赛二)
- 第三节 数据通信基础
- 边缘检测:更丰富的卷积特征 Richer Convolutional Features for Edge Detection
- 出现Cannot refer to the non-final local variable guoDeGang defined in an enclosing scope
- 风丘科技为您提供电动汽车热管理方案
- ruby 实现 bing 的 geocode
热门文章
- xp系统安装金蝶k3服务器配置,xp安装金蝶k3安全设置.doc
- 如何把字幕文件转换成txt文件或word文档,.ass文件内容怎么提取出来txt文件
- flink集成springboot案例_集成-Apache Flink+Spring Boot
- jeff dean_Jeff Dean的构建大型分布式系统的软件工程建议
- 世界时间经纬_世界主要城市经纬度及时区列表
- debugger使用
- 2021年中国云游戏产业发展环境(PEST)分析:中国云游戏服务拥有光明前景[图]
- 用户认证授权系统方案思考
- AtCoder Beginner Contest 245 A~E 题解
- 海洋角度分析全球气候变暖停滞原因