2013-07-24 3 views
1

Я создал пользовательский размер бумаги «SUPP 15 х 14» в Setting - Printers - File - Server Properties. Сейчас я пытаюсь установить размер бумаги для Crystal Report с помощью VB.net 2005.Программных установить Нестандартный формат бумага для Crystal Report

Когда я запускать отчет с VB.net, средство просмотра отчетов Crystal показывает правильный просмотр для пользовательского формата бумаги, но когда я выдаю команду печати, она печатает с размером бумаги для принтера по умолчанию. (Например, письмо)

Вот код, я использую для печати:

Public Sub ... 
    '... 
    Dim ObjCrReport as new ReportDocument 
    '... 
    ObjCrReport.SetDataSource(ObjPrintDataSet.Tables("PrintData")) 
    SetReportPageSize("SUPP 15 x 14", 1) 
    '... 
End Sub 

Private Sub BtnPrintDoc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnPrintDoc.Click 
    Try 
     'Print command 
     ObjCrReport.PrintToPrinter(1, False, 0, 0) 
    Catch ex As Exception 
     MessageBox.Show(ex.Message, "Alert", MessageBoxButtons.OK, MessageBoxIcon.Error) 
    End Try 
End Sub 

Public Sub SetReportPageSize(ByVal mPaperSize As String, ByVal PaperOrientation As Integer) 
    Try 
     Dim ObjPrinterSetting As New System.Drawing.Printing.PrinterSettings 
     Dim PkSize As New System.Drawing.Printing.PaperSize 
     ObjPrinterSetting.PrinterName = "Epson FX1170" 
     For i As Integer = 0 To ObjPrinterSetting.PaperSizes.Count - 1 
      If ObjPrinterSetting.PaperSizes.Item(i).PaperName = mPaperSize.Trim Then 
       PkSize = ObjPrinterSetting.PaperSizes.Item(i) 
       Exit For 
      End If 
     Next 

     If PkSize IsNot Nothing Then 
      Dim myAppPrintOptions As CrystalDecisions.CrystalReports.Engine.PrintOptions = ObjCrReport.PrintOptions 
      myAppPrintOptions.PrinterName = "Epson FX1170" 
      myAppPrintOptions.PaperSize = CType(PkSize.RawKind, CrystalDecisions.Shared.PaperSize) 
      ObjCrReport.PrintOptions.PaperOrientation = IIf(PaperOrientation = 1, _ 
            CrystalDecisions.Shared.PaperOrientation.Portrait, _ 
            CrystalDecisions.Shared.PaperOrientation.Landscape) 
     End If 
     PkSize = Nothing 
    Catch ex As Exception 
     MessageBox.Show(ex.Message, "Alert", MessageBoxButtons.OK, MessageBoxIcon.Error) 
    End Try 
End Sub 

Если я использую myAppPrintOptions.PaperSize = PaperSize.PaperLegal, а затем Печать Просмотр & печати появляются правильно, но я хочу, чтобы установить пользовательский размер бумаги, который не отображается в классе PaperSize.

Что случилось с вышеуказанным кодом? Почему он печатает размер письма, где предварительный просмотр Crystal Reports в противном случае показывает пользовательскую бумагу в предварительном просмотре размера? Есть ли лучший способ достичь моей цели?

+0

Никто не имеет ответа? У меня такая же проблема здесь, на работе. –

+0

Возможно, для принтера задано значение «Размер письма» _. до сих пор нет ответа, сейчас 2016 год –

ответ

0

Этот метод работает с Epson LX-300 + II Матричные принтера и более поздние модели

Если вы используете принтер специально для печати Квитанции вот шаги, о том, как установить ваш принтер для требуемого размера бумаги

первой настройке принтера для использования: Перейти к Устройства и принтеры в принтеры выберите принтер вы собираетесь использовать и нажмите - правой кнопкой мыши Свойства принтера Нажмите Настройки ... Кнопка. Под Главная Вкладка - Изменить Размер документа до Определено пользователем Новое новое окно. в Paper Size Name укажите имя (то есть или бумага) и изменить ширину и высоту бумаги по желанию CLICK Сохранить затем OK

enter image description here затем установите принтер нажатием Щелкните правой кнопкой мыши затем установить по умолчанию Принтер

Добавьте эти строки кода для печати. Вы все равно можете использовать параметры и наборы данных.

Dim c As Integer 
    Dim doctoprint As New System.Drawing.Printing.PrintDocument() 
    doctoprint.PrinterSettings.PrinterName = "EPSON L1300 Series" 
    Dim rawKind As Integer 
    For c = 0 To doctoprint.PrinterSettings.PaperSizes.Count - 1 
     If doctoprint.PrinterSettings.PaperSizes(c).PaperName = "OR Receipts" Then 
      rawKind = CInt(doctoprint.PrinterSettings.PaperSizes(c).GetType().GetField("kind", Reflection.BindingFlags.Instance Or 

Reflection.BindingFlags.NonPublic).GetValue(doctoprint.PrinterSettings.PaperSizes(c))) 
      Exit For 
     End If 
    Next 

    Report1.PrintOptions.PaperSize = CType(rawKind, CrystalDecisions.Shared.PaperSize) 
    frmPreview.CrystalReportViewer1.ReportSource = Report1 
    Report1.PrintToPrinter(1, False, 1, 1) 
Смежные вопросы