Tisk dokumentu Programově nebo pomocí dialogů
Tento článek popisuje, jak tisknout dokument o zpracování slov z ASP.NET nebo Windows Servisní aplikace Aspose.Words a XpsPrint
API. Ukazuje také metody tisku dokumentu pomocí dialogů Nastavení, náhledu tisku a postupu tisku a vysvětluje, jak snížit čas první výzvy k tisku dokumentu.
Tisknout dokument na Server prostřednictvím XpsPrint
API
Tento oddíl je určen pro uživatele, kteří chtějí předložit XPS dokument pro nespravovaný XpsPrint API z .NET aplikace Aspose.Words.
Omezení tisku dokumentu ASP.NET nebo Windows Žádosti o služby
Při vývoji .NET aplikace, která vytváří nějaký tištěný výstup, můžete obvykle používat třídy uvedené v System.Drawing.Printing jmenný prostor nebo Windows Třída Prezentační nadace (WPF). Pokud se však žádost týká ASP.NET nebo Windows Servisní aplikace, možnosti tisku jsou omezené, protože Microsoft odrazuje od používání tohoto přístupu. • .NET Framework Tiskové třídy nejsou podporovány aplikací služeb. To zahrnuje ASP stránky, které obvykle běží v rámci serverové služby.
Třídy v rámci System.Drawing.Printing nejsou podporovány pro použití v rámci Windows služba nebo ASP.NET aplikace nebo služby, a pokus o jejich použití může způsobit snížení výkonu služeb, časové výjimky a další problémy. Využití WPF k budování Windows Rovněž služby nejsou podporovány. Vzhledem k tomu, WPF je prezentační technologie, Windows služba vyžaduje vhodná oprávnění k provádění vizuálních operací zahrnujících interakci uživatelů. Pokud Windows služba nemá taková povolení, mohou být neočekávané výsledky.
• Aspose.Words Document objekt poskytuje rodinu Print metody tisku dokumentů. Tyto metody používají .NET třídy tisku definované v System.Drawing.Printing jmenný prostor. Je jich mnoho. Aspose.Words zákazníci, kteří je úspěšně využívají pro tisk v aplikacích na straně serveru. Tento článek však ukazuje alternativní metodu tisku, která je v souladu s MicrosoftDoporučení.
Metody pro tisk dokumentu na Server
Správný způsob tisku dokumentů podle Microsoft je pomocí nespravované XpsPrint API. Tohle API je k dispozici na Windows 7, Windows Server 2008 R2, a dále Windows Vista za předpokladu aktualizace platformy pro Windows Vista je nainstalován.
Od Aspose.Words lze snadno převést jakýkoli dokument na XPS,? stačí napsat kód, který prochází XPS dokument k XpsPrint
API. Jediný problém je, že XpsPrint
API je nezvládnutelná a vyžaduje znalosti technologie Platform Invoke.
Vytisknout dokument, Aspose.Words poskytuje XpsPrintHelper třída obsahuje jednoduchou metodu tisku, kde stačí zadat následující parametry (viz podrobnosti v článku Vytisknout dokument prostřednictvím XPS API):
- Dokument, který chcete vytisknout.
- Jméno tiskárny.
- Pracovní jméno (nepovinné).
- Booleova hodnota, s uvedením, zda program má počkat, až bude tisk dokončen. Systém proto buď zkontroluje, zda byl dokument úspěšně vytištěn, nebo se vrátí ihned po odeslání tiskového úkolu. V posledním případě není možné určit, zda byl tisk úspěšný.
Po zjištění jakýchkoliv problémů s předložením nebo tiskem dokumentu bude metoda hodit výjimku.
Příklad kódu níže ukazuje, jak tisknout dokument pomocí XpsPrintHelper třída:
// 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); |
Při spuštění projektu tiskne vzorový dokument na zadanou tiskárnu a otevře okno konzole pro zobrazení výsledků tisku. Po dokončení tiskové práce nebo chybách zobrazí systém zprávu o úspěchu nebo text vrhané výjimky.
Můžete také nastavit některé nastavení tisku pomocí PageSetup třída. Například Microsoft Word, Pro každou část jsou definovány zásobníky tiskárny a jsou specifické pro tiskárnu. Proto můžete programově změnit tyto hodnoty pro každou sekci prostřednictvím FirstPageTray a OtherPagesTray vlastnosti.
Print
metoda.
Existují dvě přetížení XpsPrintHelper.Print metoda. První přetížení vyžaduje Document objekt a ukládá jej do MemoryStream
v XPS formát. Druhé přetížení přijímá Stream
objekt. Potok musí obsahovat dokument v XPS formát.
Můžete si stáhnout příklady metody přetížení z Aspose.Words GitHub.
Soubor vzorku tohoto příkladu si můžete stáhnout z Aspose.Words GitHub.
Tisk dokumentu s nastavením a náhledem tisku
Při práci s dokumenty je často nutné tisknout do vybrané tiskárny. Je užitečné využít dialogové okno náhledu tisku a vizuálně zkontrolovat, jak se zobrazí tištěný dokument a zvolit příslušné možnosti tisku.
• Aspose.Words nemá vestavěný dialog nebo formuláře, ale provádí AsposeWordsPrintDocument třída, na základě .NET PrintDocument třída. Příklad této třídy může být předán PrintPreviewDialog formulář pro náhled a tisk dokumentu. Také Dialog tisku třída definuje výstup pro přenos do tiskárny.
Následující příklad ukazuje, jak použít tyto třídy k tisku dokumentu z Aspose.Words přes dialogy náhledu a nastavení tisku:
// 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(); | |
} |
Pro optimalizaci vzhledu dialogového okna Print Preview zadejte vlastnosti PrintPreviewDialog třída.
Tisk více stránek na jednom listu
Při tisku dokumentů je vždy prospěšné mít větší flexibilitu. Použití .NET a Aspose.Words lze snadno doladit tiskovou operaci k provedení vlastní logiky tím, že definuje způsob, jakým se dokument objeví na tištěné stránce.
Stejně jako v předchozí části, Aspose.Words provádí MultipagePrintDocument třída, která je založena na .NET PrintDocument třída. To znamená, že stávající .NET tisková infrastruktura může být použita tak, aby dialogy tisku a tisku před tiskem umožnily vizualizaci dokumentu před tiskem. • MultipagePrintDocument třída poskytuje možnost tisknout několik stránek na jeden list papíru.
Výsledek tohoto příkladu kódu je uveden níže:
Schovávání Dialogu pokroku tisku při tisku dokumentu
Dialog Progress tisku se neobjeví při tisku dokumentu prostřednictvím Print metoda. Toto dialogové okno se však objeví při tisku s jiným Print metoda. V tomto případě, abyste zabránili zobrazování dialogového okna tisku, měli byste v této metodě zadat platné nastavení tiskárny a standardní tiskový ovladač, jak je uvedeno v následujícím příkladu:
// 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(); |
Soubor vzorku tohoto příkladu si můžete stáhnout z Aspose.Words GitHub.
Jak snížit čas první výzvy k tisku dokumentu
Aspose.Words čte a ukládá některé oblasti PrinterSettings snížit čas tisku. Můžete toho dosáhnout voláním CachePrinterSettings metoda. Tato metoda se volá před zahájením tisku, pokud nebyla provedena dříve. Všimněte si, že celkový čas tisku s a bez volání této metody je téměř stejný. Účelem této metody je snížit čas první výzvy Print metoda. Následující příklad kódu ukazuje, jak používat tuto metodu:
// 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(); | |