بسیاری از شرکت ها استفاده از کاغذ را تا حد زیادی کاهش می دهند. با این حال، سناریوهایی وجود دارد که چاپ مهم است. به عنوان مثال، یک سیستم ممکن است حاوی جزئیات سفارش آنلاین در قالب PDF باشد. آنها باید هنگام ارسال سفارش آنلاین برای تحویل، PDF را چاپ کنند. آنها اقلام را در مقیاس بزرگ پردازش می کنند، بنابراین چاپ هر سند به صورت دستی می تواند کار بسیار مهمی باشد. Aspose.PDF for .NET API، علاوه بر بسیاری دیگر از ویژگی های دستکاری و تبدیل فایل، از چاپ کارآمد فایل های PDF پشتیبانی می کند. اجازه دهید موارد استفاده زیر را در رابطه با چاپ فایلهای PDF در برنامههای NET با استفاده از سی شارپ بررسی کنیم:
- چاپ فایل PDF با سی شارپ
- چاپ چندین فایل PDF با سی شارپ
- چاپ صفحات خاص PDF با سی شارپ
- چاپ فایل PDF ایمن با سی شارپ
- چاپ صفحات PDF در سینی های مختلف کاغذ با سی شارپ
- چاپ محدوده صفحات مختلف به منبع کاغذ متفاوت با استفاده از سی شارپ
- بررسی وضعیت کار چاپ هنگام چاپ PDF با C#
چاپ فایل PDF با سی شارپ
چاپ فایل های PDF را می توان در برنامه های دات نت شما با استفاده از C# یا VB.net به صورت خودکار انجام داد. با انجام مراحل ساده زیر می توانید فایل های PDF را چاپ کنید:
- یک شی از کلاس PdfViewer ایجاد کنید
- سند PDF ورودی را بارگیری کنید
- فایل PDF را چاپ کنید
قطعه کد زیر نحوه چاپ فایل PDF با استفاده از سی شارپ را نشان می دهد:
//شی PdfViewer ایجاد کنید
PdfViewer viewer = new PdfViewer();
//فایل PDF ورودی را باز کنید
viewer.BindPdf(dataDir + "Test.pdf");
//چاپ سند PDF
viewer.PrintDocument();
//فایل PDF را ببندید
viewer.Close();
چاپ چندین فایل PDF با سی شارپ
اگر به دلیل ماهیت تجارت خود نیاز به چاپ چندین فایل دارید، این ویژگی قبلاً توسط Aspose.PDF برای NET API پشتیبانی می شود. چاپ چندین فایل PDF، یک به یک با قطعه کد بالا می تواند کمی کند باشد. بنابراین، اجازه دهید چاپ PDF را یک قدم دیگر جلوتر ببریم تا فرآیند آسانتر شود. در اینجا ما از List استفاده می کنیم و نام هر فایل PDF را به آن لیست اضافه می کنیم. مراحل زیر نحوه چاپ چندین فایل PDF را توضیح می دهد:
- فهرستی از نوع رشته را راه اندازی کنید
- فایل های PDF را به لیست اضافه کنید
- فایل PDF ورودی را بارگیری کنید
- چندین فایل 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 با سی شارپ
ویژگی چاپ صفحات خاص اسناد 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 ایمن با سی شارپ
یک فایل PDF را می توان با یک رمز عبور ایمن و محافظت کرد. با این حال، رمز عبور می تواند دو نوع باشد یعنی رمز عبور کاربر و مالک. فایل های PDF ایمن شده با رمز عبور کاربر برای باز کردن و مشاهده فایل PDF رمزگذاری شده به رمز عبور نیاز دارند. از طرف دیگر، رمز عبور مالک برای اصلاح محتوای فایل PDF ایمن و محافظت شده با رمز عبور لازم است. مراحل زیر چاپ PDF امن را توضیح می دهد:
- PDF ایمن را با رمز عبور بارگیری کنید
- شیء PdfViewer ایجاد کنید
- فایل 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 در سینی کاغذ خاص چاپگر با سی شارپ
با Aspose.PDF برای NET API می توانید یک PDF را در سینی کاغذ خاص چاپ کنید. به عنوان مثال، ممکن است بخواهید یک PDF با تعداد زیادی عکس را در یک سینی کاغذ متفاوت و یک فایل PDF متنی را در یک سینی کاغذ دیگر چاپ کنید. مراحل زیر را برای تنظیم سینی یا bin خروجی برای چاپ فایل های PDF دنبال کنید:
- فایل PDF ورودی را بارگیری کنید
- تنظیم ویژگی ها برای چاپ
- PageSettings و PaperSource را مشخص کنید
- با روش 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;
}
چاپ محدوده صفحه به منابع مختلف کاغذ با استفاده از سی شارپ
ممکن است سناریوهایی وجود داشته باشد که ممکن است لازم باشد صفحات مختلف یک سند PDF را در سینی های کاغذ یا سطل های مختلف چاپ کنید. به عنوان مثال، یک منبع کاغذ متفاوت برای صفحه جلد و متفاوت برای صفحات دیگر. مطمئناً می توانید مراحل زیر را برای چاپ محدوده صفحات به منابع مختلف کاغذ در همان کار چاپ دنبال کنید:
- یک شی از کلاس PdfViewer را مقداردهی کنید
- از نماینده کنترل رویداد PdfQueryPageSettings استفاده کنید
- تنظیمات صفحه و چاپگر را تنظیم کنید
- روش PrintDocumentWithSettings را فراخوانی کنید
قطعه کد زیر نشان می دهد که چگونه می توان این مراحل را دنبال کرد و با استفاده از سی شارپ، محدوده های مختلف صفحه را در منابع یا سینی های کاغذ مختلف چاپ کرد:
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 به PDF، Microsoft XPS Document Writer یا هر چاپگر فیزیکی. با این حال، چاپ ممکن است برای اسناد PDF بزرگ مدت زمان زیادی طول بکشد یا ممکن است به دلایلی چاپ با شکست مواجه شود. بنابراین، API قابلیتی را ارائه می دهد که به شما امکان می دهد وضعیت کار چاپ را با مراحل زیر بررسی کنید:
- فایل PDF ورودی را بارگیری کنید
- تنظیمات صفحه را مشخص کنید
- نام چاپگر را تنظیم کنید
- چاپ سند 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 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..");
}
در نتیجه، این قطعه کد در مورد وضعیت چاپ فایل PDF در کنسول برنامه دات نت چاپ می شود:
نتیجه
به طور خلاصه، ما روشهای مختلفی را یاد گرفتهایم و از مواردی از چاپ فایلهای PDF ایمن شده با رمز عبور و غیرایمن با C# یا VB NET در برنامههای برنامهنویسی شما استفاده میکنیم. علاوه بر این، ما چاپ کل اسناد PDF را بررسی کرده ایم. به همین ترتیب، ما یاد گرفتهایم که برخی از محدودههای صفحه را توسط سینیهای صفحه، سطلها یا منابع کاغذی خاص چاپ کنیم. علاوه بر این، نحوه نظارت بر وضعیت چاپ یا پیشرفت چاپ اسناد با استفاده از C# را نیز بررسی کرده ایم.