以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  图片通过专业报表转pdf 怎么实现图片在表格中居中显示 且自动保持合适大小 不被拉伸  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=175758)

--  作者:cnsjroom
--  发布时间:2022/3/17 19:19:00
--  图片通过专业报表转pdf 怎么实现图片在表格中居中显示 且自动保持合适大小 不被拉伸

图片通过专业报表转pdf  怎么实现图片在表格中居中显示  且自动保持合适大小   不被拉伸

当前代码如下:

Dim fl As String  = "d:\\12345.png"
Dim f2 As String  =  "d:\\12345.pdf"
Dim doc As New PrintDoc \'定义一个报表
Dim rt As New prt.RenderTable() \'定义一个表格对象
Dim rs As New prt.RenderText() \'定义一个文本对象
rt.Style.GridLines.All = New prt.LineDef \'将网格线类型设为默认类型
rt.Rows.Count = 2 \'设置行数
rt.Cols.Count = 1 \'设置列数
rt.Height = "23cm" \'设置表格的高度
rt.Style.Spacing.Top = 4 \'表格和前面对象的垂直间隔为4毫米
rt.Style.Spacing.Bottom = 10 \'表和和后续对象的垂直间隔为10毫米
rs.Text = "表格标题" \'设置文本对象的内容
rs.Style.Font = New Font("宋体", 24 , FontStyle.Bold) \'设置文本对象的字体
rs.Style.TextAlignHorz = prt.AlignHorzEnum.Center \'文本内容水平居中
doc.Body.Children.Add(rs) \'将文本对象加入到表格中

rt.Cells(0, 0).Image=GetImage(fl)
rt.Cells(0, 0).Style.ImageAlign.StretchHorz=True
rt.Cells(0, 0).Style.ImageAlign.StretchVert= True \'禁止图片水平拉伸
rt.Cells(0, 0).Style.ImageAlign.KeepAspectRatio = True \'保持比例
rt.Cells(0, 0).Style.ImageAlign.AlignHorz = prt.ImageAlignHorzEnum.Center   \'居中显示
rt.Cells(0, 0).Style.ImageAlign.AlignHorz = prt.ImageAlignVertEnum.Center

doc.Body.Children.Add(rt) \'将表格对象加入到报表中
\'rs = New prt.RenderText() \'再次定义一个文本对象
\'rs.Text = "上面的表格有三行三列,此行文本和表格的距离是10毫米"

\'doc.Body.Children.Add(rs) \'将文本对象加入到表格中
Doc.Preview() \'预览

 

 

预览效果【红色线框部分是空的 不好看   有没有办法直接让图片对象在这个单元格里面就是自动上下左右都居中  】


此主题相关图片如下:11.png
按此在新窗口浏览图片

--  作者:有点蓝
--  发布时间:2022/3/17 20:55:00
--  
试试用RenderImage:http://www.foxtable.com/webhelp/topics/1208.htm
--  作者:cnsjroom
--  发布时间:2022/3/18 0:48:00
--  回复:(有点蓝)试试用RenderImage:http://www.foxt...

谢谢老师  当前问题已经按照你的提示解决!

 

当前代码如下:

Dim fl As String  = "d:\\12345.jpg"
Dim f2 As String  =  "d:\\12345.pdf"
Dim doc As New PrintDoc \'定义一个报表
Dim rt As New prt.RenderTable() \'定义一个表格对象
Dim rs As New prt.RenderText() \'定义一个文本对象
Dim rs1 As New prt.RenderText() \'定义一个文本对象
rt.Style.GridLines.All = New prt.LineDef \'将网格线类型设为默认类型
rt.Rows.Count = 1 \'设置行数
rt.Cols.Count = 1 \'设置列数
rt.Height = "21cm" \'设置表格的高度
rt.Style.Spacing.Top = 4 \'表格和前面对象的垂直间隔为4毫米
rt.Style.Spacing.Bottom = 10 \'表和和后续对象的垂直间隔为10毫米
rs.Text = Tables(e.Form.Name & "_table1").Current("人员名称") & "廉政档案之:" \'设置文本对象的内容
rs1.Text = Tables(e.Form.Name & "_table1").Current("文件名") \'设置文本对象的内容
rs.Style.Font = New Font("宋体", 18 , FontStyle.Bold) \'设置文本对象的字体

rs1.Style.Font = New Font("宋体", 20 , FontStyle.Bold) \'设置文本对象的字体
rs1.Style.TextAlignHorz = prt.AlignHorzEnum.Center \'文本内容水平居中
doc.Body.Children.Add(rs) \'将文本对象加入到表格中
doc.Body.Children.Add(rs1) \'将文本对象加入到表格中
Dim rm As New prt.RenderImage() \'定义一个图片对象
rm.Image = GetImage(fl) \'请改为实际的图标名称和路径 
rm.Style.ImageAlign.AlignHorz = prt.ImageAlignHorzEnum.Center  \'图片水平居中
rm.Style.ImageAlign.AlignVert = prt.ImageAlignVertEnum.Center  \'图片垂直居中
rm.Style.ImageAlign.StretchHorz =  True \'禁止水平方向扩展图片
rm.Style.ImageAlign.StretchVert =  True \'禁止垂直方向扩展图片
rm.Style.ImageAlign.KeepAspectRatio = True \'保持比例
rt.Style.GridLines.All = New prt.Linedef(Color.DarkGray) \'将表格的颜色设为深灰色
rt.Cells(0,0).RenderObject = rm \'将单元格内容设置为图片对象rm

\'rt.Cells(0, 0).Image=GetImage(fl)
\'rt.Cells(0, 0).Style.ImageAlign.StretchHorz=True
\'rt.Cells(0, 0).Style.ImageAlign.StretchVert= True \'禁止图片水平拉伸
\'rt.Cells(0, 0).Style.ImageAlign.KeepAspectRatio = True \'保持比例
\'rt.Cells(0, 0).Style.ImageAlign.AlignHorz = prt.ImageAlignHorzEnum.Center   \'居中显示
\'rt.Cells(0, 0).Style.ImageAlign.AlignHorz = prt.ImageAlignVertEnum.Center

doc.Body.Children.Add(rt) \'将表格对象加入到报表中
\'rs = New prt.RenderText() \'再次定义一个文本对象
\'rs.Text = "上面的表格有三行三列,此行文本和表格的距离是10毫米"

\'doc.Body.Children.Add(rs) \'将文本对象加入到表格中
Doc.Preview() \'预览