以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  iTextSharp 报错请教  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=116612)

--  作者:ljh29206
--  发布时间:2018/3/28 10:25:00
--  iTextSharp 报错请教

 

 

代码如下

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

--  作者:有点甜
--  发布时间: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