peaceForEveryOne 2019-04-18 14:12 采纳率: 33.3%
浏览 797
已采纳

JAVA 使用POI替换word中的某些字符串,在本地调试一切ok,在服务器上出现乱码

最近做了一个在word中替换指定字符串,插入图片,转换成pdf的需求,弄了两天多才搞出来,本以为everything is ok,但是在本地调试什么都是好的。
放到服务器上以后。。。却乱码了。。。乱码了。。。码了。。。了,求大佬列出可能的情况。
乱码的样子是这样的:图片说明

刚刚问了下运维:服务器是这个alpine
贴上代码,各位大佬帮忙分析分析

public JSONObject createTemplatePdf(File file) throws Exception {
        JSONObject res;
        // 验证License
        if (getLicense()) {
            FileOutputStream fileOutputStream = null;
            FileInputStream pdfInputStream = null;
            try {
                Document doc = new Document(new FileInputStream(file));
                // 以下几行代码是把这个word文件转化成pdf文件
                File pdfFile = mkDirectoryAndFile(FILE_TYPE_PDF);
                fileOutputStream = new FileOutputStream(pdfFile);
                doc.save(fileOutputStream, SaveFormat.PDF);
                // 下面把这个文件传到文件服务器,并返回信息
                pdfInputStream = new FileInputStream(pdfFile);
                MultipartFile multipartFile = getMulFile(pdfFile);
                JSONArray jsonArray = sharedServiceClient.saveFile(multipartFile);
                res = jsonArray.getJSONObject(0);
                // 删除临时文件
                if (pdfFile.exists()) {
                    pdfFile.delete();
                }
                // 删除临时文件
                if (file.exists()) {
                    file.delete();
                }
            } finally {
                if (fileOutputStream != null) {
                    fileOutputStream.flush();
                    fileOutputStream.close();
                }
                if (pdfInputStream != null) {
                    pdfInputStream.close();
                }
            }
        } else {
            throw new Exception("授权文件失效!");
        }
        return res;
    }
public MultipartFile getMulFile(File file) {
        FileItem fileItem = createFileItem(file);
        MultipartFile mfile = new CommonsMultipartFile(fileItem);
        return mfile;
    }
@PostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    JSONArray saveFile(@Param("file") MultipartFile file);

调试了一下,发现是word转pdf的时候,有问题。帮忙看下这一段代码有什么地方会造成本地和服务器的差异吗?

  • 写回答

7条回答

  • peaceForEveryOne 2019-04-19 14:19
    关注

    已经搞定,感谢上面大佬们的回复,确实是语言包的问题,因为word里面全弄的是微软雅黑这个字体,
    于是就单独把微软雅黑字体放进服务器,但是依旧是不行,于是我以为不是这个问题,今天实在是没招了,
    网上搜了一大堆,大半都是说服务器字体的原因,然后就让运维把windows下的所有字体全部移到服务器下,
    然后再试了一次,就好了。代码没有变动!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?