- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
我希望有人能帮助我……看起来我想做的应该相当简单,但我已经为这件事奋斗了一天多了,但我没有想法。我在 StackOverflow 和整个 Internet 上找到了很多信息,但都没有帮助我解决这个问题。
我正在尝试使用 itext-2.0.8 和 core-renderer-R8 来创建带有嵌入式字体的 PDF。我正在尝试从有效的 XHTML 生成 PDF,并使用 @font-face 样式标签嵌入字体。我已通过在浏览器中打开文件确认 @font-face 标签包含字体。而且我总是小心地保持 TTF 文件相对于 XHTML/CSS 文档。
为了尝试解决这个问题,我创建了一个“Hello World”类型的小程序来尝试嵌入字体。我采取了两种不同的方法,但都未能产生预期的结果。我在 http://christopherluft.com/FlyingSaucer.zip 放置了这个小 Eclipse 程序的副本。
程序在这两种情况下都会生成 PDF,但都没有按预期嵌入 PDF。使用带有 setDocument 的文件的第一种方法不会产生错误,但也不会产生字体。第二种方法生成 PDF,但在调试输出中显示 java.net.MalformedURLException。
我已经尝试了各种路径和 URL 的多种排列;然而,没有一个不能产生预期的结果。我怀疑我无法理解 ITextRenderer.setDocument;但是,我很难找到任何适合我的用例的文档。
我尝试的第一种方法是:
public static void main(String[] args) throws IOException, DocumentException {
System.getProperties().setProperty("xr.util-logging.loggingEnabled",
"true");
XRLog.setLoggingEnabled(true);
String inputFile = "sample.xhtml";
String url = new File(inputFile).toURI().toURL().toString();
String outputFile = "firstdoc.pdf";
OutputStream os = new FileOutputStream(outputFile);
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(url);
renderer.layout();
renderer.createPDF(os);
os.close();
}
我使用的第二种方法(更接近我们在应用程序中使用它的实际方式)是:
public static void main(String[] args) throws IOException, DocumentException {
System.getProperties().setProperty("xr.util-logging.loggingEnabled", "true");
XRLog.setLoggingEnabled(true);
String inputFile = "sample.xhtml";
String url = new File(inputFile).toURI().toURL().toString();
DocumentBuilder documentBuilder;
org.w3c.dom.Document xhtmlContent;
try
{
documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
documentBuilder.setEntityResolver(new XhtmlEntityResolver(new SuppressingEntityResolver()));
xhtmlContent = documentBuilder.parse(url);
System.out.println(url);
String outputFile = "firstdoc.pdf";
OutputStream os = new FileOutputStream(outputFile);
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(xhtmlContent,".");
renderer.layout();
renderer.createPDF(os);
System.out.println("Finishing up....");
os.close();
}
catch (SAXException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (ParserConfigurationException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
XHTML 中的@font-face 看起来像这样:
@font-face {
font-family: 'MisoRegular';
src: url("miso-regular-webfont.ttf");
-fs-pdf-font-embed: embed;
-fs-pdf-font-encoding: Identity-H;
}
现在我觉得这是一个非常常见的用例,我想我只是没有执行一个简单的步骤来让它工作......问题是我已经这样做了一段时间并且认为我无法透过树木看到森林。任何人都可以提供给我的任何帮助将不胜感激。感谢您的宝贵时间。
最佳答案
我在使用 Flying Saucer 时遇到过问题,字体似乎没有正确嵌入,结果是我尝试嵌入的字体已损坏或至少不完整。缺少有关字体系列和描述的属性。当我尝试在 OS X 上使用 FontBook 中的验证文件选项验证我的字体时,我立即收到警告:
然而,FlyingSaucer 默默地失败了,只是继续将 Times-Roman 和 Times-Bold 作为默认字体嵌入。当我尝试使用通过 FontBook 验证的字体时,我发现该字体已正确嵌入。
我花了数小时试图增加 FlyingSaucer 日志记录的冗长程度以获取更多信息,但直到我逐步完成整个渲染过程并恰好注意到 FontFamily 在加载字体后的调试器,它不包含我希望它注册的名称。
底线: 如果您在使用 FlyingSaucer 和字体时遇到问题并且用头撞墙,请确保您的字体有效。
关于css - @font-face 与 Flying Saucer ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10323480/
我在 asp.net 应用程序(使用 IKVM)中使用 flysaucer 和 iText 将 HTML 转换为 PDF。如果我将样式直接放在 html 中,它工作正常(即使样式放在样式标签之间),但
我一直在尝试将带有内容的伪元素添加到正在使用飞碟库转换的页面的 CSS 中。在常规浏览器中以 HTML 格式查看页面时,代码运行良好,我可以看到伪元素 (:before)。然而,当使用 Flying
我使用 Flying Saucer 和 itext 将 html 转换为 pdf,为了在垂直方向写入文本,我尝试了简单的 css: style="writing-mode: tb-rl"; 浏览器的变
我有一个组合框,用户可以在其中选择可用的语言。该应用程序包含每种语言的属性文件。在页面的资源部分,资源包是根据用户配置文档中的语言标记(DE、EN ...)计算的。 有什么简单的方法可以根据组合框的值
我已经在页面上嵌入了Youtube播放器,并使用JavaScript生成了“即时”播放列表。观看期间是否可以在播放列表的末尾添加新视频?我可以从列表的开头删除视频吗? 最佳答案 您可以,但是在尝试在视
...特别是在 Groovy 中(因此是标签)? 在 Java 中你不能这样做......但在动态语言(例如 Python)中你通常可以。 在 Eclipse 中尝试做类似在 Spock 特性(即测试
在编写 shell 脚本(据我所知通常没有 .* 后缀)时,我通常会执行以下操作 1) emacs foo2) 输入 #!/bin/sh3) 关闭并重新打开 emacs 以启用 shell-scrip
嗨,我有一个对象:var myobject = new Object;我想在以这种方式循环 jquery 输入集合时动态填充它的属性: $('.test').each(function(){
我认为可以在 C 中即时连接字符串(字符数组)。 char* str1= "hello" " " "world"; 但是当我尝试以下操作时,我会收到一条错误消息(函数 fopen 的参数太少)。为什么
我有下表: store | dow | turnover ------+-----+----------- 1 | 1 | Eu59.426,00 1 | 2 | Eu33.
我需要使用标准 UNIX diff 命令和 python subprocess 模块创建一个差异文件。问题是我必须在不创建临时文件的情况下比较文件和流。我想过通过 os.mkfifo 方法使用命名管道
Fly-Pie 是一个用于 GNOME 的独特的菜单启动器,以操作鼠标为主的用户可以用它进行一些操作。 应用启动器可以方便地快速切换到一个活动窗口,启动新的应用,等等。 Ulau
strftime(),根据 cpan.org: print strftime($template, @lt); 我只是想不出这个正确的 Perl 代码配方。它在我调用 strftime() 的地方不断
这里有没有人得到 word-wrap: break-word 在 flying-saucer 中工作?我在 flying-saucer 中将 html 渲染为 png。我可以找到一个 3 年前的话题
Windows 7,Emacs 25.1 我需要对我的自定义文本进行“即时”拼写检查(例如,强调不正确的单词)。但我在 中写文字两种语言 : 英语和俄语。我想在两种语言的拼写检查之间轻松切换。 什么是
一直在玩飞碟R8,试过从首页隐藏页眉和页脚 我的PDF。 我关注了 hint试图遵循 的 W3C 规范内容:元素() (W3C running elements)在我的 print.css 中。据描述
我正在使用由按钮触发的 FlyTo 动画来放大 map 。平移缩放动画结束后,无法使用鼠标滚轮缩小。 如果我单击基本的缩小控件,它就可以工作,如果我在触摸屏上测试它,它就可以工作。如果我尝试使用鼠标滚
我无法将Wild-fly容器连接到在其他容器中运行的PostgreSQL服务器。但是,我能够从主机连接到数据库。 最佳答案 看看networking和links。我建议联网。网络内部的容器名称可以由d
我正在使用 Flying Saucer/iText 生成报告。现在报告有一个条件,如果特定条件发生,报告应该移动到 pdf 的下一页,并在 PDF 上添加数据等等。 问候帕万 最佳答案 您必须使用 c
您好,我有一个 tabpanel,其中有两个面板,但是当我尝试使用 tabpanel.show() 显示一个面板时。我收到这条消息 Ext.fly() null or not an object do
我是一名优秀的程序员,十分优秀!