这是第2天我花没有结果调查。 至少现在,我可以问非常具体的东西。
我想写包含在PDF文件中使用一些非拉丁字符有效的HTML代码的iText和更具体的使用ITextRenderer从飞碟 。
我的短示例/代码先初始化一个字符串变量DOC具有此值:
String doc = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en\">"
+ "<body>Some greek characters: Καλημέρα Some greek characters"
+ "</body></html>";
下面是我在调试时使用的代码。 我这个字符串保存为HTML文件,然后我打开它通过浏览器只是为了仔细检查HTML内容有效,我仍然可以读希腊字符:
//write for debugging purposes in an html file
File newTextFile = new File("C:/work/test.html");
FileWriter fw = new FileWriter(newTextFile);
fw.write(doc);
fw.close();
下一步是尝试写在PDF文件中这个值。 这是我的代码:
ITextRenderer renderer = new ITextRenderer();
//add some fonts - if paths are not right, an exception will be thrown
renderer.getFontResolver().addFont("c:/work/fonts/TIMES.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
renderer.getFontResolver().addFont("c:/work/fonts/TIMESBD.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
renderer.getFontResolver().addFont("c:/work/fonts/TIMESBI.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
renderer.getFontResolver().addFont("c:/work/fonts/TIMESI.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
final DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory
.newInstance();
documentBuilderFactory.setValidating(false);
DocumentBuilder builder = documentBuilderFactory.newDocumentBuilder();
builder.setEntityResolver(FSEntityResolver.instance());
org.w3c.dom.Document document = builder.parse(new ByteArrayInputStream(
doc.toString().getBytes("UTF-8")));
renderer.setDocument(document, null);
renderer.layout();
renderer.createPDF(os);
我的代码的最终结果是:
在HTML文件中 ,我得到: 一些希腊字符:Καλημέρα一些希腊字符 (预计)
在PDF文件获取: 一些希腊字符:一些希腊字符 ( 意外 -希腊字符被忽略!)
依赖关系:
Java版本 “1.6.0_27”
iText的 - 2.0.8.jar
de.huxhorn.lilith.3rdparty.flyingsaucer.core - 渲染 - 8Pre2.jar
我也一直在尝试用更多的字体,但我想,我的问题无关使用错误的字体。 任何帮助都欢迎。
感谢名单