以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  商业版转开发版后出现问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=71313)

--  作者:ljh29206
--  发布时间:2015/7/9 10:27:00
--  商业版转开发版后出现问题

我打印文件 外部PDF。

 

用商业版打印没问题

 

转换 开发板后  打印 提示  内存不足。。。。。  而且还是只针对 PDF文件页数 大于20页是时候才发生,该怎么解决呢!


--  作者:大红袍
--  发布时间:2015/7/9 10:32:00
--  

1、写什么代码打印?

 

2、提示内存不足,就是图片过大过多导致内存不足;

 

3、做例子发上来


--  作者:ljh29206
--  发布时间:2015/7/9 12:05:00
--  

怎么用商业版打印没问题。。。。 

 

 

转换格式后,用 开发板打印

            Dim fileName1 As String =   dr("受领书")
            Dim obj1 As object = CreateObject("WScript.Network")
            obj1.SetDefaultPrinter("EPSON LQ-1600K IIIH ESC/P2")
            If filename1 IsNot Nothing Then
                PDFView.PrinterUtil.RenderDPI = 350
                Dim pageCount1 As Integer = pdf.PageCount(fileName1)   \'获取页码
                PDFView.PrinterUtil.PrintImagesToPrinter(fileName1,1, pagecount1, 1, False)
            End If
            Dim fileName As String = dr("路径")  \'文件路径
            Dim obj As object = CreateObject("WScript.Network")
            obj.SetDefaultPrinter(dayinji)
            If filename IsNot Nothing Then
                PDFView.PrinterUtil.RenderDPI = 500
                Dim pageCount As Integer = pdf.PageCount(fileName)   \'获取页码
                Dim copyCount As Integer = Math.Ceiling((pageCount - 2)/4)

  If dr("货号")="H2" Then
                  
                    Dim sum1 As Integer
                    sum1 =DataTables("订单明细").Compute("sum(箱体总高)","[订单条码] = \'" & dr("订单条码") &"\' And [客户品番] =  \'90915CA003\'")
                    If sum1 >0 Then
                    PDFView.PrinterUtil.PrintImagesToPrinter(fileName, 1, 2, Math.Ceiling(sum1/396), False)
                    End If
                    Dim sum2 As Integer
                    sum2 =DataTables("订单明细").Compute("sum(箱体总高)","[订单条码] = \'" & dr("订单条码") &"\' And [客户品番] <>  \'90915CA003\'")
                    PDFView.PrinterUtil.PrintImagesToPrinter(fileName, 1, 2, Math.Ceiling(sum2/396), False)
                    PDFView.PrinterUtil.PrintImagesToPrinter(fileName, 3, pagecount, 1, False)
                Else
                    If dr("货号")="K5" Then
                        Dim sum4 As Integer
                       
                        sum4 =DataTables("订单明细").Compute("sum(箱体总高)","[订单条码] = \'" & dr("订单条码") &"\' And [客户品番] = \'177000V110\'")
                        If sum4 > 0 Then
                            PDFView.PrinterUtil.PrintImagesToPrinter(fileName, 1, 2, Math.Ceiling(sum4/297), False)
                        End If
                        Dim sum5 As Integer
                        sum5 =DataTables("订单明细").Compute("sum(箱体总高)","[订单条码] = \'" & dr("订单条码") &"\' And [客户品番] <> \'177000V110\'")
                        PDFView.PrinterUtil.PrintImagesToPrinter(fileName, 1, 2, Math.Ceiling(sum5/396), False)
                        PDFView.PrinterUtil.PrintImagesToPrinter(fileName, 3, pagecount, 1, False)
              \'追加空箱打印
                        Dim sum6 As Integer
                        sum6 =DataTables("订单明细").Compute("sum(箱数)","[订单条码] = \'" & dr("订单条码") &"\' And [箱体高度] = \'33\' And [客户品番] <> \'177000V110\'")
                        Dim sum7 As Integer
                        sum7 =DataTables("订单明细").Compute("sum(箱数)","[订单条码] = \'" & dr("订单条码") &"\' And [箱体高度] = \'22\' And [客户品番] <> \'177000V110\'")
                          Dim vk As DataRow = DataTables("空箱计算表").Find("EU33 = \'" & sum6 & "\' and  EU22 = \'" & sum7 & "\'")
                        If vk IsNot Nothing Then                             
                           If vk("空箱数") > 0 Then
                            Dim ln As Integer = vk("空箱数")
                            Dim strpath As  String = "E:\\出货系统\\Attachments\\空箱" & ln & ".xlsx"
                            If FileSys.FileExists(strpath)  Then
                                Dim App As New MSExcel.Application
                                Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(strpath)
                                Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
                                Ws.PrintOut(From:=1,To:=1,Copies:=1,Preview:=False)
                                App.Visible = True
                                App.Quit
                            End If
                            End If
end if

 

 

打印的时候   "H2"  就会提示 。   

 

                 "K5"  没问题!

[此贴子已经被作者于2015/7/9 12:05:57编辑过]

--  作者:大红袍
--  发布时间:2015/7/9 12:11:00
--  

 把bin文件夹删除,测试一次。

 

 不行,就上传具体例子上来测试一下。


--  作者:ljh29206
--  发布时间:2015/7/9 16:15:00
--  

老师 , 你测试一下。

 

里面有3个打印PDF用的DLL , 需要先引用的。

另外 一个是用来测试用的PDF文档。你修改下打印路径

代码在窗体1里面。

用 开发板打印 提示内存不足!

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.zip

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:3106_b_707j_1_h2_2015071004_k.zip


--  作者:大红袍
--  发布时间:2015/7/9 16:31:00
--  

gsdll32.dll发上来;

 

dll的源代码发上来


--  作者:大红袍
--  发布时间:2015/7/9 16:32:00
--  
 如果是页数过多的时候有问题,那么,你就分开来几页几页的打印,不要一次性打印太多页。
--  作者:ljh29206
--  发布时间:2015/7/10 10:38:00
--  

gsdll32.dll 这个DLL

 

10M。。。。

 

这些DLL都是在 这个论坛下的  之前 唐僧三摆手  打印  的 帖子!

 

还有  林海伦 版主 帮忙修改了一下。

 

我也不知道 源码是什么。。。

 

 

我测试过 版主的方法 超过10页的部分分开打印,  但还是会提示  内存不足   (用回商业版的 没问题)

 

打印出来的 纸张 上边写着

 

 没看清:  i/o

error:      inputreaderror

operator: readimage

position:  7.35

 

 


--  作者:大红袍
--  发布时间:2015/7/10 11:31:00
--  
 dll别人肯定把源码给你的,人家已经重新写过代码了,如果没有源码,根本就无法控制里面的内容。
--  作者:大红袍
--  发布时间:2015/7/10 11:46:00
--  

 应该是里面的图片对象没有释放导致的内存溢出,要改dll文件。

 

 如果,你说商业版没事,开发版有事,那开发版运行的时候,你要用管理员权限运行项目。