Foxtable(狐表)用户栏目专家坐堂 → 专业报表生成PDF乱码


  共有3450人关注过本帖树形打印复制链接

主题:专业报表生成PDF乱码

帅哥哟,离线,有人找我吗?
hongsejiyi
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:338 积分:5262 威望:0 精华:0 注册:2019/1/1 15:53:00
专业报表生成PDF乱码  发帖心情 Post By:2020/4/9 20:19:00 [只看该作者]

升级到2020.04.10版本
试用了,专业报表生成PDF,出现的问题是:在命令窗口使用,结果正常,见附件图片1,但从网页方式浏览,就出现乱码,见附件图片2

代码如下:
命令窗口代码:
Dim doc As New PrintDoc '定义一个报表
Dim rt As New prt.RenderTable() '定义一个表格对象
Dim rx As New prt.RenderText '定义一个文本对象
Dim CurRow As Row = Tables("ypfk").Current
'加入标题
rx.text = "疫情防控体温上报报表"
rx.Style.FontBold = True '字体加粗
rx.Style.FontSize = 18 '大体大小为16磅
rx.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中排列
rx.Style.Spacing.Bottom = 3 '和下面的对象(表格)距离3毫米
doc.Body.Children.Add(rx) '加入到报表中
'指定行数?列数?列宽?行高
rt.Rows.Count = 4 '设置总行数
rt.Cols.Count = 5 '设置总列数
rt.Height = 150 '设置表格的高度为80毫米
rt.Rows(3).Height = 50 '设置第7行(显示备注的行)的高度为40毫米,剩余高度被平均分排到其他行
rt.Rows(2).height =50
rt.Cols(0).Width = 24 '设置前四列的宽度,剩余的宽度被分配给5列(显示图片的那列)
rt.Cols(1).Width = 35
rt.Cols(2).Width = 24
rt.Cols(3).Width = 40
'设置合并单元格
rt.Cells(0,4).SpanRows = 2 '第1行第5个单元格向下合并6行(用于显示照片)
rt.Cells(2,1).SpanCols =4  '第5行第2个单元格向右合并3列(用于显示地址)

rt.Cells(3,1).SpanCols = 4 '第7行第1个单元格向右合并5列(用于显示备注)
'设置表格样式
rt.CellStyle.Spacing.All = 1 '单元格内容缩进1毫米
rt.Style.GridLines.All = New prt.Linedef '设置网格线
rt.Style.TextAlignVert = prt.AlignVertEnum.Center '内容垂直居中
rt.Rows(3).Style.TextAlignVert = prt.AlignVertEnum.Top '唯独第7行是备注,内容靠上对齐
'下面很简单,指定每一个单元格的内容
rt.Cells(0,0).Text= "审核人"
rt.Cells(0,1).Text = CurRow("第二列")
rt.Cells(0,2).Text= "时间"
rt.Cells(0,3).Text = CurRow("第一列")
rt.Cells(1,0).Text= "处室"
rt.Cells(1,1).Text = CurRow("第三列")
rt.Cells(1,2).Text= "未上报人数"
rt.Cells(1,3).Text = CurRow("wbrs")
rt.Cells(2,0).Text= "未上报人员"
rt.Cells(2,1).Text = CurRow("第五列")
rt.Cells(3,0).Text = "已经上报人员"
rt.cells(3,1).text= CurRow("第四列")
rt.Cells(0,4).Image = GetImage("chw.png")
doc.Body.Children.Add(rt) '将表格对象加入到报表中
Doc.Preview

网页函数:
Dim e As RequestEventArgs= args(0)
e.Resp
Select Case e.Path
    Case  "yq2020"
        
        Dim doc As New PrintDoc '定义一个报表
        Dim rt As New prt.RenderTable() '定义一个表格对象
        Dim rx As New prt.RenderText '定义一个文本对象
        Dim CurRow As Row = Tables("ypfk").Current
        '加入标题
        rx.text = "疫情防控体温上报报表"
        rx.Style.FontBold = True '字体加粗
        rx.Style.FontSize = 18 '大体大小为16磅
        rx.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中排列
        rx.Style.Spacing.Bottom = 3 '和下面的对象(表格)距离3毫米
        doc.Body.Children.Add(rx) '加入到报表中
        '指定行数?列数?列宽?行高
        rt.Rows.Count = 4 '设置总行数
        rt.Cols.Count = 5 '设置总列数
        rt.Height = 150 '设置表格的高度为80毫米
        rt.Rows(3).Height = 50 '设置第7行(显示备注的行)的高度为40毫米,剩余高度被平均分排到其他行
        rt.Rows(2).height =50
        rt.Cols(0).Width = 24 '设置前四列的宽度,剩余的宽度被分配给5列(显示图片的那列)
        rt.Cols(1).Width = 35
        rt.Cols(2).Width = 24
        rt.Cols(3).Width = 40
        '设置合并单元格
        rt.Cells(0,4).SpanRows = 2 '第1行第5个单元格向下合并6行(用于显示照片)
        rt.Cells(2,1).SpanCols =4  '第5行第2个单元格向右合并3列(用于显示地址)
        
        rt.Cells(3,1).SpanCols = 4 '第7行第1个单元格向右合并5列(用于显示备注)
        '设置表格样式
        rt.CellStyle.Spacing.All = 1 '单元格内容缩进1毫米
        rt.Style.GridLines.All = New prt.Linedef '设置网格线
        rt.Style.TextAlignVert = prt.AlignVertEnum.Center '内容垂直居中
        rt.Rows(3).Style.TextAlignVert = prt.AlignVertEnum.Top '唯独第7行是备注,内容靠上对齐
        '下面很简单,指定每一个单元格的内容
        rt.Cells(0,0).Text= "审核人"
        rt.Cells(0,1).Text = CurRow("第二列")
        rt.Cells(0,2).Text= "时间"
        rt.Cells(0,3).Text = CurRow("第一列")
        rt.Cells(1,0).Text= "处室"
        rt.Cells(1,1).Text = CurRow("第三列")
        rt.Cells(1,2).Text= "未上报人数"
        rt.Cells(1,3).Text = CurRow("wbrs")
        rt.Cells(2,0).Text= "未上报人员"
        rt.Cells(2,1).Text = CurRow("第五列")
        rt.Cells(3,0).Text = "已经上报人员"
        rt.cells(3,1).text= CurRow("第四列")
        rt.Cells(0,4).Image = GetImage("chw.png")
        doc.Body.Children.Add(rt) '将表格对象加入到报表中
        e.WriteReportAsPDF(doc)
        
    Case Else
        e.AsReportServer("\")
End Select
e.Handled = True '通知系统异步函数执行完毕,可以关闭信道


图片点击可在新窗口打开查看此主题相关图片如下:pdf_正常_2020-04-09_201406.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:pdf_乱码2020-04-09_201406.png
图片点击可在新窗口打开查看


[此贴子已经被作者于2020/4/9 20:20:57编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
baicaocao
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:497 积分:4892 威望:0 精华:0 注册:2012/4/20 8:42:00
  发帖心情 Post By:2020/4/9 20:28:00 [只看该作者]

 设置字体为微软雅黑

 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2020/4/9 20:31:00 [只看该作者]

报表代码中明确指定字体为windows系统里面包含的字体!

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110592 积分:562856 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/9 20:44:00 [只看该作者]

        rx.font = new font("宋体",18) '或者其它系统字体
        rx.text = "疫情防控体温上报报表"
        rx.Style.FontBold = True '字体加粗

 回到顶部
帅哥哟,离线,有人找我吗?
hongsejiyi
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:338 积分:5262 威望:0 精华:0 注册:2019/1/1 15:53:00
  发帖心情 Post By:2020/4/9 23:05:00 [只看该作者]

 rx.style.font = new Font("宋体",18)
这样就可以了

 回到顶部
帅哥哟,离线,有人找我吗?
ouyangfenghuan
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:277 积分:2406 威望:0 精华:0 注册:2015/12/11 4:29:00
  发帖心情 Post By:2021/5/27 20:38:00 [只看该作者]

mark

 回到顶部