พิมพ์ไฟล์ 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 for .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 เป็น 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();

// ระบุ anme เครื่องพิมพ์
//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#

ดูสิ่งนี้ด้วย