iText7 OfficeConverter转换含泰米尔语/卡纳达语文档及ODT失败求助
问题背景
使用试用版iText OfficeConverter工具转换含泰米尔语、卡纳达语的.docx文档时,生成的PDF中对应语言字符显示为方框;同时工具无法支持ODT格式转换。使用的代码如下:
private static void convert(File in, File out) throws IOException { OfficeConverter.convertOfficeDocumentToPdf(in, out, new OfficeDocumentConverterProperties() .setPageRange(new OfficePageRange().addPageSequence(1, 8))); }
输入文档截图:
输出PDF截图:
iText OfficeConverter问题解决办法
一、泰米尔语/卡纳达语显示方框问题
字符显示为方框的核心原因是生成PDF时未嵌入支持南亚语言的字体,可按以下方式处理:
- 添加支持目标语言的字体:在配置中引入支持泰米尔语、卡纳达语的开源字体(如Noto Sans Tamil、Noto Sans Kannada),修改代码示例:
private static void convert(File in, File out) throws IOException { OfficeDocumentConverterProperties props = new OfficeDocumentConverterProperties() .setPageRange(new OfficePageRange().addPageSequence(1, 8)) // 手动添加字体文件路径 .addFont(new File("path/to/NotoSansTamil-Regular.ttf")) .addFont(new File("path/to/NotoSansKannada-Regular.ttf")); OfficeConverter.convertOfficeDocumentToPdf(in, out, props); }
- 确保字体可被工具访问:若原文档使用了专用泰米尔语/卡纳达语字体,需将字体文件放置在工具可读取的目录,或通过字体提供者强制识别该字体。
二、ODT格式不支持问题
试用版OfficeConverter对ODT格式的支持存在限制,可通过两种途径解决:
- 确认试用版权限:部分试用版仅开放docx等主流格式转换,ODT功能可能需升级至正式版解锁,可查阅iText官方文档确认权限范围。
- 集成外部办公套件:配置LibreOffice/OpenOffice路径,利用其处理ODT格式转换,代码示例:
private static void convert(File in, File out) throws IOException { OfficeDocumentConverterProperties props = new OfficeDocumentConverterProperties() .setPageRange(new OfficePageRange().addPageSequence(1, 8)) // 设置LibreOffice安装路径(Windows下路径类似"C:\\Program Files\\LibreOffice") .setLibreOfficePath("/usr/lib/libreoffice") .setUseLibreOffice(true); OfficeConverter.convertOfficeDocumentToPdf(in, out, props); }
注意:需提前安装LibreOffice或OpenOffice,并确保路径配置正确。
内容的提问来源于stack exchange,提问作者Vishal Kumar
相关产品推荐
相关产品推荐

