طباعة ملفات PDF C#

تقلل العديد من الشركات من استخدام الورق إلى حد كبير. ومع ذلك ، هناك بعض السيناريوهات التي تكون فيها الطباعة مهمة. على سبيل المثال ، قد يحتوي النظام على تفاصيل الطلب عبر الإنترنت بتنسيق PDF. يحتاجون إلى طباعة PDF أثناء إرسال طلب عبر الإنترنت للتسليم. يقومون بمعالجة العناصر على نطاق واسع لذا فإن طباعة كل مستند يدويًا قد يكون مهمة كبيرة. Aspose.PDF for .NET API ، بالإضافة إلى العديد من ميزات معالجة وتحويل الملفات الأخرى ، تدعم الطباعة الفعالة لملفات PDF. دعنا نستكشف حالات الاستخدام التالية المتعلقة بطباعة ملفات PDF في تطبيقات .NET باستخدام C#:

طباعة ملف PDF باستخدام C#

يمكن أتمتة طباعة ملفات PDF في تطبيقات .NET باستخدام C# أو VB.net. يمكنك طباعة ملفات PDF باتباع الخطوات البسيطة التالية:

  1. قم بإنشاء كائن من فئة PdfViewer
  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 for .NET API. على سبيل المثال ، قد ترغب في طباعة ملف PDF به الكثير من الصور إلى درج ورق مختلف وملف PDF نصي إلى درج ورق مختلف. اتبع الخطوات أدناه لتعيين درج أو حاوية الإخراج لطباعة ملفات PDF:

  1. قم بتحميل ملف PDF للإدخال
  2. قم بتعيين سمات للطباعة
  3. حدد PageSettings و PaperSource
  4. استدعاء طريقة PrintDocumentWithSettings

ومن الجدير بالذكر هنا أنه يمكنك تغيير اسم الطابعة. هنا سنستخدم Microsoft Print to 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 الضخمة أو قد تفشل الطباعة لسبب ما. لذلك ، توفر واجهة برمجة التطبيقات ميزة تتيح لك التحقق من حالة مهمة الطباعة من خلال الخطوات التالية:

  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();

// حدد طابعة anme
//ps.PrinterName = "Microsoft XPS Document Writer" ؛
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#.

أنظر أيضا