Печат на документ Програмиране или използване на диалогови файлове
Тази статия описва как да отпечатате документ за обработка на думи от ASP.NET или Windows Приложение на услугата Aspose.Words и XpsPrint
API. Той също така демонстрира методите за отпечатване на документ със Настройки, печат и разпечатване на диалози за прогрес и обяснява как да се намали времето на първото обаждане за печат на документ.
Печат на документ върху Server през XpsPrint
API
Този раздел е предназначен за потребители, които искат да представят XPS документ за неуправляемия XpsPrint API от a .NET приложение Aspose.Words.
Ограничения за отпечатване на документ в ASP.NET или Windows Услуги
При разработване на .NET приложение, което произвежда някои печатен изход, обикновено можете да използвате класове, предвидени в System.Drawing.Printing пространство за име, или Windows Класове на фондацията за представяне (WPF). Въпреки това, ако заявлението е ASP.NET или Windows Услугата приложение, опциите за печат са ограничени, защото Microsoft обезкуражава използването на този подход. На .NET Framework Класовете за печат не се поддържат от приложението за услуги. Това включва ASP страници, които обикновено се изпълняват в контекста на услугата сървър.
Класовете в рамките на System.Drawing.Printing не се поддържа място за използване в рамките на Windows услуга или ASP.NET прилагането или услугата и опитите за тяхното използване могат да доведат до намаляване на експлоатационните показатели на услугите, изключения от работното време и други въпроси. Използване на WPF за изграждане Windows Услугите също не се поддържат. Тъй като WPF е технология за представяне, Windows услуга изисква подходящи разрешения за извършване на визуални операции, включващи взаимодействие с потребителя. Ако Windows Службата няма такива разрешения, може да има неочаквани резултати.
На Aspose.Words Document Обектът осигурява семейство Print методи за отпечатване на документи. Тези методи използват .NET класове на печат, определени в System.Drawing.Printing Имепространство. Има много. Aspose.Words клиенти, които успешно ги използват за отпечатване в техните сървърни приложения. Въпреки това тази статия показва алтернативен метод за отпечатване, който съответства на Microsoftпрепоръки.
Методи за отпечатване на документ върху Server
Правилният начин за отпечатване на документи според Microsoft е чрез използване на неуправляем XpsPrint API. Това. API е наличен на Windows 7, Windows Server 2008 R2, и върху Windows Vista при условие че платформата се актуализира Windows Vista е инсталиран.
От Aspose.Words може лесно да конвертира всеки документ в XPS Трябва само да напишете кода, който преминава XPS документ към XpsPrint
API. Единственият проблем е, че XpsPrint
API е неуправляем и изисква известно познание за технологията Platform Invoke.
За да отпечатате документ, Aspose.Words осигурява XpsPrintHelper Класът съдържа прост метод за печат, където просто трябва да посочите следните параметри (вж. повече подробности в статията) Печат на документ чрез XPS API):
- Документ, който искате да отпечатате.
- Име на принтера.
- Име на длъжността (по избор).
- Булева стойност, уточнявайки дали програмата трябва да изчака, докато печатната работа е завършена. Следователно системата или ще провери дали документът е отпечатан успешно, или ще се върне веднага след изпращането на печатната работа. В последния случай е невъзможно да се установи дали печатната работа е била успешна.
След като се сблъскате с проблеми, които представят или печатат документа, методът ще направи изключение.
Примерът с кода по-долу показва как да отпечатате документ с помощта на XpsPrintHelper клас:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir_RenderingAndPrinting(); | |
// Open a sample document in Aspose.Words. | |
Document document = new Document(dataDir + "TestFile.doc"); | |
// Specify the name of the printer you want to print to. | |
const string printerName = @"\\COMPANY\Brother MFC-885CW Printer"; | |
// Print the document. | |
XpsPrintHelper.Print(document, printerName, "My Test Job", true); |
Когато стартирате проекта, той отпечатва примерен документ на посочения принтер и отваря конзолен прозорец, за да покаже резултатите от печат. Когато печатната работа завърши или направи грешка, системата ще покаже съобщение за успех или текст на хвърленото изключение.
Можете също така да зададете някои настройки за печат с помощта на PageSetup Клас. Например, в Microsoft Word, Принтерите са определени за всеки раздел и са специфични за принтера. Следователно, можете да програмно да промените тези стойности за всеки раздел чрез FirstPageTray както и OtherPagesTray имоти.
Print
метод.
Има две претоварвания на XpsPrintHelper.Print метод. Първото претоварване отнема а Document обект и го спестява в MemoryStream
в XPS формат. Второто претоварване приема a Stream
Възразявам. Потокът трябва да съдържа документ в XPS формат.
Можете да изтеглите примерите за претоварване на метода от Aspose.Words GitHub.
Можете да изтеглите примерния файл от Aspose.Words GitHub.
Отпечатване на документ със настройки и печат Диалози за преглед
При работа с документи често се изисква да бъдат отпечатани на избран принтер. Полезно е да използвате прозорец за преглед на печат, за да проверите визуално как ще се появи отпечатаният документ и да изберете съответните опции за печат.
На Aspose.Words няма вградени диалози или форми, но прилага AsposeWordsPrintDocument клас, въз основа на .NET PrintDocument Клас. Пример за този клас може да бъде предаден на PrintPreviewDialog форма за преглед и печат на документа. Също така, PrintPreviewDialog клас определя изхода за предаване на принтер.
Следният пример показва как да използвате тези класове, за да отпечатате документ от Aspose.Words чрез прозореца за печат и настройки:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir_RenderingAndPrinting(); | |
Document doc = new Document(dataDir + "TestFile.doc"); | |
PrintDialog printDlg = new PrintDialog(); | |
// Initialize the print dialog with the number of pages in the document. | |
printDlg.AllowSomePages = true; | |
printDlg.PrinterSettings.MinimumPage = 1; | |
printDlg.PrinterSettings.MaximumPage = doc.PageCount; | |
printDlg.PrinterSettings.FromPage = 1; | |
printDlg.PrinterSettings.ToPage = doc.PageCount; | |
// Сheck if the user accepted the print settings and whether to proceed to document preview. | |
if (printDlg.ShowDialog() != DialogResult.OK) | |
return; | |
// Create a special Aspose.Words implementation of the .NET PrintDocument class. | |
// Pass the printer settings from the print dialog to the print document. | |
AsposeWordsPrintDocument awPrintDoc = new AsposeWordsPrintDocument(doc); | |
awPrintDoc.PrinterSettings = printDlg.PrinterSettings; | |
// Initialize the print preview dialog. | |
PrintPreviewDialog previewDlg = new PrintPreviewDialog(); | |
// Pass the Aspose.Words print document to the print preview dialog. | |
previewDlg.Document = awPrintDoc; | |
// Specify additional parameters of the print preview dialog. | |
previewDlg.ShowInTaskbar = true; | |
previewDlg.MinimizeBox = true; | |
previewDlg.PrintPreviewControl.Zoom = 1; | |
previewDlg.Document.DocumentName = doc.OriginalFileName; | |
previewDlg.WindowState = FormWindowState.Maximized; | |
// Occur whenever the print preview dialog is first displayed. | |
previewDlg.Shown += PreviewDlg_Shown; | |
// Show the appropriately configured print preview dialog. | |
previewDlg.ShowDialog(); |
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
private static void PreviewDlg_Shown(object sender, EventArgs e) | |
{ | |
// Bring the print preview dialog on top when it is initially displayed. | |
((PrintPreviewDialog)sender).Activate(); | |
} |
За да оптимизирате външния вид на Print Preview настройките на диалоговия прозорец, посочете свойствата на PrintPreviewDialog Клас.
Печат на множество страници на един лист
Винаги е полезно да имаме повече гъвкавост при отпечатването на документи. Използване .NET както и Aspose.Words лесно можете да настроите печатната операция, за да приложите Вашата обичайна логика, като определите начина, по който документът ще се появи на печатната страница.
Както в предишния раздел, Aspose.Words прилага MultipagePrintDocument клас, който се основава на .NET PrintDocument Клас. Това означава, че съществува .NET печат инфраструктура може да се използва по такъв начин, че печатът и печат предварителен прозорец ще позволи визуализиране на документа преди печат. На MultipagePrintDocument Класът дава възможност да се отпечатат няколко страници на един лист хартия.
Резултатът от този пример с код е показан по-долу:
Скриване на диалога за напредъка при отпечатването на документ
Диалогът за напредъка при печат не се появява при отпечатване на документ чрез Print метод. Този прозорец обаче се появява по време на печат с друг Print метод. В този случай, за да се предотврати появата на диалоговия прозорец за печат, трябва да се определят валидни настройки на принтера и стандартен контролер за печат в този метод, както е показано в примера по-долу:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir_RenderingAndPrinting(); | |
// Load the documents which store the shapes we want to render. | |
Document doc = new Document(dataDir + "TestFile RenderShape.doc"); | |
// Obtain the settings of the default printer | |
System.Drawing.Printing.PrinterSettings settings = new System.Drawing.Printing.PrinterSettings(); | |
// The standard print controller comes with no UI | |
System.Drawing.Printing.PrintController standardPrintController = new System.Drawing.Printing.StandardPrintController(); | |
// Print the document using the custom print controller | |
AsposeWordsPrintDocument prntDoc = new AsposeWordsPrintDocument(doc); | |
prntDoc.PrinterSettings = settings; | |
prntDoc.PrintController = standardPrintController; | |
prntDoc.Print(); |
Можете да изтеглите примерния файл от Aspose.Words GitHub.
Как да се намали времето на първото посещение за печат на документ
Aspose.Words чете и каше някои полета на PrinterSettings за намаляване на времето за печатане. Можете да постигнете това като се обадите на CachePrinterSettings метод. Този метод се нарича преди да започне печатът, ако не е бил изпълнен по-рано. Имайте предвид, че общото време на отпечатване с и без да се обаждате на този метод е почти същото. Целта на използването на този метод е да се намали времето на първото повикване на Print метод. Следният пример с код показва как да използвате този метод:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
//Load the Word document | |
Document doc = new Document(dataDir + "TestFile.doc"); | |
// Build layout. | |
doc.UpdatePageLayout(); | |
// Create settings, setup printing. | |
PrinterSettings settings = new PrinterSettings(); | |
settings.PrinterName = "Microsoft XPS Document Writer"; | |
// Create AsposeWordsPrintDocument and cache settings. | |
AsposeWordsPrintDocument printDocument = new AsposeWordsPrintDocument(doc); | |
printDocument.PrinterSettings = settings; | |
printDocument.CachePrinterSettings(); | |
printDocument.Print(); | |