Free Support Forum - groupdocs.com

GroupDocs.Viewer 转化中文乱码

您好,GroupDocs.Viewer java程序linux部署,将DWG格式文件转化为PDF时中文乱码(word转pdf也乱码),请问怎么解决?乱码.png (32.2 KB)
windows环境运行正常,linux系统运行乱码。
采用的版本为19.8.2

1 Like

@Jonesen_2020,

您能否共享示例DWG文件?另外,请指定您集成在项目中的API版本(例如19.11、20.1)。然后,我们将在最后调查此问题。

您好,采用的版本为19.8.2,现在本机(windows环境)下运行正常,部署到linux系统运行乱码

@Jonesen_2020,

您能否分享Linux生成的输出?另外,共享示例代码。

代码如下
public static List renderDocumentAsPDF1(String fileName, String htmlFilePath) {

List outFileNameList = new ArrayList();
try {
long startTime = System.currentTimeMillis(); //获取结束时间

  ViewerConfig config = Utilities.getConfiguration();
  config.setStoragePath("");

  ViewerImageHandler imageHandler = new ViewerImageHandler(config);
  String guid = fileName.trim();

  log.info("转换函数[renderDocumentAsPDF1]输入的全路径名为:{}", guid);

  PdfFileOptions options = new PdfFileOptions();
  options.setTransformations(Transformation.None);
  options.setRenderComments(true);

  FileContainer container = imageHandler.getPdfFile(guid, options);

  String tempFileName = fileName.trim();
  Map<String, String> result = getExtensionAndName(tempFileName);
  if (result != null && !StringUtils.isEmpty(result.get("fileName"))) {
     String fullFilePath = htmlFilePath + result.get("fileName") + "_" + 1 + ".pdf";
     log.info("附件转换为pdf存储全路径为:{}", fullFilePath);
     Integer outValue = Utilities.saveAsFile1(fullFilePath, container.getStream());
     if (outValue == 200) {
        outFileNameList.add(result.get("fileName") + "_" + 1 + ".pdf");
     }
  }

  long endTime = System.currentTimeMillis(); //获取结束时间

  log.info("附件[{}]转化为PDF时间:{}", tempFileName, (endTime - startTime) / 1000.0 + "s");

  return outFileNameList;

} catch (Exception exp) {
System.out.println("Exception: " + exp.getMessage());
exp.printStackTrace();
}

return outFileNameList;
}

public static Integer saveAsFile1(String outputFileName, InputStream inputStream) {
Integer outValue = 200;
try {
OutputStream outputStream = new FileOutputStream(outputFileName);
int read = 0;
byte[] bytes = new byte[1024];

    while ((read = inputStream.read(bytes)) != -1) {
        outputStream.write(bytes, 0, read);
    }
    outputStream.close();
    outputStream.flush();
} catch (Exception exp) {
    System.out.println("Exception: " + exp.getMessage());
    exp.printStackTrace();
    outValue = 500;
}

return outValue;

}

1 Like

@Jonesen_2020,

感谢您分享示例代码。我认为您忘记附加在Linux上生成的输出文件。也请分享。

@Jonesen_2020,

我们正在调查此问题。您的调查凭单ID为 VIEWERJAVA-2178。由于有任何更新,您将收到通知。
同时,您能否指定您的Linux环境详细信息(例如,操作系统及其版本)

Linux version 3.10.0-693.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Tue Aug 22 21:09:27 UTC 2017

Linux centos74 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

1 Like

@Jonesen_2020,

谢谢你的细节。

@Jonesen_2020,

这是与字体有关的问题。请尝试安装使用“ yum groupinstall字体”提供中文支持的软件包。看一下这个输出和这个截图.png (127.4 KB)。希望它将对您有所帮助。

您好,
我按照xshell命令:yum groupinstall -y Fonts
执行结果为: 已安装:
google-noto-emoji-fonts.noarch 0:20180508-4.el7

完毕!

xshell命令:echo $LANG
执行结果为:zh_CN.UTF-8

然后进行dwg转化pdf测试,输出的文件依旧存在中文乱码问题,请问我需要怎么设置?

另外,您上传图片中显示您转化用的是20.1版本,我现在采用的groupdocs viewer版本是19.8.2版本,跟这个有关系吗?

1 Like

@Jonesen_2020,

是的,我们可以在19.8.2版中重现此问题。但是修复仅在版本20.1中可用。我们建议您升级到v20.1。

您好,
Word,Excel,CAD转化为PDF文件在线预览,groupdocs-viewer for java 从19.8.2到20.1版本,变动比较大,调用过程中大量类和函数已过时,能提供一下20.1版转化为PDF文件的调用示例吗

image.png (16.6 KB)

@Jonesen_2020,

适用于Java 20.1的GroupDocs.Viewer更简单但易于实现。我们已将大多数旧类/方法移至旧名称空间。您可以在20.1 发行说明中清楚地了解公共API的更改。
为什么要迁移到20.1?
请看一下这些迁移注释。您可以获得最新的代码 此处

您好,我现在已经迁移到20.1版本,打包后部署linux系统(已安装中文字体)中文还是乱码,请问还需要在什么地方设置字体项
在java程序中有FontSource fontSource = new FolderFontSource(Utils.FONTS_PATH, SearchOption.TopFolderOnly);
FontSettings.setFontSources(fontSource);
这个地方需要改动吗?

您是怎么在linux系统怎么设置字体的,方便把您的运行命令贴出来吗?

1 Like

@Jonesen_2020,

您可以指示应用程序从特定文件夹中显式获取缺少的字体。

按照此代码或此文章,您可以设置自定义字体。您要做的就是将安装的字体路径传递给应用程序。希望它会有所帮助。

我现在不需要自定义字体格式
请问我发给您的dwg附件,您在处理过程中都进行了哪些操作,我现在linux系统下运行中文还是乱码

1 Like

@Jonesen_2020,

我们执行了以下步骤:

  • 使用yum groupinstall字体提供中文支持的已安装软件包
  • 执行此示例application.zip (1.1 MB)并与您共享屏幕截图以正确显示符号

如果这不能帮助您解决此问题,请告诉我们。

请问您在linux系统上安装中文字体执行的是什么命令?yum groupinstall “Chinese Support”??

我在linux系统上一直实现不了,公司已经购买了groupdocs viewer产品,能不能通过电话沟通下,我的电话是15263637891,您也可以留下您的联系方式,谢谢

1 Like