word转PDF不能显示中文字体问题

本文介绍如何使用Maven依赖将Word文档转换为PDF格式,并解决了在生产环境中因字体显示问题导致的文档转换异常情况。通过在Ubuntu系统上安装特定的中文字体并更新字体缓存,成功实现了跨平台的文档转换。

maven依赖

     <dependency>
            <groupId>fr.opensagres.xdocreport</groupId>
            <artifactId>org.apache.poi.xwpf.converter.pdf</artifactId>
            <version>1.0.4</version>
        </dependency>

java 代码实现

/**
     *  PdfConverter 转PDF
     * @param sfileName
     * @param toFileName
     * @return
     */
    public static boolean wordToPDF(String sfileName, String toFileName){
        OutputStream out = null;
        try {
            XWPFDocument document=new XWPFDocument(new FileInputStream(new File(sfileName)));
            //
            File outFile = new File(toFileName);
            outFile.getParentFile().mkdirs();
            out = new FileOutputStream(outFile);
            //gb2312
            PdfOptions options= PdfOptions.create();
            PdfConverter.getInstance().convert(document,out,options);
        }catch (FileNotFoundException e){
            LoggerUtil.error(PrintOpreateWord.class,e.getMessage(),e);
            return false;
        } catch (IOException e) {
            LoggerUtil.error(PrintOpreateWord.class,e.getMessage(),e);
            return false;
        } finally {
            if(out != null){
                try {
                    out.close();
                } catch (IOException e) {
                    LoggerUtil.error(PrintOpreateWord.class,e.getMessage(),e);
                }
            }
        }
        return true;
    }

问题

在本地运行正常,但是到生产环境字体显示不出来。。。

解决办法

字体安装:
这里就把window上的字体打包,选择中文字体就行,上传到Ubuntu系统, 安装好就成。

window系统中的字体路径: C:\Windows\Fonts 下

找到字体库路径
/usr/share/fonts
目录下,在其中建立了一个win目录,用于存放上传的中文字体,
再执行命令:

fc-cache -fv

将字体刷到字体缓存中。然后重启下应用

在将Word文档换为PDF时,遇到字体颜色无法正常显示问题是较为常见的,尤其是在跨平台或使用特定换工具时。此类问题通常与字体嵌入、颜色模式、换工具的兼容性以及文档设置有关。以下是针对该问题的详细解决方案: ### 3.1 检查字体是否支持嵌入 某些字体由于版权限制,可能不允许嵌入到PDF中,这会导致换后字体样式和颜色发生变化。在Word中打开文档后,可以通过以下步骤检查字体是否支持嵌入: - 点击“文件” > “选项” > “保存” - 查看“将字体嵌入文件”选项是否已勾选 - 如果未勾选,请启用该选项并重新进行换[^2] ### 3.2 使用兼容性更强的换方式 使用Microsoft Word内置的“另存为PDF”功能通常能更好地保留原始格式,包括字体颜色。若使用第三方工具进行换,建议优先选择支持完整格式保留(如字体、颜色、排版)的专业工具,例如Adobe Acrobat、LibreOffice或使用Aspose.Words等开发库进行程序化换[^1] ### 3.3 设置PDF兼容性选项 在Word中导出为PDF时,可以尝试调整“选项”中的PDF/A兼容性设置,确保颜色和字体信息得以保留。具体操作为: - 在“另存为”对话框中选择“PDF”格式 - 点击“选项”按钮 - 勾选“ISO 19005-1 兼容性(PDF/A)” - 保存并查看PDF效果[^2] ### 3.4 使用代码示例进行程序化换(Aspose.Words) 若开发者在程序中使用Aspose.Words进行WordPDF换,需确保字体资源被正确加载并嵌入PDF。以下是一个示例代码片段: ```csharp // 使用Aspose.Words将Word文档换为PDF并保留字体颜色 Document doc = new Document("input.docx"); doc.Save("output.pdf", SaveFormat.Pdf); ``` 如需进一步控制字体嵌入行为,可添加如下设置: ```csharp PdfSaveOptions options = new PdfSaveOptions(); options.PdfFontEmbeddingMode = PdfFontEmbeddingMode.EmbedAll; doc.Save("output_with_font_embedding.pdf", options); ``` 确保在项目中引用了正确的字体资源,并在部署环境中安装所需字体,以避免运行时字体缺失问题[^3] ### 3.5 检查颜色模式与文档预设 某些文档可能使用了非标准颜色模式(如RGB或CMYK),在换过程中可能导致颜色显示异常。建议在Word中将颜色模式统一设置为RGB,并在导出PDF时选择“高质量打印”或“标准”预设,以提高颜色保真度[^2] ### 3.6 使用在线换工具时的注意事项 如果使用在线工具进行换,应选择支持字体嵌入和颜色保留的服务。部分免费工具可能为了压缩文件大小而简化字体或颜色信息,导致输出效果不佳。可尝试多个工具进行对比测试,以确认问题是否与特定工具相关[^4] ---
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值