2

VB.net Setting - Printers - File - Server Properties.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 レポートのプレビューではサイズ プレビューでカスタム用紙が表示されるのに、レター サイズで印刷されるのはなぜですか? 私の目標を達成するためのより良い方法はありますか?

4

2 に答える 2

3

この方法は、Epson LX-300+ ii ドットマトリックス プリンター以降のモデルで機能します。

特に領収書の印刷にプリンターを使用している場合は 、プリンターを目的の用紙サイズに設定する手順を次に示します。

最初に使用するプリンターを設定します。プリンターのデバイスとプリンター に移動し、使用するプリンターを選択してクリックします -プリンターのプロパティを右クリックし、 [設定...]ボタンをクリックします。メインタブ -ドキュメント サイズユーザー定義に変更する と、新しい新しいウィンドウが表示されます。[用紙サイズ名] で名前 (つまり、OR 用紙) を指定し、必要に応じて用紙の幅と高さを変更します [保存]をクリックしてから [ OK ] をクリックします

ここに画像の説明を入力 次に、右クリックを押してプリンターを設定し、デフォルトプリンターとして設定します

印刷用にこれらのコード行を追加します。パラメータとデータセットは引き続き使用できます。

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)
于 2016-03-10T06:25:02.920 に答える
2

あなたはこのようにすることができます

var rep = new YursCrystalReport();
var printerSettings = new System.Drawing.Printing.PrinterSettings();
var pSettings = new System.Drawing.Printing.PageSettings(printerSettings); 
pSettings.PaperSize = new System.Drawing.Printing.PaperSize("newsize", 3000, 3000);//custom size  hundredths (100=1 inch)
pSettings.Margins = new System.Drawing.Printing.Margins(0, 0, 0, 0);
rep.PrintOptions.DissociatePageSizeAndPrinterPaperSize = true;
rep.PrintOptions.CopyFrom(printerSettings, pSettings);
于 2019-03-28T10:15:45.423 に答える