הדפס קבצי PDF C#

חברות רבות מפחיתות את השימוש בנייר במידה רבה. עם זאת, ישנם כמה תרחישים שבהם ההדפסה חשובה. לדוגמה, מערכת עשויה להכיל פרטים על הזמנה מקוונת בפורמט PDF. הם צריכים להדפיס PDF בזמן שליחת הזמנה מקוונת למשלוח. הם מעבדים פריטים בקנה מידה גדול כך שהדפסת כל מסמך ידנית יכולה להיות משימה לא קטנה. Aspose.PDF for .NET API, בנוסף לתכונות רבות אחרות של מניפולציה והמרה של קבצים, תומך בהדפסה יעילה של קובצי PDF. הבה נבחן את מקרי השימוש הבאים הקשורים להדפסת קובצי PDF ביישומי NET באמצעות C#:

הדפס קובץ PDF עם C#

הדפסת קבצי PDF יכולה להיות אוטומטית ביישומי NET שלך באמצעות C# או VB.net. אתה יכול להדפיס קבצי PDF על ידי ביצוע השלבים הפשוטים שלהלן:

  1. צור אובייקט של PdfViewer Class
  2. טען מסמך PDF לקלט
  3. הדפס את קובץ ה-PDF

קטע הקוד שלהלן מראה כיצד להדפיס קובץ PDF באמצעות C#:

//צור אובייקט PdfViewer
PdfViewer viewer = new PdfViewer();
//פתח קובץ PDF קלט
viewer.BindPdf(dataDir + "Test.pdf");
//הדפס מסמך PDF
viewer.PrintDocument();
//סגור קובץ PDF
viewer.Close();

הדפס קבצי PDF מרובים עם C#

אם אתה צריך להדפיס מספר קבצים בגלל אופי העסק שלך, התכונה כבר נתמכת על ידי Aspose.PDF עבור .NET API. הדפסת קובצי PDF מרובים, אחד אחד עם קטע הקוד שלמעלה יכולה להיות מעט איטית. לכן, הבה ניקח את הדפסת ה-PDF צעד נוסף קדימה כדי להקל על התהליך. כאן נשתמש ברשימה תוך הוספת השם של כל קובץ PDF לרשימה זו. השלבים הבאים מסבירים כיצד נדפיס קובצי PDF מרובים:

  1. אתחול רשימה של סוג מחרוזת
  2. הוסף קבצי PDF לרשימה
  3. טען קובץ PDF קלט
  4. הדפס קבצי PDF מרובים

קטע הקוד מראה כיצד להדפיס קבצי PDF מרובים באמצעות C#:

var files = new List<string>();
files.Add(dataDir + "First.pdf");
files.Add(dataDir + "Second.pdf");

foreach (String file in files)
{
    //צור אובייקט PdfViewer
    PdfViewer viewer = new PdfViewer();
    //פתח קובץ PDF קלט
    viewer.BindPdf(file);
    //הדפס מסמך PDF
    viewer.PrintDocument();
    //סגור קובץ PDF
    viewer.Close();
}

הדפס דפים ספציפיים של PDF עם C#

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

  • הגדר את נתיב הקלט והפלט של הקובץ
  • הגדר הדפסה של דפים ספציפיים על ידי הגדרת טווח
  • ציין פרמטרים של הדפסה
  • הדפס את הדפים כפי שצוין קודם לכן

קטע הקוד שלהלן מראה כיצד להדפיס דפים ספציפיים של המסמך באמצעות C#:

string inPdf = dataDir + "Test.pdf";
string output = dataDir;
IList<PrintingJobSettings> printingJobs = new List<PrintingJobSettings>();
PrintingJobSettings printingJob1 = new PrintingJobSettings();
printingJob1.FromPage = 2;
printingJob1.ToPage = 3;
printingJobs.Add(printingJob1);

PrintingJobSettings printingJob2 = new PrintingJobSettings();
printingJob2.FromPage = 5;
printingJob2.ToPage = 7;
printingJobs.Add(printingJob2);

{
   for (var printingJobIndex = 0; printingJobIndex < printingJobs.Count; printingJobIndex++)
    {
        System.Drawing.Printing.PageSettings pgs = new System.Drawing.Printing.PageSettings();
        System.Drawing.Printing.PrinterSettings ps = new System.Drawing.Printing.PrinterSettings();
        ps.PrinterName = "Microsoft Print to PDF";
        ps.PrintRange = System.Drawing.Printing.PrintRange.SomePages;
        ps.FromPage = printingJobs[printingJobIndex].FromPage;
        ps.ToPage = printingJobs[printingJobIndex].ToPage;
        System.Console.WriteLine(ps.FromPage);
        System.Console.WriteLine(ps.ToPage);
        System.Console.WriteLine(printingJobIndex);
        using (var theViewer = new Aspose.Pdf.Facades.PdfViewer())
        {
            // קוד הדפסת מסמכים נכנס לכאן
            // הדפס מסמך באמצעות הגדרות מדפסת ועמודים                    
            theViewer.BindPdf(inPdf);
            theViewer.AutoResize = true;
            theViewer.AutoRotate = true;
            theViewer.PrintPageDialog = false;
            theViewer.PrintDocumentWithSettings(pgs, ps);
            theViewer.Close();
        }
    }
}

הדפס קובץ PDF מאובטח עם C#

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

  1. טען PDF מאובטח עם סיסמה
  2. צור אובייקט PdfViewer
  3. הדפס קובץ PDF מאובטח

קטע הקוד הבא מראה כיצד להדפיס קובץ PDF מאובטח באמצעות C#:

//טען מסמך PDF מאובטח תוך ציון סיסמת משתמש או בעלים
Document document = new Document(dataDir + "Password.pdf" , "userORowner");
//צור אובייקט PdfViewer
PdfViewer viewer = new PdfViewer();
//פתח קובץ PDF קלט
viewer.BindPdf(document);
//הדפס מסמך PDF
viewer.PrintDocument();
//סגור קובץ PDF
viewer.Close();

הדפס PDF למגש נייר ספציפי של מדפסת עם C#

אתה יכול להדפיס קובץ PDF למגש נייר ספציפי עם Aspose.PDF עבור .NET API. לדוגמה, ייתכן שתרצה להדפיס קובץ PDF עם הרבה תמונות למגש נייר אחר וקובץ PDF טקסטואלי למגש נייר אחר. בצע את השלבים שלהלן כדי להגדיר מגש פלט או סל להדפסת קובצי PDF:

  1. טען קובץ PDF קלט
  2. הגדר תכונות להדפסה
  3. ציין את PageSettings ו-PaperSource
  4. התקשר לשיטת PrintDocumentWithSettings

כאן ראוי לציין שאתה יכול לשנות את שם המדפסת. כאן נשתמש ב-Microsoft Print ל-PDF, כדוגמה. קטע הקוד הבא מבצע את השלבים הבאים ומראה כיצד להדפיס מסמך למגש נייר או סל ספציפי של מדפסת עם C#:

Document doc = new Document("Test.pdf");
PdfViewer viewer = new PdfViewer();
viewer.BindPdf(doc);
viewer.PrinterJobName = System.IO.Path.GetFileName(doc.FileName);
viewer.Resolution = 110;
// הגדר תכונות להדפסה
viewer.AutoResize = true; // Print the file with adjusted size
viewer.AutoRotate = false; // Print the file with adjusted rotation
viewer.PrintPageDialog = false; // Do not produce the page number dialog when printing
viewer.RenderingOptions.UseNewImagingEngine = true;
// צור אובייקטים עבור הגדרות מדפסת ועמודים ו-PrintDocument
System.Drawing.Printing.PrinterSettings ps = new System.Drawing.Printing.PrinterSettings();
System.Drawing.Printing.PageSettings pgs = new System.Drawing.Printing.PageSettings();
// הגדר את שם המדפסת
ps.PrinterName = "Microsoft Print to PDF";
pgs.PaperSize = new System.Drawing.Printing.PaperSize(paperTypeName, paperWidth, paperHeight);
pgs.Margins = new System.Drawing.Printing.Margins(margins.Left, margins.Right, margins.Top, margins.Bottom);
pgs.PaperSource = GetPaperSource(printerName, trayName);
// הדפס מסמך באמצעות הגדרות מדפסת ועמודים
viewer.PrintDocumentWithSettings(pgs, ps);

///<summary>
/// החזר את האובייקט PaperSource עבור המדפסת ושם המגש שסופקו.
///</summary>
///<param name="printerName"></param>
///<param name="trayName"></param>
///<returns></returns>
public static System.Drawing.Printing.PaperSource GetPaperSource(string printerName, string trayName)
{
    System.Drawing.Printing.PaperSource ps = null;
    System.Drawing.Printing.PrintDocument prtDoc = new System.Drawing.Printing.PrintDocument();
    prtDoc.PrinterSettings.PrinterName = printerName;
   for (int i = 0; i < prtDoc.PrinterSettings.PaperSources.Count; i++)
    {
        if (prtDoc.PrinterSettings.PaperSources[i].SourceName.ToLower().Equals(trayName.ToLower()))
        {
            ps = prtDoc.PrinterSettings.PaperSources[i];
            break;
        }
    }
    return ps;
}

הדפסת טווח דפים למקורות נייר שונים באמצעות C#

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

  1. אתחול אובייקט במחלקה PdfViewer
  2. השתמש ב-PdfQueryPageSettings נציג מטפל באירועים
  3. הגדר את הגדרות העמוד והמדפסת
  4. התקשר לשיטת PrintDocumentWithSettings

קטע הקוד הבא מראה כיצד לבצע את השלבים הבאים ולהדפיס טווחי עמודים שונים למקורות נייר או מגשים שונים באמצעות C#:

Aspose.Pdf.Facades.PdfViewer pdfv = new Aspose.Pdf.Facades.PdfViewer();

pdfv.PdfQueryPageSettings += PdfvOnPdfQueryPageSettings;

System.Drawing.Printing.PageSettings pgs = new System.Drawing.Printing.PageSettings();
System.Drawing.Printing.PrinterSettings prin = new System.Drawing.Printing.PrinterSettings();

pdfv.BindPdf(dataDir + "Print-PageRange.pdf");
prin.PrinterName = "HP LaserJet M9050 MFP PCL6";
prin.DefaultPageSettings.PaperSize = new System.Drawing.Printing.PaperSize("A4", 827, 1169);

Aspose.Pdf.Facades.PdfPageEditor pageEditor = new Aspose.Pdf.Facades.PdfPageEditor();
pageEditor.BindPdf(dataDir + "input.pdf");

pgs.Margins = new System.Drawing.Printing.Margins(0, 0, 0, 0);
pgs.PaperSize = prin.DefaultPageSettings.PaperSize;

pdfv.PrintDocumentWithSettings(pgs, prin);
pdfv.Close();

private static void PdfvOnPdfQueryPageSettings(object sender, System.Drawing.Printing.QueryPageSettingsEventArgs queryPageSettingsEventArgs, PdfPrintPageInfo currentPageInfo)
{
    bool isOdd = currentPageInfo.PageNumber % 2 != 0;

    System.Drawing.Printing.PrinterSettings.PaperSourceCollection paperSources = queryPageSettingsEventArgs.PageSettings.PrinterSettings.PaperSources;

    if (isOdd)
        queryPageSettingsEventArgs.PageSettings.PaperSource = paperSources[0];
    else
        queryPageSettingsEventArgs.PageSettings.PaperSource = paperSources[1];
}

בדוק את סטטוס עבודת ההדפסה בעת הדפסת PDF עם C#

ניתן להדפיס קבצי PDF למדפסות שונות. לדוגמה, Microsoft Print to PDF, Microsoft XPS Document Writer, או כל מדפסת פיזית. עם זאת, ההדפסה עלולה להימשך זמן רב עבור מסמכי PDF ענקיים או שההדפסה עלולה להיכשל מסיבה כלשהי. לכן, ה-API מציע תכונה המאפשרת לך לבדוק את מצב עבודת ההדפסה באמצעות השלבים הבאים:

  1. טען קובץ PDF קלט
  2. ציין הגדרות עמוד
  3. הגדר את שם המדפסת
  4. הדפס מסמך PDF עם PrintDocumentWithSettings

להלן קטע הקוד מראה כיצד לבדוק את מצב עבודת ההדפסה או התקדמות ההדפסה של PDF באמצעות C#:

// יצירת אובייקט PdfViewer
PdfViewer viewer = new PdfViewer();

// כריכת קובץ PDF מקור
viewer.BindPdf(dataDir + "Sample Document with Bookmark.pdf");
viewer.AutoResize = true;

// הסתר תיבת דו-שיח להדפסה
viewer.PrintPageDialog = false;

// צור אובייקט הגדרות מדפסת
System.Drawing.Printing.PrinterSettings ps = new System.Drawing.Printing.PrinterSettings();
System.Drawing.Printing.PageSettings pgs = new System.Drawing.Printing.PageSettings();
System.Drawing.Printing.PrintDocument prtdoc = new System.Drawing.Printing.PrintDocument();

// ציין את אנמה המדפסת
//ps.PrinterName = "כותב מסמכים של Microsoft XPS";
ps.PrinterName = "Microsoft Print to PDF";

// שם התדפיס המתקבל
//ps.PrintFileName = "ResultantPrintout.xps";
ps.PrintFileName = "ResultantPrintout.pdf";

// הדפס את הפלט לקובץ
ps.PrintToFile = true;
ps.FromPage = 1;
ps.ToPage = 2;
ps.PrintRange = System.Drawing.Printing.PrintRange.SomePages;

// ציין את גודל העמוד של התדפיס
pgs.PaperSize = new System.Drawing.Printing.PaperSize("A4", 827, 1169);
ps.DefaultPageSettings.PaperSize = pgs.PaperSize;
pgs.Margins = new System.Drawing.Printing.Margins(0, 0, 0, 0);

// הדפס את המסמך עם ההגדרות שצוינו למעלה
viewer.PrintDocumentWithSettings(pgs, ps);

// בדוק את מצב ההדפסה
if (viewer.PrintStatus != null)
{
    // הושלך חריג
    Exception ex = viewer.PrintStatus as Exception;
    if (ex != null)
    {
        // קבל הודעת חריגה
    }
}
else
{
    // לא נמצאו שגיאות. עבודת ההדפסה הסתיימה בהצלחה
    Console.WriteLine("printing completed without any issue..");
}

כתוצאה מכך, קטע קוד זה מודפס במסוף של יישום NET לגבי מצב ההדפסה של קובץ ה-PDF:

C# הדפס PDF

סיכום

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

ראה גם