以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- foxtable 自带的PDF生成功能异常 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=108464) |
||||
-- 作者:ljh29206 -- 发布时间:2017/10/23 16:01:00 -- foxtable 自带的PDF生成功能异常 Dim fl As String = "d:\\abc.pdf" Dim a As Integer = 0 \'--------------------------------------------------------------对生成的图片进行批量处理,然后放入同一个PDF文件里面 Dim doc As New PrintDoc \'定义一个报表对象 doc.PageSetting.Landscape = True \'横向打印 \'doc.PageSetting.PaperKind = 70 \'纸张类型改为B5 doc.PageSetting.Width = 210 \'纸张宽度为220毫米 doc.PageSetting.Height = 91 \'纸张高度为110毫米 doc.PageSetting.LeftMargin = 1 \'设置页边距 doc.PageSetting.RightMargin = 0 doc.PageSetting.TopMargin = 0 doc.PageSetting.BottomMargin = 0 \'--------------------设置页面 \'--------------------添加图片到PDF For Each str As String In FileSys.GetFiles("d:\\cutoff\\") Dim ifo As new FileInfo(str) \' If str.Contains("jpg") AndAlso ifo.Length > 30000 Then \'ifo.Length > 50000 让文件的大小大于 50k 避免空页面加载 a = a + 1 Dim rt As prt.RenderText \'定义一个文本对象 rt = New prt.RenderText() \'创建文本对象 rt.Style.FontBold = True \'字体加粗 rt.Style.FontSize = 9 \'字体大小为9磅 rt.Text = "(" & a & " / " & FileSys.GetFiles("d:\\cutoff\\").Count & ")" \'设置文本对象的内容 rt.Width = "Auto" \'自动设置宽度 rt.X = 62 \'指定水平位置 rt.y = 75 \'指定垂直位置 Dim rm As New prt.RenderImage \'定义一个图片对象 rm.Image = GetImage(str) \'设置图片 rm.Width = "109%Parent" rm.Height = "100%Parent" rm.Style.ImageAlign.AlignHorz = prt.ImageAlignHorzEnum.Left rm.Style.ImageAlign.AlignVert = prt.ImageAlignVertEnum.top rm.Style.ImageAlign.KeepAspectRatio = False doc.Body.Children.Add(rm) \'将图片对象加入报表 doc.Body.Children.Add(rt) \'将文本对象加入到报表 \' End If Next \'--------------------生成页面 doc.SavePDF(fl) \'保存为PDF文件 代码以上 , 把图片 复制 为 以 25 ,50 ,100 张 进行测试 发现25,50 可以通过, 100张时 就会失败, 请 指点. 请测试 大概60+ 的时候会提示内存不足. [此贴子已经被作者于2017/10/25 15:27:24编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2017/10/23 18:29:00 -- 拷贝了150张,也没提示内存溢出。你电脑的设备的内存是多大的? |
||||
-- 作者:ljh29206 -- 发布时间:2017/10/24 8:46:00 -- 16G! 甜版 你测试的结果有没看看, doc.Body.Children.Add(rm) 这个位置的图片 会变成空白 超过60份就会. 只留下 doc.Body.Children.Add(rt) 这部分在页面. 有时不一定会提示内存不足,但生成的pdf 会变成 空白页
[此贴子已经被作者于2017/10/24 8:47:54编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2017/10/24 10:57:00 -- 没办法,这个是有内存限制的。
预览可以这样处理
\'--------------------------------------------------------------对生成的图片进行批量处理,然后放入同一个PDF文件里面 Dim a As Integer = 0 doc.Preview 生成pdf的话,都会提示内存不足的,因为要转换成图片,整体保存为一个文件。
或者换一种方法生成pdf
http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=70686&skin=0
|
||||
-- 作者:ljh29206 -- 发布时间:2017/10/25 11:48:00 -- 甜版,请教 教程里面有 把文本添加到指定位置(绝对坐标)的 内容 PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("test.pdf")) PdfContentByte cb = writer.DirectContent BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED) cb.beginText() cb.setFontAndSize(bf, 12) cb.showTextAligned(PdfContentByte.ALIGN_CENTER, text + "This text is centered", 250, 700, 0) cb.endText() 不懂怎么转换为foxtable 代码, 求指点 [此贴子已经被作者于2017/10/25 11:48:44编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2017/10/25 12:28:00 -- 转换代码,参考 http://converter.telerik.com/
|
||||
-- 作者:ljh29206 -- 发布时间:2017/10/25 15:25:00 -- 感谢甜版, 这个转换真好用. 既然存在不足地方,个人建议还是 用iTextSharp,取代 狐表现有的savepdf. 造福更多狐友. [此贴子已经被作者于2017/10/25 15:30:23编辑过]
|