2017-05-25 28 views
8

Tôi có tùy chọn mà người dùng có thể chọn tùy chọn in, nơi nó sẽ trả về PrintDialog nơi người dùng có thể chọn cấu hình máy in đã được xác định.Tệp in với cấu hình máy in được chọn/kích thước trang

Đối với kích thước giấy mặc định của máy in này là A4 nhưng chọn cấu hình này nó sẽ thay đổi thành A5.

Tôi đang sử dụng mã bên dưới gửi tác vụ in để sửa máy in nhưng không nhận đúng cỡ giấy như luôn in ở dạng A4. Tôi có thiếu bất cứ điều gì ở đây hoặc là có cách thay thế để đạt được điều này?

using (var pd = new PrintDialog()) 
{ 
    if (pd.ShowDialog() == DialogResult.OK) 
     { 
     var info = new ProcessStartInfo(filepath) 
        { 
         Arguments = "\"" + pd.PrinterSettings + "\"", 
         CreateNoWindow = true, 
         WindowStyle = ProcessWindowStyle.Hidden, 
         UseShellExecute = true, 
         Verb = "Print" 
        }; 
     Process.Start(info); 
     } 
    } 
+3

Đó là quá chắc rằng bất cứ chương trình có liên quan đến * filepath * sẽ đánh giá cao những luận cứ bạn vượt qua. Nói chung, bất kỳ chương trình nào thực hiện Động từ chỉ cần tự quyết định sử dụng giấy nào. Hầu như luôn là lựa chọn mặc định như được định cấu hình trong Bảng điều khiển. –

+0

Điều đó trông đáng ngờ như hộp thoại tùy chọn cấu hình mặc định của trình điều khiển in, nhưng dường như bạn đang mở nó như một quá trình riêng biệt. Bạn đang cố gắng tạo một chương trình thay đổi cài đặt máy in mặc định? Nói cách khác, tôi rất bối rối về chính xác những gì bạn đang cố gắng làm. Câu trả lời của S. Hooley thể hiện cách thông thường để in một trang từ bên trong ứng dụng của bạn. Tôi tin rằng nó có thể được sử dụng kết hợp với PrintDialog để cho phép người dùng điều chỉnh các thiết lập in ấn. TLDR: Vui lòng giải thích chính xác bạn đang cố gắng làm gì. – ashbygeek

Trả lời

0

Bạn sẽ có thể chỉ định mã sử dụng page settings như sau, dựa trên PrintDocument từ System.Drawing.Printing. Nếu cần thiết, bạn cũng có thể định nghĩa một event handler cho sự kiện PrintPage sử dụng lớp PrintDocument:

PrintDocument pd = new PrintDocument(); 
//pd.PrintPage += new PrintPageEventHandler(handlePagePrint); 
pd.PrinterSettings.PrinterName = "Printer name goes here"; 
// select the appropriate item from the PaperSizes collection 
pd.DefaultPageSettings.PaperSize = pd.PrinterSettings.PaperSizes[0]; 

if (pd.PrinterSettings.IsValid) 
{ 
    pd.Print(); 
} 
+0

Nó có lẽ sẽ là tốt để hiển thị như thế nào mối quan hệ này trong hộp thoại cài đặt máy in quá. – ashbygeek