הדפסה מסמך מתודולוגיה או שימוש באבחון

מאמר זה מתאר כיצד להדפיס מסמך עיבוד מילה מ- 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 מצגת Foundation (WPF) כיתות עם זאת, אם היישום הוא ASP.NET או Windows יישום השירות, האפשרויות להדפסה מוגבלות, כי Microsoft מונע באמצעות גישה זו. The The The .NET Framework שיעורי הדפסה אינם נתמך על ידי יישום שירותים. זה כולל ASP דפים, שבדרך כלל פועלים בהקשר של שירות השרת.

השיעורים בתוך System.Drawing.Printing השם אינו נתמך לשימוש בתוך Windows שירות או שירות ASP.NET יישום או שירות, וניסיון השימוש שלהם עשוי לייצר ביצועי שירות מופחתים, חריגים בזמן ריצה, ובעיות אחרות. השימוש ב- WPF כדי לבנות Windows כמו כן, שירותים אינם תומכים. מאז WPF היא טכנולוגיית מצגת, Windows השירות דורש הרשאות מתאימות לביצוע פעולות חזותיות הכרוכות באינטראקציה של משתמשים. אם Windows לשירות אין הרשאות כאלה, ייתכן שיש תוצאות בלתי צפויות.

The The The Aspose.Words Document אובייקט מספק משפחה Print שיטות להדפיס מסמכים שיטות אלה משתמשות .NET שיעורי הדפסה המוגדרים ב System.Drawing.Printing שם. יש הרבה Aspose.Words לקוחות המשתמשים בהם בהצלחה להדפסה באפליקציות של השרת שלהם. עם זאת, מאמר זה מדגים שיטה חלופית להדפסה כי הוא תואם עם Microsoftהמלצות

שיטות להדפיס מסמך על Server

הדרך הנכונה להדפיס מסמכים לפי Microsoft באמצעות XpsPrint API. זה API זמין Windows 7, Windows Server 2008 2008 R2, על Windows Vista מספק את Update for Windows Vista הוא מותקן.

מאז Aspose.Words יכול בקלות להמיר כל מסמך XPS צריך רק לכתוב את הקוד שעובר XPS מסמך XpsPrint API. הבעיה היחידה היא ש XpsPrint API הוא לא מנוסה ודורש ידע כלשהו של טכנולוגיית Invoke.

כדי להדפיס מסמך, Aspose.Words מספק XpsPrintHelper הכיתה מכילה שיטת הדפסה פשוטה, שבה אתה רק צריך לציין את הפרמטרים הבאים (ראה פרטים נוספים במאמר) מסמך הדפסה באמצעות XPS API):

  • מסמך שאתה רוצה להדפיס.
  • שם Printer
  • שם עבודה (אופציונלי).
  • ערך בולט, המציין האם התוכנית צריכה לחכות עד להשלמת עבודת ההדפסה. לכן, המערכת תבדוק האם המסמך הודפס בהצלחה או ישוב מיד לאחר שליחת עבודת ההדפסה. במקרה האחרון, אי אפשר לזהות האם עבודת ההדפסה הצליחה.

עם כל בעיות הגשת או הדפסה של המסמך, השיטה תזרוק יוצא דופן.

דוגמה קוד להלן מראה כיצד להדפיס מסמך באמצעות 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 תכונות.

ישנם שני עומסים של XpsPrintHelper.Print שיטה. המטען הראשון לוקח Document אובייקט וחוסך אותו לתוך MemoryStream בתוך XPS פורמט. העומס השני מקבל Stream אובייקט. הזרם חייב להכיל מסמך XPS פורמט.

אתה יכול להוריד את הדוגמאות של שיטה overloading Aspose.Words GitHub.

ניתן להוריד את קובץ הדגימה של דוגמה זו Aspose.Words GitHub.

הדפסה מסמך עם הגדרות ותצוגה מקדימה של הדפסה

בעת עבודה עם מסמכים, נדרש לעתים קרובות להדפיס אותם למדפסת שנבחרה. זה עוזר להשתמש בדיאלוג תצוגה מקדימה הדפסה כדי לבדוק באופן ויזואלי איך המסמך המודפס יופיע ולבחור אפשרויות הדפסה רלוונטיות.

The The The Aspose.Words אין דיאלוגים או צורות בנויות, אלא מיישם את AsposeWordsPrintDocument מעמד, המבוסס על .NET PrintDocument מעמד. מקרה של כיתה זו ניתן לעבור PrintPreviewDialog ליצור תצוגה מקדימה ולהדפיס את המסמך. גם, הדפסהPreviewDialog הכיתה מגדירה את הפלט להעברת מדפסת.

הדוגמה הבאה מראה כיצד להשתמש בכיתות אלה כדי להדפיס מסמך 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();
}

כדי לייעל את המראה של הגדרות דיאלוג הדפסה Preview, ציין תכונות של PrintPreviewDialog מעמד.

הדפסת דפים מרובים על One Sheet

תמיד מועיל להיות יותר גמישות בעת הדפסת מסמכים. שימוש .NET ו Aspose.Words אתה יכול בקלות לתקן את פעולת ההדפסה כדי ליישם את ההיגיון מותאם אישית שלך על ידי הגדרת הדרך שבה המסמך יופיע בדף המודפס.

כמו בסעיף הקודם, Aspose.Words ליישם את MultipagePrintDocument הכיתה, המבוססת על .NET PrintDocument מעמד. פירוש הדבר כי קיים .NET ניתן להשתמש בתשתיות הדפסה באופן כזה שהדיאלוגים הקלאסיים והדפסים יאפשרו הדמיה של המסמך לפני הדפסה. The The The MultipagePrintDocument הכיתה מספקת את היכולת להדפיס כמה דפים על גיליון אחד של נייר.

התוצאה של דוגמה קוד זה מוצגת להלן:

print-a-document-programmatically-or-using-dialogs-aspose-words-net

עקבו אחרי Print Progress Dialog When Printing a Document

הדפסת אבחון התקדמות אינה מופיעה בעת הדפסה של מסמך באמצעות המסמך 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();

ראה גם