用紙サイズをC#コードで設定する方法を教えてください。 APIprintDocumentを使用しています。
以下は私のコードです:
ppvw = new PrintPreviewDialog();
ppvw.Document = printDoc;
ppvw.PrintPreviewControl.StartPage = 0;
ppvw.PrintPreviewControl.Zoom = 1.0;
ppvw.PrintPreviewControl.Columns = 10;
// Showing the Print Preview Page
printDoc.BeginPrint += new System.Drawing.Printing.PrintEventHandler(PrintDoc_BeginPrint);
printDoc.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(PrintDoc_PrintPage);
if (ppvw.ShowDialog() != DialogResult.OK)
{
printDoc.BeginPrint -= new System.Drawing.Printing.PrintEventHandler(PrintDoc_BeginPrint);
printDoc.PrintPage -= new System.Drawing.Printing.PrintPageEventHandler(PrintDoc_PrintPage);
}
printDoc.PrinterSettings.DefaultPageSettings.PaperSize = new System.Drawing.Printing.PaperSize("a2", 5.0,5.0);
printDoc.Print();
PrinterSettings ps = new PrinterSettings();
PrintDocument recordDoc = new PrintDocument();
recordDoc.PrinterSettings = ps;
たとえば、「A4」のように種類別に用紙サイズを設定する方法は次のとおりです。
IEnumerable<PaperSize> paperSizes = ps.PaperSizes.Cast<PaperSize>();
PaperSize sizeA4 = paperSizes.First<PaperSize>(size => size.Kind == PaperKind.A4); // setting paper size to A4 size
recordDoc.DefaultPageSettings.PaperSize = sizeA4;
カスタム用紙サイズを設定する別の方法は次のとおりです
recordDoc.DefaultPageSettings.PaperSize = new PaperSize("210 x 297 mm", 800, 800);
PrintPreviewDialog ppvw = new PrintPreviewDialog();
ppvw .Document = recordDoc;
ppvw.ShowDialog();
それがうまくいくことを願っています。
以下のように使用でき、設定フォーム内でページサイズを設定できます。
private void button1_Click(object sender, EventArgs e)
{
PrintDialog printdg = new PrintDialog();
if (printdg.ShowDialog() == DialogResult.OK)
{
PrintDocument pd = new PrintDocument();
pd.PrinterSettings = printdg.PrinterSettings;
pd.PrintPage += PrintPage;
pd.Print();
pd.Dispose();
}
}
private void PrintPage(object o, PrintPageEventArgs e)
{
// Printng logic
}
私はVisualBasicを使用しています。このコードを使用すると、printpreviewですべてを表示するフォームを取得できますが、右側に細かくカットされたページを印刷できます。
PrintForm1.Form = Me
PrintForm1.PrinterSettings.DefaultPageSettings.Landscape = True
PrintForm1.PrinterSettings.DefaultPageSettings.PaperSize = New Printing.PaperSize("Custom", Me.Height, (Me.Width + 47))
PrintForm1.PrinterSettings.DefaultPageSettings.Margins = New Printing.Margins(3, 3, 3, 3)
PrintForm1.PrinterSettings.DefaultPageSettings.PaperSize.RawKind = Printing.PaperKind.A4Small
PrintForm1.PrintAction = Printing.PrintAction.PrintToPreview 'PrintForm1.PrintAction = Printing.PrintAction.PrintToPrinter
PrintForm1.Print() 'PrintForm1.Print(Me, PowerPacks.Printing.PrintForm.PrintOption.Scrollable) '
用紙サイズのコンストラクターはPaperSize(String、Int32、Int32)です。
5.0(5)X 5.0(5)は小さすぎます、、、「カスタムサイズ」が文字列でない限り、..またはA2の場合は420 x 594 .. ..
また、printer.PaperSizesでforeach PaperSizeサイズを列挙して、A2が存在するかどうかを確認してください。
デフォルトでは、Rawkindをカスタムに設定します。 http://msdn.Microsoft.com/en-us/library/system.drawing.printing.papersize.rawkind.aspx で説明されているようにRawkindも設定する必要があります。 ==
これを試して。このコードは、この問題の解決に役立つと思います。
Private Sub bt_Save_Click(sender As Object, e As EventArgs) Handles bt_Save.Click
MsgBox("Saved", MsgBoxStyle.Information)
If MsgBox("you want to print now?", MsgBoxStyle.Question + vbOKCancel, "Printing") = MsgBoxResult.Ok Then
Try
PrintPreviewDialog1.Document = ImportBillPrintDocument
ImportBillPrintDocument.PrinterSettings.DefaultPageSettings.PaperSize = pkCustomSize1
ImportBillPrintDocument.DefaultPageSettings.PaperSize = pkCustomSize1
PrintPreviewDialog1.WindowState = FormWindowState.Maximized
PrintPreviewDialog1.ShowDialog()
Catch ex As Exception
End Try
End If
End Sub