以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  foxtable 自带的PDF生成功能异常  (http://www.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 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

Dim a As Integer = 0
For Each str As String In FileSys.GetFiles("c:\\cutoff\\")
    a = a + 1
    output.show(a & str)
    Dim rg As New prt.RenderGraphics()
    Dim bmp As new bitmap(str)
    rg.Graphics.DrawImage(bmp, 1, 1)
    rg.Width = "109%Parent"
    rg.Height = "100%Parent"
    Doc.Body.Children.Add(rg)
    bmp.dispose
Next

doc.Preview

 生成pdf的话,都会提示内存不足的,因为要转换成图片,整体保存为一个文件。

 

 或者换一种方法生成pdf

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=70686&skin=0

 

下载信息  [文件大小:621.0 KB  下载次数:20]
图片点击可在新窗口打开查看点击浏览该文件:itextsharp 中文帮助文档.rar

 


--  作者: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编辑过]