Nhiều máy in và thiết bị đa chức năng hiện nay hỗ trợ việc in tệp PDF trực tiếp, điều này có thể giải quyết một trong những vấn đề của bạn. Chỉ cần gửi PDF tới máy in. Trong thực tế, một số thậm chí hỗ trợ việc gửi một URL và máy in sau đó sẽ đi lấy tài liệu và in nó. Lexmark chắc chắn làm điều này và tôi nghĩ rằng một vài nhà cung cấp khác làm là tốt. Điều này vẫn có nghĩa là bạn phải đối phó với tài liệu Word. Word 2007 hỗ trợ PDF (với add-in installed from Microsoft) và tôi đã sử dụng chức năng này theo chương trình với thành công lớn trong C#.
Dưới đây là đoạn code cho rằng:
Microsoft.Office.Interop.Word.ApplicationClass msWord = new Microsoft.Office.Interop.Word.ApplicationClass();
object paramUnknown = Type.Missing;
object missing = Type.Missing;
object paramSaveChangesNo = Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges;
//object paramFonts = Microsoft.Office.Interop.Word.wde
object paramFormatPDF = Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatPDF;
object paramTrue = true;
object paramReadOnly = true;
object sourceDoc = @"c:\input.doc"
object target = @"c:\output.pdf";
msWord.Visible = false;
//open .doc
msWord.Documents.Open(ref sourceDoc, ref paramUnknown, ref paramReadOnly, ref paramUnknown, ref paramUnknown, ref paramUnknown, ref paramUnknown, ref paramUnknown, ref paramUnknown, ref paramUnknown, ref paramUnknown, ref paramUnknown, ref paramUnknown, ref paramUnknown, ref paramUnknown, ref paramUnknown);
//so it won't show on the taskbar
msWord.Application.Visible = false;
msWord.WindowState = Microsoft.Office.Interop.Word.WdWindowState.wdWindowStateMinimize;
//save .doc to new target name and format
msWord.ActiveDocument.SaveAs(ref targetDoc, ref paramFormatPDF, ref paramUnknown, ref paramUnknown, ref paramUnknown, ref paramUnknown, ref paramUnknown, ref paramTrue, ref paramUnknown, ref paramUnknown, ref paramUnknown, ref paramUnknown, ref paramUnknown, ref paramUnknown, ref paramUnknown, ref paramUnknown);
msWord.ActiveDocument.Close(ref missing, ref missing, ref missing);
msWord.Quit(ref paramSaveChangesNo, ref paramUnknown, ref paramUnknown);
Cuối cùng, nếu điện thoại của bạn không hỗ trợ in ấn PDF sau đó bạn có thể sử dụng Ghostscript hoặc các công cụ khác để chuyển đổi PDF sang PS hoặc thậm chí PCL. Không phải là lớn nhất vì điều này có nghĩa là chạy một mã không được quản lý hoặc trường hợp xấu nhất, bắn phá và thực thi dòng lệnh GS, điều đó đang được nói, chúng tôi hiện đang làm điều này trong một trong các ứng dụng web của chúng tôi và nó hoạt động tốt. Như một sang một bên, chúng tôi không làm điều đó cho in ấn mà là sự tham gia của một số PDF togheter, nhưng cuối cùng nó sẽ làm việc như nhau.
Tôi có toàn quyền kiểm soát môi trường triển khai, đó là ứng dụng mạng nội bộ nội bộ. Văn phòng interop/autmation là khủng khiếp, và trong khi các tài liệu được tạo ra bởi C#, chúng tôi sử dụng Aspose.Words. Tôi có thể chấp nhận bằng cách sử dụng interop.automation cho in ấn, sẽ cung cấp cho nó một thử. –
Nếu bạn đã có Aspose, bạn có thể kiểm tra xem nó có hỗ trợ in hay không. –
Nhưng chắc chắn đồng ý rằng trong 99% các trường hợp interop văn phòng là khủng khiếp. –