| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2842 人关注过本帖, 1 人收藏
标题:参考帖子:“vfp9报表保存为高分辨率图片”,输出的图片中文字段乱码,请问 ...
只看楼主 加入收藏
yafengliang
Rank: 2
等 级:论坛游民
帖 子:111
专家分:35
注 册:2016-2-21
结帖率:54.55%
收藏(1)
已结贴  问题点数:20 回复次数:25 
参考帖子:“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
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10541
专家分:42927
注 册:2014-5-20
收藏
得分:0 
没见到报表和数据表文件
2021-05-14 19:49
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
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
收藏
得分:0 
sql字段类型?
2021-05-15 08:58
yafengliang
Rank: 2
等 级:论坛游民
帖 子:111
专家分:35
注 册:2016-2-21
收藏
得分:0 
回复 5楼 radiofan
字段在sql中类型是varchar和char。这两种只要中文的地方就乱码,网上有的说是域控件高度,我调高也不行。不知还有碰到这种情况的没?

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

2021-05-15 10:29
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10541
专家分:42927
注 册:2014-5-20
收藏
得分:0 
以下是引用yafengliang在2021-5-14 23:25:05的发言:

报表都能正常运行的,数据来自sql。本坛有说是字体问题,但改成宋体也一样。字段是英文或数字则正常显示,就中文不行。不是字段的中文部分也正常。

随便取出一条记录一个字段的表大家测试一下就OK了
2021-05-15 11:06
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
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10541
专家分:42927
注 册:2014-5-20
收藏
得分:0 
给个报表文件测试不了的,报表文件还可以自己建。
主要是数据表文件,乱码的是数据表的东西吧?
2021-05-15 15:01
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10541
专家分:42927
注 册:2014-5-20
收藏
得分:0 
以下是引用yafengliang在2021-5-15 12:57:55的发言:

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

图片可以拼接,不知页数多时效果会怎样
2021-05-15 15:06
快速回复:参考帖子:“vfp9报表保存为高分辨率图片”,输出的图片中文字段乱码, ...
数据加载中...
 
   



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

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