以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [报表] 专业报表图片及水印问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=15002) |
-- 作者:don -- 发布时间:2011/12/9 13:49:00 -- [报表] 专业报表图片及水印问题 我想在专业报表中加入一图片,图片可分为如图所示四部分. 现在的问题是:分别加入四部分好,还是一次性把此图片作为水印好?把整张图片作水印,有时可见图片,有时预览不到,苦恼? Dim doc As New PrintDoc \'定义一个报表对象 Doc.PageSetting.LeftMargin = 0 \'设置左边距 Doc.PageSetting.RightMargin=0 Doc.PageSetting.TopMargin = 0 Doc.PageSetting.BottomMargin = 0 Dim rm As New prt.RenderImage \'定义一个图片对象 rm.Image = GetImage("水印.JPG") \'设置图片 rm.Width = "Parent.Width" \'宽度等于页面宽度 rm.Height ="Parent.Height" rm.Style.ImageAlign.StretchHorz = False \'禁止图片水平拉伸 Doc.WaterMark = rm Doc.Preview() \'预览 |
-- 作者:don -- 发布时间:2011/12/9 13:53:00 -- 是否和图片体积有关? |
-- 作者:狐狸爸爸 -- 发布时间:2011/12/9 13:56:00 -- 用四个图片也行。
另: 把整张图片作水印,有时可见图片,有时预览不到?
这个问题毫无规律可循吗?只是有时?
|
-- 作者:don -- 发布时间:2011/12/9 14:23:00 -- 以下是引用狐狸爸爸在2011-12-9 13:56:00的发言:
用四个图片也行。
另: 把整张图片作水印,有时可见图片,有时预览不到?
这个问题毫无规律可循吗?只是有时?
1.一样的代码,下图我就预览不到!没什规律,就是开启多程序,后来就是关闭了其它程序也不行.
2. 还有如图片过大,如代码设置不当,如没有 rm.Width = "Parent.Width" \'宽度等于页面宽度 rm.Height ="Parent.Height 预览不到不止,还要杀进程!
|
-- 作者:狐狸爸爸 -- 发布时间:2011/12/9 14:31:00 -- 呵呵,可能水印的图片不能太大,我们检查一下看看。 |
-- 作者:don -- 发布时间:2011/12/9 14:40:00 -- 以下是引用狐狸爸爸在2011-12-9 14:31:00的发言: 呵呵,可能水印的图片不能太大,我们检查一下看看。 似乎和图片格式有关:我试了BMP格式10M多也没问题,其他JPG,PNG,PDF格式的有些100KB多也不行!
|
-- 作者:狐狸爸爸 -- 发布时间:2011/12/9 14:41:00 -- 收到。 |
-- 作者:don -- 发布时间:2011/12/9 16:32:00 -- Dim Ln1 As string = vbcrlf & vbcrlf Dim doc As New PrintDoc \'定义一个报表对象 Doc.PageSetting.LeftMargin = 0 \'设置左边距 Doc.PageSetting.RightMargin=0 Doc.PageSetting.TopMargin = 0 Doc.PageSetting.BottomMargin = 0 Dim ra1,ra2,ra3,ra4 As New prt.RenderArea Dim rm As New prt.RenderImage \'定义一个图片对象 rm.Image = GetImage("ST21.JPG") \'设置左侧图片 ra1.Width = 20 \'宽度53毫米 ra1.Height = 300 \'高度24毫米 ra1.Children.Add(rm) doc.Body.Children.Add(ra1) \'将图片对象加入报表 doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight rm = New prt.RenderImage rm.Image = GetImage("ST1.JPG") \'设置页眉图片 ra2.Width = 188 \'宽度53毫米 ra2.Height = 295 \'高度24毫米 ra2.Style.Spacing.All = 5 ra2.Children.Add(rm) Dim rt As New prt.RenderText \'定义一个文本对象 rt.Text = Ln1 & "XXXX" \'设置文本对象的内容 rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center \'水平居中 rt.Style.Font = New Font("Tahoma",20, FontStyle.Bold) ra2.Children.Add(rt) rt = New prt.RenderText rt.Text = "ABC" rt.Style.Font = New Font("Tahoma",11) ra2.Children.Add(rt) rt = New prt.RenderText rt.Text =Ln1 & "XXXXXX" rt.Style.Font = New Font("Tahoma",11, FontStyle.Bold) ra2.Children.Add(rt) Dim tb As New prt.RenderTable() \'定义一个表格对象 ra2.Children.Add(tb) \'将表格对象加入到报表中 tb.Style.GridLines.All = New prt.Linedef(Color.Gray) tb.Width = 175 \'表宽为150毫米 tb.Height = 20 \'表高为150毫米 tb.Rows.Count = 2 \'设置行数 tb.Cols.Count = 4 \'设置列数 tb.Cols(0).Width = 35 tb.Cols(1).Width = 50 tb.Cols(2).Width = 30 tb.Cols(3).Width = 55 Dim Ls As String() = {"Accounts 賬目","From 由 To 至","Monthly 月租","Total 合計"} For c As Integer = 0 To 3 rt= New prt.RenderText \'定义一个文本对象 rt.Text = Ls(c) \'为文本对象设置内容 rt.Style.Font = New Font("Tahoma",11, FontStyle.Bold) tb.Cells(0, c).RenderObject = rt \'将文本对象放置在单元格中 Next tb.Rows(0).Style.TextAlignHorz = prt.AlignHorzEnum.Center \'第一行内容水平居中 tb.Rows(0).Style.TextAlignVert = prt.AlignVertEnum.Center \'第一行内容水平居中 Dim Ls3 As New List(of String) Ls3.Add("Rental 租金") Ls3.Add("01/12/2011-31/12/2011") Ls3.Add("HK$888.00") Ls3.Add("HK$888.00") For c As Integer = 0 To 3 rt = New prt.RenderText \'定义一个文本对象 rt.Text = Ls3(c) \'为文本对象设置内容 rt.Style.Font = New Font("Tahoma",11) tb.Cells(1, c).RenderObject = rt \'将文本对象放置在单元格中 Next tb.Rows(1).Style.TextAlignHorz = prt.AlignHorzEnum.Center \'第一行内容水平居中 tb.Rows(1).Style.TextAlignVert = prt.AlignVertEnum.Center \'第一行内容水平居中 rt = New prt.RenderText rt.Text =Ln1 &"DEEDDSSS" rt.Style.Font = New Font("Tahoma",11, FontStyle.Bold) ra2.Children.Add(rt) rt = New prt.RenderText rt.Text =Ln1 & "DDDDDDDDEEEEEEE" rt.Style.Font = New Font("Tahoma",11) ra2.Children.Add(rt) rt = New prt.RenderText rt.Text =Ln1 & Ln1 & "敬註:" & Ln1 & "6 Month (5% off) Prepayment , 1 Year (10% off) Prepayment" rt.Style.Font = New Font("Tahoma",12, FontStyle.Bold) ra2.Children.Add(rt) rt = New prt.RenderText rt.Text =Ln1 & Ln1 & "DEEDDXXXXXXXXXXXX" rt.Style.Font = New Font("Tahoma",11) ra2.Children.Add(rt) rt = New prt.RenderText rt.Text ="ggggggggggggggggggggggggggggggg" rt.x=2 rt.y=230 rt.Style.Font = New Font("標楷體",12, FontStyle.Bold) ra2.Children.Add(rt) rm = New prt.RenderImage rm.Image = GetImage("STt.JPG") \'设置图片 rm.x=2 rm.y =267 ra2.Children.Add(rm) doc.Body.Children.Add(ra2) \'设置水印 rm = New prt.RenderImage rm.Image = GetImage("222.BMP") \'设置图片 rm.x = 50 rm.y =100 rm.Style.ImageAlign.StretchHorz = True \'禁止图片水平拉伸 Doc.WaterMark = rm\' rt =New prt.RenderText rt.Text ="" rt.BreakAfter = prt.BreakEnum.Page rm = New prt.RenderImage rm.Image = GetImage("ST21.JPG") \'设置左侧图片 ra3.Width = 20 \'宽度53毫米 ra3.Height = 300 \'高度24毫米 ra3.Children.Add(rm) doc.Body.Children.Add(ra3) \'将图片对象加入报表 Doc.Preview() \'预览 以上代码正常:图片ST21占据第2页左侧. 如我想于第2页再加入 页眉图片,代码如何?
|
-- 作者:don -- 发布时间:2011/12/9 16:38:00 -- 试来试去:要不第2 页上没有,要不重叠在第1页页眉上 |
-- 作者:lihe60 -- 发布时间:2011/12/9 16:39:00 -- 以下是引用don在2011-12-9 16:32:00的发言:
Dim Ln1 As string = vbcrlf & vbcrlf
Dim doc As New PrintDoc \'定义一个报表对象
Doc.PageSetting.LeftMargin = 0 \'设置左边距
Doc.PageSetting.RightMargin=0
Doc.PageSetting.TopMargin = 0
Doc.PageSetting.BottomMargin = 0
Dim ra1,ra2,ra3,ra4 As New prt.RenderArea
Dim rm As New prt.RenderImage \'定义一个图片对象
rm.Image = GetImage("ST21.JPG") \'设置左侧图片
ra1.Width = 20 \'宽度53毫米
ra1.Height = 300 \'高度24毫米
ra1.Children.Add(rm)
doc.Body.Children.Add(ra1) \'将图片对象加入报表
doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight
rm = New prt.RenderImage
rm.Image = GetImage("ST1.JPG") \'设置页眉图片
ra2.Width = 188 \'宽度53毫米
ra2.Height = 295 \'高度24毫米
ra2.Style.Spacing.All = 5
ra2.Children.Add(rm)
Dim rt As New prt.RenderText \'定义一个文本对象
rt.Text = Ln1 & "XXXX" \'设置文本对象的内容
rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center \'水平居中
rt.Style.Font = New Font("Tahoma",20, FontStyle.Bold)
ra2.Children.Add(rt)
rt = New prt.RenderText
rt.Text = "ABC"
rt.Style.Font = New Font("Tahoma",11)
ra2.Children.Add(rt)
rt = New prt.RenderText
rt.Text =Ln1 & "XXXXXX"
rt.Style.Font = New Font("Tahoma",11, FontStyle.Bold)
ra2.Children.Add(rt)
Dim tb As New prt.RenderTable() \'定义一个表格对象
ra2.Children.Add(tb) \'将表格对象加入到报表中
tb.Style.GridLines.All = New prt.Linedef(Color.Gray)
tb.Width = 175 \'表宽为150毫米
tb.Height = 20 \'表高为150毫米
tb.Rows.Count = 2 \'设置行数
tb.Cols.Count = 4 \'设置列数
tb.Cols(0).Width = 35
tb.Cols(1).Width = 50
tb.Cols(2).Width = 30
tb.Cols(3).Width = 55
Dim Ls As String() = {"Accounts 賬目","From 由 To 至","Monthly 月租","Total 合計"}
For c As Integer = 0 To 3
rt= New prt.RenderText \'定义一个文本对象
rt.Text = Ls(c) \'为文本对象设置内容
rt.Style.Font = New Font("Tahoma",11, FontStyle.Bold)
tb.Cells(0, c).RenderObject = rt \'将文本对象放置在单元格中
Next
tb.Rows(0).Style.TextAlignHorz = prt.AlignHorzEnum.Center \'第一行内容水平居中
tb.Rows(0).Style.TextAlignVert = prt.AlignVertEnum.Center \'第一行内容水平居中
Dim Ls3 As New List(of String)
Ls3.Add("Rental 租金")
Ls3.Add("01/12/2011-31/12/2011")
Ls3.Add("HK$888.00")
Ls3.Add("HK$888.00")
For c As Integer = 0 To 3
rt = New prt.RenderText \'定义一个文本对象
rt.Text = Ls3(c) \'为文本对象设置内容
rt.Style.Font = New Font("Tahoma",11)
tb.Cells(1, c).RenderObject = rt \'将文本对象放置在单元格中
Next
tb.Rows(1).Style.TextAlignHorz = prt.AlignHorzEnum.Center \'第一行内容水平居中
tb.Rows(1).Style.TextAlignVert = prt.AlignVertEnum.Center \'第一行内容水平居中
rt = New prt.RenderText
rt.Text =Ln1 &"DEEDDSSS"
rt.Style.Font = New Font("Tahoma",11, FontStyle.Bold)
ra2.Children.Add(rt)
rt = New prt.RenderText
rt.Text =Ln1 & "DDDDDDDDEEEEEEE"
rt.Style.Font = New Font("Tahoma",11)
ra2.Children.Add(rt)
rt = New prt.RenderText
rt.Text =Ln1 & Ln1 & "敬註:" & Ln1 & "6 Month (5% off) Prepayment , 1 Year (10% off) Prepayment"
rt.Style.Font = New Font("Tahoma",12, FontStyle.Bold)
ra2.Children.Add(rt)
rt = New prt.RenderText
rt.Text =Ln1 & Ln1 & "DEEDDXXXXXXXXXXXX"
rt.Style.Font = New Font("Tahoma",11)
ra2.Children.Add(rt)
rt = New prt.RenderText
rt.Text ="ggggggggggggggggggggggggggggggg"
rt.x=2
rt.y=230
rt.Style.Font = New Font("標楷體",12, FontStyle.Bold)
ra2.Children.Add(rt)
rm = New prt.RenderImage
rm.Image = GetImage("STt.JPG") \'设置图片
rm.x=2
rm.y =267
ra2.Children.Add(rm)
doc.Body.Children.Add(ra2)
\'设置水印
rm = New prt.RenderImage
rm.Image = GetImage("222.BMP") \'设置图片
rm.x = 50
rm.y =100
rm.Style.ImageAlign.StretchHorz = True \'禁止图片水平拉伸
Doc.WaterMark = rm\'
rt =New prt.RenderText
rt.Text =""
rt.BreakAfter = prt.BreakEnum.Page
rm = New prt.RenderImage
rm.Image = GetImage("ST21.JPG") \'设置左侧图片
ra3.Width = 20 \'宽度53毫米
ra3.Height = 300 \'高度24毫米
ra3.Children.Add(rm)
doc.Body.Children.Add(ra3) \'将图片对象加入报表
Doc.Preview() \'预览
以上代码正常:图片ST21占据第2页左侧.
如我想于第2页再加入 页眉图片,代码如何? 好长 |