以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- WebBrowser显示PDF问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=83662) |
-- 作者:douglas738888 -- 发布时间:2016/4/14 10:11:00 -- WebBrowser显示PDF问题 请老师看看,下面代码哪里有问题,如果按帮助的代码显示WORD是没有问题的,但是按帮助的代码显示PDF只有空白没有内容,电脑是正版WIN7的。 OFFICE 也进入注册表了,ADOBE是XI的,早也安装了,其他PDF文件能单独显示,在WebBrowser上无法显示。是路径有问题吗,还是... Dim wbr As WinForm.WebBrowser = e.Form.Controls("WebBrowser1") Dim tm As String = ProjectPath & "Attachments\\工作策划书.doc" \'指定模板文件 Dim PP As String = ProjectPath & "Reports\\工作策划书.doc" \'指定目标文件 Dim PF As String = ProjectPath & "Reports\\工作策划书.pdf" \'指定目标PDF文件 Dim wrt As New WordReport(Tables("工作策划书"),tm,PP) \'定义一个WordReport wrt.Build() \'逐行生成报表 wrt.SaveToPDF(PF) \'保存为PDF文件 wrt.Quit() \'退出 wbr.AddRess = PF |
-- 作者:大红袍 -- 发布时间:2016/4/14 10:19:00 -- 1、pdf能否生成?
2、https://helpx.adobe.com/cn/acrobat/using/display-pdf-in-browser.html
|
-- 作者:douglas738888 -- 发布时间:2016/4/14 11:49:00 -- 文件夹REPORT中的PDF能生成,如果在文件夹REPORT中点击生成的PDF也能正常浏览 |
-- 作者:大红袍 -- 发布时间:2016/4/14 11:50:00 -- 看第二点 |
-- 作者:douglas738888 -- 发布时间:2016/4/14 11:58:00 -- 另外,请教老师,以下代码打印多行文本的内容时,如果内容少点可以正常在页面显示,如果多行文本有很多行(1000-2000字),前6行在第一页,第7行的多行文本自动换到第2页,而且显示内容不全,第一页的第6行后就出现大面积空白,我用了强制换页也不行。 问题就是,表格的行分离,多行文本多内容情况下不能连续页面显示,显示不全。 打印代码: Dim doc As New PrintDoc \'定义一个报表 Dim rt As New prt.RenderTable() \'定义一个表格对象 Dim cr As New prt.RenderTable() \'定义一个表格对象,插入SQL工作策划主表 Dim tb As Table = Tables("工作策划书_Table1") \'插入SQL工作策划主表 Dim ColNames As String() = New String(){"专业部室","部室负责人","计划开始时间","计划完成时间","校对程序_校对","审核程序_审核","批准程序_批准"} cr.Width = "Auto" \'表格宽度为自动,也就是等于各列设置宽度之和 For c As Integer = 0 To ColNames.Length - 1 \'逐列设置和填入内容 cr.Cells(0,c).Text = ColNames(c) \'列名作为标题 cr.Cells(0,c).Style.TextAlignHorz = prt.AlignHorzEnum.Center \'标题内容水平居中 cr.Cols(c).Width = tb.Cols(ColNames(c)).PrintWidth \'列宽等于实际列宽 If tb.Cols(ColNames(c)).IsNumeric OrElse tb.Cols(ColNames(c)).IsDate Then \'如果是数值或日期列 cr.Cols(c).Style.TextAlignHorz = prt.AlignHorzEnum.Right \'数据水平靠右 End If For r As Integer = 0 To tb.Rows.Count -1 \'开始填入该列内容 cr.Cells(r + 1, c).Text = tb.Rows(r)(ColNames(c)) Next Next cr.Style.Gridlines.All = New prt.Linedef(Color.Gray) \'灰色网格线 cr.CellStyle.Spacing.All = 0.5 \'单元格内距设为0.5毫米 cr.Rows(0).Style.TextAlignHorz = prt.AlignHorzEnum.Center \'第一行内容水平居中 cr.RowGroups(0,1).Header = prt.TableHeaderEnum.All \'利用行组,将第一行设为表头 cr.Style.Font = New Font("宋体", 9) \'设置字体. Dim rm As New prt.RenderImage \'定义一个图片对象 rm.Image = GetImage("F:\\KMATM150412\\Images\\LOGO.JPG") \'设置图片 rm.Width = 45 \'宽度等于页面宽度 rm.Height = 6 \'高度由图片大小自动决定 rm.x = 15 rm.y = 8 rm.Style.ImageAlign.StretchHorz = True \'图片水平拉伸 rm.Style.ImageAlign.AlignHorz = prt.ImageAlignHorzEnum.Left \'居中显示 doc.PageHeader = rm \'作为页眉使用 \'doc.Body.Children.Add(rm) \'将图片对象加入报表 Dim rx As New prt.RenderText \'定义一个文本对象 Dim CurRow As Row = Tables("项目策划书").Current \'加入标题 rx.text = "工程设计策划书" rx.Style.FontBold = True \'字体加粗 rx.Style.FontSize = 16 \'大体大小为16磅 rx.Style.TextAlignHorz = prt.AlignHorzEnum.Center \'水平居中排列 rx.Style.Spacing.Top = 5 \'和前面对象的垂直间隔 rx.Style.Spacing.Bottom = 3 \'和下面的对象(表格)距离3毫米 doc.Body.Children.Add(rx) \'加入到报表中 \'指定行数?列数?列宽?行高 rt.Rows.Count = 11 \'设置总行数 rt.Cols.Count = 6 \'设置总列数 Doc.PageSetting.LeftMargin = 15 \'设置左边距 Doc.PageSetting.RightMargin = 15 \'设置右边距 Doc.PageSetting.TopMargin = 12 \'设置上边距 Doc.PageSetting.BottomMargin = 15 \'设置下边距 rt.Width = 180 \'设置表格的高度为180毫米 rt.Rows(0).Height = 8 \'设置第1行(显示信息编号/项目名称的行)的高度为8毫米,剩余高度被平均分排到其他行 rt.Rows(1).Height = 8 \'设置第2行(显示项目编号/建设地点的行)的高度为8毫米,剩余高度被平均分排到其他行 rt.Rows(2).Height = 8 \'设置第3行(显示是否投标/建设单位的行)的高度为8毫米,剩余高度被平均分排到其他行 rt.Rows(3).Height = 8 \'设置第4行(显示设计阶段/相关专业的行)的高度为8毫米,剩余高度被平均分排到其他行 rt.Rows(4).Height = 8 \'设置第5行(显示电压等级/计划开始时间/计划完成时间的行)的高度为8毫米,剩余高度被平均分排到其他行 rt.Rows(5).Height = 8 \'设置第6行(显示项目性质/业主类别/项目经理的行)的高度为8毫米,剩余高度被平均分排到其他行 \' 多行文本行不设高度 rt.Rows(10).Height = 8 \'设置第11行(显示编制人员/编制日期/批准人员的行)的高度为8毫米,剩余高度被平均分排到其他行 rt.Cols(0).Width = 12 \'设置第1列的宽度 rt.Cols(1).Width = 20 \'设置第2列的宽度 rt.Cols(2).Width = 18 \'设置第3列的宽度 rt.Cols(3).Width = 20 \'设置第4列的宽度 rt.Cols(4).Width = 18 \'设置第5列的宽度 rt.Cols(5).Width = 20 \'设置第4列的宽度 \'设置合并单元格 rt.Cells(0,3).SpanCols = 3 \'第1行第3个单元格向右合并为1列(用于显示项目名称内容) rt.Cells(1,3).SpanCols = 3 \'第2行第3个单元格向右合并为1列(用于显示建设地点内容) rt.Cells(2,3).SpanCols = 3 \'第3行第3个单元格向右合并为1列(用于显示建设单位内容) rt.Cells(3,3).SpanCols = 3 \'第4行第3个单元格向右合并为1列(用于显示相关专业内容) rt.Cells(6,1).SpanCols = 5 \'第7行第5个单元格向右合并为1列(用于显示设计内容内容) rt.Cells(7,1).SpanCols = 5 \'第8行第5个单元格向右合并为1列(用于显示插入工作策划主表内容) rt.Cells(8,1).SpanCols = 5 \'第9行第5个单元格向右合并为1列(用于显示设计输入内容) rt.Cells(9,1).SpanCols = 5 \'第10行第5个单元格向右合并为1列(用于显示设计工期内容) \'设置表格样式 rt.CellStyle.Spacing.All = 1 \'单元格内容缩进1毫米 rt.Style.GridLines.All = New prt.Linedef \'设置网格线 rt.Style.TextAlignVert = prt.AlignVertEnum.Center \'内容垂直居中 rt.Rows(6.1).Style.TextAlignVert = prt.AlignVertEnum.Top \'唯独第7行是设计内容,内容靠上对齐 rt.Rows(8.1).Style.TextAlignVert = prt.AlignVertEnum.Top \'唯独第9行是设计输入,内容靠上对齐 rt.Rows(9.1).Style.TextAlignVert = prt.AlignVertEnum.Top \'唯独第10行是设计工期,内容靠上对齐 \'下面很简单,指定每一个单元格的内容 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("建设地点") rt.Cells(2,0).Text= "是否投标" rt.Cells(2,1).Text = CurRow("是否投标") rt.Cells(2,2).Text= "建设单位" rt.Cells(2,3).Text = CurRow("建设单位") rt.Cells(3,0).Text= "设计阶段" rt.Cells(3,1).Text = CurRow("设计阶段") rt.Cells(3,2).Text= "相关专业" rt.Cells(3,3).Text = CurRow("相关专业部门") rt.Cells(4,0).Text= "电压等级" rt.Cells(4,1).Text = CurRow("电压等级") rt.Cells(4,2).Text= "计划开始时间" rt.Cells(4,3).Text = CurRow("计划开始时间") rt.Cells(4,4).Text= "计划完成时间" rt.Cells(4,5).Text = CurRow("计划完成时间") rt.Cells(5,0).Text= "项目性质" rt.Cells(5,1).Text = CurRow("项目性质") rt.Cells(5,2).Text= "业主类别" rt.Cells(5,3).Text = CurRow("业主类别") rt.Cells(5,4).Text= "项目经理" rt.Cells(5,5).Text = CurRow("项目经理") rt.Cells(6,0).Text = "设" & vbcrlf & "计" & vbcrlf & "依" & vbcrlf & "据" & vbcrlf & "," & vbcrlf & "原" & vbcrlf & "则" & vbcrlf & "," & vbcrlf & "内" & vbcrlf & "容" & vbcrlf & "和" & vbcrlf & "要" & vbcrlf & "求" rt.Cells(6,1).Text = CurRow("设计内容") rt.Cells(7,0).Text = "人" & vbcrlf & "员" & vbcrlf & "策" & vbcrlf & "划" & vbcrlf & "安" & vbcrlf & "排" \'插入表的行标题 rt.Cells(8,0).Text = "设" & vbcrlf & "计" & vbcrlf & "输" & vbcrlf & "入" rt.Cells(8,1).Text = CurRow("设计输入") rt.Cells(9,0).Text = "设" & vbcrlf & "计" & vbcrlf & "工" & vbcrlf & "期" & vbcrlf & "要" & vbcrlf & "求" rt.Cells(9,1).Text = CurRow("设计工期") rt.Cells(10,0).Text= "编制人员" rt.Cells(10,1).Text = CurRow("编制人员") rt.Cells(10,2).Text= "编制日期" rt.Cells(10,3).Text = CurRow("编制日期") rt.Cells(10,4).Text= "批准人员" rt.Cells(10,5).Text = CurRow("批准人员") rt.Cols(0).Style.TextAlignVert = prt.AlignVertEnum.Center \'第1列内容垂直居中 rt.Cols(0).Style.TextAlignHorz = prt.AlignHorzEnum.Center \'第1列内容水平居中 rt.Cols(2).Style.TextAlignHorz = prt.AlignHorzEnum.Center \'第3列内容水平居中 \'rt.Rows(2).Style.TextAlignHorz = prt.AlignHorzEnum.Center \'第3行内容水平居中 rt.Cells(7,1).RenderObject = cr \'插入工作策划主表 rt.Cells(10,1).Style.TextAlignHorz = prt.AlignHorzEnum.Center \'唯独第11行第2列内容居中 rt.Cells(10,3).Style.TextAlignHorz = prt.AlignHorzEnum.Center \'唯独第11行第4列内容居中 rt.Cells(10,4).Style.TextAlignHorz = prt.AlignHorzEnum.Center \'唯独第11行第5列内容居中 rt.Cells(10,5).Style.TextAlignHorz = prt.AlignHorzEnum.Center \'唯独第11行第6列内容居中 rt.Style.Font = New Font("宋体", 10) \'设置字体 rt.Style.LineSpacing = 150 \'设置双倍行距 doc.Body.Children.Add(rt) \'将表格对象加入到报表中 Doc.Preview() \'预览报表 |
-- 作者:大红袍 -- 发布时间:2016/4/14 13:08:00 -- 上传具体例子测试。 |
-- 作者:大红袍 -- 发布时间:2016/4/14 13:10:00 -- 看看
http://www.foxtable.com/help/topics/1184.htm
[此贴子已经被作者于2016/4/14 13:09:57编辑过]
|
-- 作者:douglas738888 -- 发布时间:2016/4/14 13:50:00 -- 专业报表测试例子: |
-- 作者:大红袍 -- 发布时间:2016/4/14 14:45:00 -- Dim doc As New PrintDoc \'定义一个报表 Dim rx As New prt.RenderText \'定义一个文本对象 rt.Width = 180 \'设置表格的高度为180毫米 rt.Cells(14,0).Text= "设计要求" rt.Cells(13,1).RenderObject = cr \'插入表B rt.Cells(15,1).Style.TextAlignHorz = prt.AlignHorzEnum.Center \'唯独第2列内容居中 doc.Body.Children.Add(rt) \'将表格对象加入到报表中 |
-- 作者:douglas738888 -- 发布时间:2016/4/14 16:41:00 -- 老师,再请教一下,多行文本用参数控制后,分割部分是否能封口画上线条更好看些。 |