找回密码
 立即注册

QQ登录

只需一步,快速开始

9294865

注册会员

5

主题

22

帖子

149

积分

注册会员

积分
149
最新发帖
9294865
注册会员   /  发表于:2016-12-15 17:52  /   查看:5513  /  回复:8
本帖最后由 9294865 于 2016-12-15 17:55 编辑

用下面这段代码话,把一个chart保存到pdf里,里面的汉字都乱码了,我看了saveImageToDataUrl,和drawSvg两个方法,没有地方可以设置字体,请问如何解决

myChart.saveImageToDataUrl(wijmo.chart.ImageFormat.Svg, function (url) {
        doc.drawSvg(url, 0, 20, { width: doc.width });
    });



8 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2016-12-15 18:03:49
沙发
没太理解您的意思。
您用的是什么控件,flexchart还是chart?
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
9294865
注册会员   /  发表于:2016-12-15 22:21:32
板凳
Alice 发表于 2016-12-15 18:03
没太理解您的意思。
您用的是什么控件,flexchart还是chart?

不好意思,写的有些暧昧啦,

用的是wijmo.chart.FlexChart控件

doc是new wijmo.pdf.PdfDocument控件,并且通过doc.setFont(new wijmo.pdf.PdfFont('xxx'));指定了font,表格输出没有乱码。

麻烦啦
回复 使用道具 举报
9294865
注册会员   /  发表于:2016-12-16 09:32:01
地板
是不是要用
Axis 的hostElement 属性去设置 SVGElement ,
参考这里吗 https://developer.mozilla.org/en-US/docs/Web/API/SVGElement

要是可以的话,能不能给个小例子,就是坐标轴有中文的chart,然后用svg导到pdf
回复 使用道具 举报
9294865
注册会员   /  发表于:2016-12-19 15:00:11
5#
这个问题还在关注吗,我试了下,在data url 里加上编码,也没有成功,不知道你们有什么办法没有
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2016-12-20 12:19:20
6#
您好,您测试下如下代码,可以将带中文的svg转换为base64 url

  1. // 下面这行元素选择代码请按实际情况写
  2. var svg = $("svg", "#introChart")[0]
  3. // get svg source.
  4. var serializer = new XMLSerializer();
  5. var source = serializer.serializeToString(svg);
  6. // add name spaces.
  7. if(!source.match(/^<svg[^>]+xmlns="http\:\/\/www\.w3\.org\/2000\/svg"/)){
  8.     source = source.replace(/^<svg/, '<svg xmlns="http://www.w3.org/2000/svg"');
  9. }
  10. if(!source.match(/^<svg[^>]+"http\:\/\/www\.w3\.org\/1999\/xlink"/)){
  11.     source = source.replace(/^<svg/, '<svg xmlns:xlink="http://www.w3.org/1999/xlink"');
  12. }
  13. // add xml declaration
  14. source = '<?xml version="1.0" standalone="no"?>\r\n' + source;
  15. //convert svg source to URI data scheme.
  16. var url = "data:image/svg+xml;charset=utf-8," + encodeURIComponent(source);
  17. //set url value to a element's href attribute.
  18. document.write('<img src="' + url + '"/>');
复制代码
回复 使用道具 举报
9294865
注册会员   /  发表于:2016-12-21 14:59:27
7#
dexteryao 发表于 2016-12-20 12:19
您好,您测试下如下代码,可以将带中文的svg转换为base64 url

非常感谢,我试了下,是可以正常生成不乱码的图片啦,但是输出到pdf里,会有下面的错误,我先自己调查调查,要是知道的话,告诉一下,谢谢
wijmo.pdf.min.js:27 Uncaught InvalidCharacterError: Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.
回复 使用道具 举报
9294865
注册会员   /  发表于:2016-12-21 14:59:35
8#
本帖最后由 9294865 于 2016-12-21 15:10 编辑
dexteryao 发表于 2016-12-20 12:19
您好,您测试下如下代码,可以将带中文的svg转换为base64 url

非常感谢,我试了下,是可以正常生成不乱码的图片啦,但是用drawSvg方法输出到pdf里,会有下面的错误,我先自己调查调查,要是知道的话,告诉一下,谢谢
wijmo.pdf.min.js:27 Uncaught InvalidCharacterError: Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-12-21 16:44:33
9#
9294865 发表于 2016-12-21 14:59
非常感谢,我试了下,是可以正常生成不乱码的图片啦,但是用drawSvg方法输出到pdf里,会有下面的错误,我 ...

应该是产品本身没有支持中文。
你可以用6楼的解决方案。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部