2014-11-10 16 views
7

Tôi đã xem nhiều bài đăng liên quan đến việc đặt khay máy in trong C# cho tài liệu từ. Tôi cần một giải pháp cho Excel.Đặt khay máy in khi in tài liệu excel

Một giải pháp tốt hơn, nếu có thể, cho bất kỳ tài liệu nào. Một số loại phương pháp tôi có thể vượt qua một đường dẫn tập tin và khay.

EDIT Cho đến nay tôi đã thử những điều sau nhưng không có thay đổi rõ ràng nào được thực hiện trong cài đặt máy in.

PrinterSettings ps = new PrinterSettings(); 
ps.PrinterName = @"\\localhost\HP-4515n"; 
var dps = ps.DefaultPageSettings; 
dps.PaperSource.RawKind = 260; 

HOẶC

PrinterSettings ps = new PrinterSettings(); 
ps.PrinterName = @"\\localhost\HP-4515n"; 
PaperSource psrc = new PaperSource(); 
psrc.RawKind = 260; 
psrc.SourceName = "unknown"; 
dps.PaperSource = psrc; 

EDIT 2

Tôi đang hardcoding RawKind từ khay bằng cách nào đó không hiển thị trong papersources.

Và hiện tại khi tôi in ví dụ: Tài liệu Excel tôi hiển thị PrinterDialog, lấy tên của máy in đã chọn và chuyển nó đến interop Excel thuộc tính máy in hoạt động. Nhưng bây giờ tôi cần in khối lượng tài liệu và tôi cần phải đặt máy in đã chọn và thuộc tính của nó là đặc biệt khay theo lập trình.

+0

liên quan: http://stackoverflow.com/questions/770230/excel-vba-print-to-specific-printer-tray – Mitch

Trả lời

1

@sysboard, tôi thấy từ MSDN page on the PrinterSettings class rằng thuộc tính DefaultPageSettings không có phương thức đã đặt, chỉ là phương thức get. Tôi không chắc chắn rằng điều này có thể truy cập từ các lớp bên ngoài ... Bạn có thể nhìn vào các PageSettings class vì nó trông giống như nó có một nhà xây dựng quá tải cho phép bạn vượt qua một máy in được chỉ định, và nó có một phương pháp thiết lập trên PaperSource.

+0

Xem edit2 trả lời/biết thêm – sysboard

0

Tại sao bạn đang mã hóa cứng psrc.RawKind = 260; Để đặt RawKind cho Nguồn giấy có sẵn PaperSourceKind enum. thử đoạn mã sau

PrintDocument doc = new PrintDocument(); 
PaperSource pSource = new PaperSource(); 
pSource.RawKind = (int)PaperSourceKind.Middle; 
doc.DefaultPageSettings.PaperSource = pSource; 
+0

Xem edit2 để trả lời/thêm thông tin – sysboard

1

Bạn có thể lấy papersources sẵn sử dụng mã folowing:

PrintDocument printDoc1 = new PrintDocument(); 
List<PaperSource> psList = new List<PaperSource>(); 
PaperSource pkSource; 
for (int i = 0; i < printDoc1.PrinterSettings.PaperSources.Count; i++) 
{ 
    pkSource = printDoc1.PrinterSettings.PaperSources[i]; 
    psList.Add(pkSource); 
} 

Bây giờ trình bày những tùy chọn cho người sử dụng và nhận được đầu vào như mà giấy nguồn để sử dụng, nói nó người đầu tiên, bạn có thể làm:

PrintDocument doc = new PrintDocument(); 
doc.DefaultPageSettings.PaperSource = psList[0]; 
doc.Print(); 
+0

Xem edit2 để trả lời/thêm thông tin – sysboard

Các vấn đề liên quan