Foxtable(狐表)用户栏目专家坐堂 → iTextSharp 报错请教


  共有1974人关注过本帖树形打印复制链接

主题:iTextSharp 报错请教

帅哥哟,离线,有人找我吗?
ljh29206
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1368 积分:12189 威望:0 精华:0 注册:2012/3/5 11:32:00
iTextSharp 报错请教  发帖心情 Post By:2018/3/28 10:25:00 [只看该作者]

 

 

代码如下

        Dim cb As new iTextSharp.text.Rectangle(595,257)  '纸张大小
        Dim dc As new iTextSharp.text.Document(cb)

        Dim a as integer
        Dim ft  As String = "C:\WINDOWS\Fonts\msyh.TTF"      '  ITextSharp支持中文的字体
        Dim ift As iTextSharp.text.pdf.BaseFont = iTextSharp.text.pdf.BaseFont.CreateFont(ft, _
        iTextSharp.text.pdf.BaseFont.IDENTITY_H, iTextSharp.text.pdf.BaseFont.NOT_EMBEDDED)
        '创建实例,PDF 文件将会保存到这里
        Dim writer As iTextSharp.text.pdf.PdfWriter  = iTextSharp.text.pdf.PdfWriter.GetInstance(dc,new System.IO.FileStream(file,System.IO.FileMode.Create))
        '打开文档
        dc.Open()
       
        Dim sumyes As Integer =   Math.Ceiling(FileSys.GetFiles("d:\cutoff\").Count /3) * 10  + 100    '读文件名 从小到大
        For p As Integer = 1 To sumyes
            If FileSys.FileExists("d:\cutoff\" & "test" & p & ".jpg") Then
                Dim str As String = "d:\cutoff\" & "test" & p & ".jpg"
                Dim ifo As new FileInfo(str)
                If str.Contains("jpg")  AndAlso ifo.Length > 30000 Then  'ifo.Length > 50000 让文件的大小大于 50k   避免空页面加载
                    a = a + 1
                    Dim  itIm2 As iTextSharp.Text.Image  =  iTextSharp.text.Image.getInstance(str)     '定义ITextSharp图片
                    itIm2.SetAbsolutePosition(20,1)        '设置图片坐标:原点(0,0)为左下角!
                    itIm2.ScalePercent(20)
                    dc.add(itIm2)
                    dc.newpage
                End If
            End If
        Next
        dc.Close()

 

 


图片点击可在新窗口打开查看此主题相关图片如下:捕获.jpg
图片点击可在新窗口打开查看

 

偶尔会提示以上内容, 应该是内存不足吧!  不知道怎么处理好,请指点下

[此贴子已经被作者于2018/3/28 11:03:08编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/28 11:45:00 [只看该作者]

1、读取的jpg图片较多、读取的jpg图片较大,都会导致内存溢出;

 

2、你可以先把图片处理一下,再添加到pdf里面去

 

方法一:你可以把图片的尺寸处理下,参考

 

http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=89637

 

方法二:你还可以在缩小图片尺寸的基础下,再控制图片质量

 

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


 回到顶部