找回密码
 立即注册

QQ登录

只需一步,快速开始

littleknife
金牌服务用户   /  发表于:2021-3-25 14:06  /   查看:2918  /  回复:8
GCEXCEL转换成PDF中文变问号 ,服务端如何设置PDF字体

8 个回复

倒序浏览
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-3-25 14:24:40
沙发
回复 使用道具 举报
littleknife
金牌服务用户   /  发表于:2021-3-25 14:49:51
板凳
DerrickJiao 发表于 2021-3-25 14:24
您可以参考这demo
https://demo.grapecity.com.cn/documents-api-excel-java/demos/setfontsfolderpath

Workbook.FontsFolderPath = "/var/usr/public/Fonts";
请问下这个设置字体文件夹,文件夹里面支持的的字体库要自己去获取吗?这个GCExcel或者PDFbox有自带的库吗
回复 使用道具 举报
littleknife
金牌服务用户   /  发表于:2021-3-25 14:51:07
地板
DerrickJiao 发表于 2021-3-25 14:24
您可以参考这demo
https://demo.grapecity.com.cn/documents-api-excel-java/demos/setfontsfolderpath

我们现在是在开发环境导出的PDF中文是正常的,到了生产环境导出PDF中文就变成问号了
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-3-25 14:57:27
5#
littleknife 发表于 2021-3-25 14:51
我们现在是在开发环境导出的PDF中文是正常的,到了生产环境导出PDF中文就变成问号了

这个字体库是要您去添加的,一般来说GcExcel导出不需要注册字体,建议您提供能复现问题的demo,这边调研一下。
回复 使用道具 举报
littleknife
金牌服务用户   /  发表于:2021-3-29 09:06:50
6#
  1. ByteArrayOutputStream out = new ByteArrayOutputStream();
  2. String spreadjson = "spreadjs 导出来的样式"
  3. out.write(spreadjson.getBytes(StandardCharsets.UTF_8));                               
  4.                                
  5. InputStream excelStream = new ByteArrayInputStream(bytes);
  6. TempFileCache cache = CacheFactory.getCommonCacheFactory().getTempFileCache();
  7. byte[] excelBytes = kd.fi.bcm.spread.util.SpreadUtils.fromJson(excelStream);
  8. String url = cache.saveAsUrl(fileName+".xls",excelBytes,100);//cache到文件服务器
  9. Workbook workbook = new Workbook();
  10. workbook.open(cache.getInputStream(url));
  11. ByteArrayOutputStream out = new ByteArrayOutputStream();
  12. workbook.save(out, SaveFileFormat.Pdf);
  13. InputStream fis = null;
  14. String pdfURL = url;
  15. fis = new ByteArrayInputStream(out.toByteArray());
  16. pdfURL = cache.saveAsUrl(fileName+".pdf",fis,100);
复制代码


大致代码就是这样了
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-3-29 09:20:26
7#
littleknife 发表于 2021-3-29 09:06
大致代码就是这样了

从您的代码来看应该没有问题,建议您使用4.0.4尝试导出pdf,有可能是您的版本较旧存在的问题。
回复 使用道具 举报
littleknife
金牌服务用户   /  发表于:2021-3-29 10:26:45
8#
DerrickJiao 发表于 2021-3-29 09:20
从您的代码来看应该没有问题,建议您使用4.0.4尝试导出pdf,有可能是您的版本较旧存在的问题。

应该不是版本的问题吧,开发环境导出的PDF中文是正常的,到了生产环境导出PDF中文就变成问号了
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-3-29 10:31:42
9#
littleknife 发表于 2021-3-29 10:26
应该不是版本的问题吧,开发环境导出的PDF中文是正常的,到了生产环境导出PDF中文就变成问号了

您可以尝试用下面的代码设置字体
worksheet.getRange("A1").getFont().setName("Calibri");

如果仍未解决您的问题,需要您上传一个完整的demo这边做进一步调研。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部