2009-03-26 2 views
4

Пожалуйста, помогите мне установить размер бумаги в коде C#. Я использую API PrintDocument .. мой кодНастройка размера бумаги

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(); 
+1

Какая ошибка вы получаете? – Shoban

ответ

0

Конструктор для формата бумаги PaperSize (String, Int32, Int32)

5,0 (5) X 5,0 (5) слишком мало ,,, Если «Нестандартный размер» не ваша строка .. или 420 х 594 для А2 ...

, а также попробовать перечисляя размер Еогеасп PaperSize в printer.PaperSizes и проверьте, есть ли там A2 .. или нет ..

По умолчанию он устанавливает Rawkind в обычай, вам также необходимо установить Rawkind, как указано in http://msdn.microsoft.com/en-us/library/system.drawing.printing.papersize.rawkind.aspx

+0

спасибо за ответ ... но если я дам 420X594, то он будет показывать только бумагу формата A4 .. скажите, пожалуйста, как установить размер cusom – 2009-03-26 09:01:48

0

Я использую Visual Basic, с помощью этого кода я могу получить форму, чтобы показать все это в 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) ' 
0

Вы можете использовать как описано ниже, и пользователь может установить размер страницы в установочной форме.

 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 
     } 
8
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(); 

Надеюсь, что это работает.

+1

, можете ли вы рассказать, что вы имеете в виду под 800, 800? – Fawad

+0

@Fawad в этом конструкторе класс PaperSize принимает 3 аргумента: имя 1-размера бумаги это не имеет никакого отношения к 2 и 3-го аргументов 2-ширина бумаги 3-высота бумаги проверить эти ссылки на подробные Информация. https://msdn.microsoft.com/en-us/library/7dbh1cyh(v=vs.110).aspx https://msdn.microsoft.com/en-us/library/system.drawing.printing. paperize (v = vs.110) .aspx – Mawardy

+0

@Fawad: 800, 800 указывает размер страницы 8 "x 8". (Это ширина и высота, в сотых долях дюйма). –