私は同じ問題を抱えており、あなたが自分で述べたように、フォントの問題であることがわかりました。システム上のフォントがエンコーディングをサポートしている必要があります。
例: "Arial" フォントを使用するドキュメントの場合、ドイツ語のウムラウト文字は "?" として表示されます。
次のように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);
必要に応じて pdfOptions.fontEndcoding (私の場合は「iso-8859-15」) の属性を設定してみてください。
これを「UTF-8」に設定すると、継ぎ目がデフォルトになり、特殊文字で同じ問題が発生しました。
私が見つけた別のこと:
Word 2007/2010 のデフォルトである "Calibri" フォントを使用すると、UTF-8 エンコーディングを使用しても問題は発生しませんでした。おそらく、PDF の生成に使用される iText に埋め込まれた Type-1 Arial フォントは、UTF-8 エンコーディングをサポートしていません。