导出PDF乱码怎么办???急,在线等......
有很多刚接触SpreadJS的朋友就会对导出pdf乱码以及要注册中文字体这个问题非常不解。这是PDF文件的特殊性造成的。PDF是Portable Document Format的简称,意为“便携式文档格式”,它原生仅仅带有英文字体,不包含任何中文字体,因此当导出的内容中含有中文字体编码时,一定会显示乱码,所以通常情况下,我们都需要为PDF进行字体注册操作。如果自定义字体,相信这两篇文章讲得都很详细了,可以看下这两篇文章。
https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/features/pdf/custom-font-export-pdf
https://gcdn.grapecity.com.cn/showtopic-54573-1-1.html
这篇文章主要讲讲常见的一些问题。
1、我的字体文件怎么来?
首先,先确认我们的表单需要用到哪些字体,然后去找对应字体的ttf文件(电脑上或者是一些字体网站上都有,需注意版权问题)。找到之后将其转为base64格式的文件。具体如何转,可以找一些在线的文件转换器,不过在线的有可能会因为字体文件太大而崩溃,或者有能力的大佬可以自己写一个转换的工具。然后通过下面的方式去把我们的字体文件存储为一个js文件去等待引用。
2、注册完字体后,为什么还不生效?
那是因为我们表单上默认的字体是Calibri,我们要想单元格上显示某个字体并导出,需要用font接口设置字体。例如
sheet.getCell(1, 1).text('FontStyle').font('italic bold 15px/30px 宋体');
那我不想一个一个设置怎么版?更加简单,直接用我们的编辑器通过UI界面操作,还不用涉及代码
那我都按照上面的操作了,为什么还不生效呢?还有一个可能就是注册的字体和上面font接口使用的不是同一个字体,例如,我用代码注册了宋体
sheet.getCell(1, 1).text('FontStyle').font('italic bold 15px/30px 宋体');
但是我在注册字体的时候写成了simsun,那么就会找不到这个字体导出来也会乱码。
GC.Spread.Sheets.PDF.PDFFontsManager.registerFont("simsun", fonts);
3、如何注册多个字体,可以参考下面的代码注册
4、我想在页面上显示一些特殊字体怎么办?
可以用font-face处理,可以参考下面的链接,另外附件也上传了一个简单的demo。
https://gcdn.grapecity.com.cn/showtopic-54567-1-1.html
页:
[1]