如标准,PDF打印机不报错,但局域网中的共享打印机报“不能设置类 PageSetup 的 PaperSize 属性”错误。Print Spooler服务已启动。
Dim fl As String = ProjectPath & "Reports\冲压制令单.xls"
With Tables("冲压生产计划追踪表")
If .TopPosition > -1 Then '如果选定区域包括数据行
'******建立主表与制令和出入的关联*********
Relations.Add("制令关联",DataTables("冲压生产计划追踪表").DataCols("制令单号"),DataTables("冲压生产计划追踪表_Table1").DataCols("销售单号"),False,RelationPathEnum.none)
Relations.Add("出入关联",DataTables("冲压生产计划追踪表").DataCols("制令单号"),DataTables("冲压生产计划追踪表_Table5").DataCols("制令单号"),False,RelationPathEnum.none)
Dim ks As Integer = .TopPosition
Dim js As Integer = .BottomPosition
For i As Integer = ks To js
Dim Book As New XLS.Book(ProjectPath & "Attachments\冲压制令单.xls")
.Select(i,0)
'生成条码图片
Dim Bar As New BarCodeBuilder
Bar.Symbology = Barpro.Symbology.Code39
Bar.Code = .Rows(i)("制令单号")
Bar.BarHeight = 8
Bar.QuietZoneWidth = 2
Bar.DisplayChecksum = False
bar.SaveImage(ProjectPath & "Images\zldtxm.wmf",300)
Book.Build() '生成细节区
Dim Sheet As XLS.Sheet = Book.Sheets(0) '引用工作簿的第一个工作表
Dim prtdoc As new Printing.PrintDocument()
prtdoc.PrinterSettings.PrinterName = GetConfigValue("_zlddyj",DefaultPrinter) '设置打印机名称
Sheet.MergeCell(2,9,21,1) '合并提示列
sheet(1,6).Value = Date.Now
'fl = ProjectPath & "Reports\" & .Rows(i)("制令单号") & ".pdf"
Book.Save(fl) '保存工作簿
Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(fl)
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
Dim zzmcs As new List(of String) '自动添加24x28的纸张
'For Each ps As System.Drawing.Printing.PaperSize In prtdoc.PrinterSettings.PaperSizes '生成打印机的纸张下拉列表
'If zzmcs.Contains(ps.PaperName) = False Then
'zzmcs.Add(ps.PaperName)
'End If
'Next
'If zzmcs.Contains("klj24x28") = False Then
'Dim cps As new CustomPaperSize.CustomPaperSize()
''cps.SetPrintForm(prtdoc.PrinterSettings.PrinterName,"klj24x28", 10 * GetConfigValue("_zldzzkd", 240), 10 * GetConfigValue("_zldzzgd", 280))
'cps.SetPrintForm(prtdoc.PrinterSettings.PrinterName,"klj24x28", 10 * 240, 10 * 280)
'End If
With Ws.PageSetup
'For Each ps As System.Drawing.Printing.PaperSize In prtdoc.PrinterSettings.PaperSizes '生成打印机的纸张下拉列表
''If ps.PaperName = "klj24x28" Then
'If ps.PaperName = "Letter" OrElse ps.PaperName = "信纸" Then
'.PaperSize = ps.RawKind
'End If
'Next
.PaperSize = MSExcel.XlPaperSize.xlPaperLetter '纸张大小
.LeftMargin = 10 '页面左边距
.RightMargin = 10'页面右边距
.TopMargin = 10 '页面顶部边距
.BottomMargin = 10 '页面底部边距
.CenterHorizontally = True '页面水平居中
'.CenterVertically = True '页面垂直居中
.Zoom = False '以下设置将缩印在一页内
.FitToPagesWide = 1 '按照1页的宽度打印
.FitToPagesTall = 1 '按照1页的高度打印
End With
'App.Visible = True
Ws.PrintOut(Preview:=False,ActivePrinter:= "" & GetConfigValue("_zlddyj",DefaultPrinter) & "")
wb.save
wb.close
App.Quit
Next
'******删除建立的关联*****
Relations.Delete("制令关联")
Relations.Delete("出入关联")
End With