当我是一个转换DOCX文档PDF我的国家的字符转换为“#”标记。
有什么办法来设置对PDF文档的字体编码?
我在过去使用xdocreport,它可以搞定,但是我已经和图片,页眉和页脚的问题。
Docx4j管理要做到这一点,但不是字体。 转换后,字体有ANSI编码,而我想有Windows-1250。 有没有设置这个选项?
当我是一个转换DOCX文档PDF我的国家的字符转换为“#”标记。
有什么办法来设置对PDF文档的字体编码?
我在过去使用xdocreport,它可以搞定,但是我已经和图片,页眉和页脚的问题。
Docx4j管理要做到这一点,但不是字体。 转换后,字体有ANSI编码,而我想有Windows-1250。 有没有设置这个选项?
我的问题是 - 缺少Linux服务器上适当的True Type字体。 在那里,而不是插入(没有我的代码页)的默认字体。
我解决了这个问题,通过安装在默认的Windows字体女士TTF-mscorefonts的安装程序
在Debian:
apt-get install ttf-mscorefonts-installer
我有同样的问题,结果发现,随着你自己,一个字体问题提到。 在系统上的字体需要支持您的编码。
如:使用“宋体”字体文件,德国元音字符显示为“?”。
我发现了一个其它的解决方案,以覆盖PDF字体编码如下:
//
// read template
//
File docxFile = new File(System.getProperty("user.dir") + "/" + "Test.docx");
InputStream in = new FileInputStream(docxFile);
//
// prepare document context
//
IXDocReport report = XDocReportRegistry.getRegistry().loadReport(in, TemplateEngineKind.Velocity);
IContext context = report.createContext();
context.put("name", "Michael Küfner");
//
// generate PDF output
//
Options options = Options.getTo(ConverterTypeTo.PDF).via(ConverterTypeVia.XWPF);
PdfOptions pdfOptions = PdfOptions.create();
pdfOptions.fontEncoding("iso-8859-15");
options.subOptions(pdfOptions);
OutputStream out = new FileOutputStream(new File(docxFile.getPath() + ".pdf"));
report.convert(context, options, out);
尝试(“ISO-8859-15”在我的情况)设置在pdfOptions.fontEndcoding属性您的需求。
将其设置为“UTF-8”,其接缝是默认的,导致了与特殊字符同样的问题。
另一件事,我发现:
使用“宋体”字体,这是默认的Word 2007/2010,并没有出现问题,使用UTF-8编码时也是如此。 也许嵌入类型-1 Arial字型在iText的,这是用于产生PDF文件,不支持UTF-8编码。