| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2841 人关注过本帖, 1 人收藏
标题:参考帖子:“vfp9报表保存为高分辨率图片”,输出的图片中文字段乱码,请问 ...
取消只看楼主 加入收藏
yafengliang
Rank: 2
等 级:论坛游民
帖 子:111
专家分:35
注 册:2016-2-21
结帖率:54.55%
收藏(1)
已结贴  问题点数:20 回复次数:9 
参考帖子:“vfp9报表保存为高分辨率图片”,输出的图片中文字段乱码,请问如何解决?
#Defin PixelFormat32bppARGB  0x26200A
Declare Long GdipCreateBitmapFromScan0 In GDIPlus.Dll Long, Long, Long, Long, String@, Long@
Declare Long GdipGetImageGraphicsContext In GDIPlus.Dll Long, Long@
Declare Long GdipSaveImageToFile In GDIPlus.Dll Long, String@, String@, Long
Declare Long GdipDisposeImage In GDIPlus.Dll Long
Declare Long GdipDeleteGraphics In GDIPlus.Dll Long

oRL = Createobject("ReportListener")
oRL.ListenerType = 3
Report Form xxx.frx Object oRL

Local nWidth, nHeight, hBitmap, hGraphics, cFile, bmpGUID
nWidth =  oRL.GetPageWidth()/4
nHeight = oRL.GetPageHeight()/4   && 分辨率太大图片好象有点不正常,情况不明。

For aa = 1 To oRL.PageTotal

    hBitmap = 0
    GdipCreateBitmapFromScan0(nWidth, nHeight, 0, PixelFormat32bppARGB, 0, @hBitmap)
    If hBitmap == 0
        ? "创建Bitmap失败"
        Return
    Endif
    hGraphics = 0
    GdipGetImageGraphicsContext(hBitmap, @hGraphics)
    If hGraphics == 0
        GdipDisposeImage(hBitmap)
        ? "获取Graphics失败"
        Return
    Endif
    oRL.OutputPage(aa, hGraphics, 1, 0,0,nWidth,nHeight, 0,0,nWidth,nHeight)
    cFile = "D:\报表" + Alltrim(Str(aa)) + ".png"
    bmpGUID = 0h06F47C55041AD3119A730000F81EF32E
    GdipSaveImageToFile(hBitmap, Strconv(cFile+0h00,5),@bmpGUID,0)
    GdipDisposeImage(hBitmap)
    GdipDeleteGraphics(hGraphics)
Endfor
搜索更多相关主题的帖子: 报表 Long Dll 图片 分辨率 
2021-05-14 17:02
yafengliang
Rank: 2
等 级:论坛游民
帖 子:111
专家分:35
注 册:2016-2-21
收藏
得分:0 
报表都能正常运行的,数据来自sql。本坛有说是字体问题,但改成宋体也一样。字段是英文或数字则正常显示,就中文不行。不是字段的中文部分也正常。
2021-05-14 23:25
yafengliang
Rank: 2
等 级:论坛游民
帖 子:111
专家分:35
注 册:2016-2-21
收藏
得分:0 
是否缺少什么设置?
2021-05-14 23:25
yafengliang
Rank: 2
等 级:论坛游民
帖 子:111
专家分:35
注 册:2016-2-21
收藏
得分:0 
回复 5楼 radiofan
字段在sql中类型是varchar和char。这两种只要中文的地方就乱码,网上有的说是域控件高度,我调高也不行。不知还有碰到这种情况的没?

[此贴子已经被作者于2021-5-15 10:33编辑过]

2021-05-15 10:29
yafengliang
Rank: 2
等 级:论坛游民
帖 子:111
专家分:35
注 册:2016-2-21
收藏
得分:0 
回复 7楼 吹水佬
#Defin PixelFormat32bppARGB  0x26200A
Declare Long GdipCreateBitmapFromScan0 In GDIPlus.Dll Long, Long, Long, Long, String@, Long@
Declare Long GdipGetImageGraphicsContext In GDIPlus.Dll Long, Long@
Declare Long GdipSaveImageToFile In GDIPlus.Dll Long, String@, String@, Long
Declare Long GdipDisposeImage In GDIPlus.Dll Long
Declare Long GdipDeleteGraphics In GDIPlus.Dll Long

CREATE CURSOR tt (编号 C(10), 名称 C(100),数量 I)
FOR i = 1 TO 3
    INSERT INTO tt VALUES ("vfp-001", "大家好,欢迎来到编程论坛", i)
     INSERT INTO tt VALUES ("vfp-002", "VFP学习模块学习模块学习模块", i)
      INSERT INTO tt VALUES ("vfp-003", "感谢你的付出", i)
ENDFOR

oRL = Createobject("ReportListener")
oRL.ListenerType = 3
Report Form c_打印图片 Object oRL

Local nWidth, nHeight, hBitmap, hGraphics, cFile, bmpGUID
nWidth =  oRL.GetPageWidth()/4
nHeight = oRL.GetPageHeight()/4    && 分辨率太大图片好象有点不正常,情况不明。

For aa = 1 To oRL.PageTotal

    hBitmap = 0
    GdipCreateBitmapFromScan0(nWidth, nHeight, 0, PixelFormat32bppARGB, 0, @hBitmap)
    If hBitmap == 0
        ? "创建Bitmap失败"
        Return
    Endif
    hGraphics = 0
    GdipGetImageGraphicsContext(hBitmap, @hGraphics)
    If hGraphics == 0
        GdipDisposeImage(hBitmap)
        ? "获取Graphics失败"
        Return
    Endif
    oRL.OutputPage(aa, hGraphics, 1, 0,0,nWidth,nHeight, 0,0,nWidth,nHeight)
    cFile = "D:\报表" + Alltrim(Str(aa)) + ".png"
    bmpGUID = 0h06F47C55041AD3119A730000F81EF32E
    GdipSaveImageToFile(hBitmap, Strconv(cFile+0h00,5),@bmpGUID,0)
    GdipDisposeImage(hBitmap)
    GdipDeleteGraphics(hGraphics)
Endfor
图片附件: 游客没有浏览图片的权限,请 登录注册

报表.rar (2.81 KB)


另外:能不能设置一个文件包含多页,不要一页一个文件?谢谢

[此贴子已经被作者于2021-5-15 13:01编辑过]

2021-05-15 12:57
yafengliang
Rank: 2
等 级:论坛游民
帖 子:111
专家分:35
注 册:2016-2-21
收藏
得分:0 
上面直接用临时表也乱码,就是上面图片所示。
2021-05-15 15:58
yafengliang
Rank: 2
等 级:论坛游民
帖 子:111
专家分:35
注 册:2016-2-21
收藏
得分:0 
回复 9楼 吹水佬
在8楼,有加入生成临时表的代码,用我上传的报表文件,也出现中文字段乱码,就是8楼贴图所示。

[此贴子已经被作者于2021-5-15 17:08编辑过]

2021-05-15 16:07
yafengliang
Rank: 2
等 级:论坛游民
帖 子:111
专家分:35
注 册:2016-2-21
收藏
得分:0 
回复 16楼 吹水佬
是啊,试了其他报表,有的连表格标题的中文字也乱码,所以暂时找不出原因。
2021-05-15 23:10
yafengliang
Rank: 2
等 级:论坛游民
帖 子:111
专家分:35
注 册:2016-2-21
收藏
得分:0 
ok,现在是用手机登录的,明天有电脑再试下,谢谢大家!
2021-05-16 12:06
yafengliang
Rank: 2
等 级:论坛游民
帖 子:111
专家分:35
注 册:2016-2-21
收藏
得分:0 
经过验证,1、中文字符,只需设置字符集为中文;2、含中文的域控件,需要改字符集和调高控件高度。感谢大家!

[此贴子已经被作者于2021-5-17 08:59编辑过]

2021-05-17 08:49
快速回复:参考帖子:“vfp9报表保存为高分辨率图片”,输出的图片中文字段乱码, ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017071 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved