Cetak file PDF C#

Banyak perusahaan mengurangi penggunaan kertas untuk sebagian besar. Namun, ada beberapa skenario di mana pencetakan itu penting. Misalnya, suatu sistem dapat berisi detail pesanan online dalam format PDF. Mereka perlu mencetak PDF saat mengirimkan pesanan online untuk pengiriman. Mereka memproses item dalam skala besar sehingga mencetak setiap dokumen secara manual bisa menjadi tugas yang berat. Aspose.PDF for .NET API, selain banyak fitur manipulasi dan konversi file lainnya, mendukung pencetakan file PDF yang efisien. Mari kita jelajahi kasus penggunaan berikut yang terkait dengan mencetak file PDF di aplikasi .NET menggunakan C#:

Cetak File PDF dengan C#

Pencetakan file PDF dapat dilakukan secara otomatis di aplikasi .NET Anda menggunakan C# atau VB.net. Anda dapat mencetak file PDF dengan mengikuti langkah-langkah sederhana di bawah ini:

  1. Buat objek Kelas PdfViewer.
  2. Muat dokumen PDF masukan
  3. Cetak file PDF

Cuplikan kode di bawah ini menunjukkan cara mencetak file PDF menggunakan C#:

//Buat objek PdfViewer
PdfViewer viewer = new PdfViewer();
//Buka masukan file PDF
viewer.BindPdf(dataDir + "Test.pdf");
//Cetak dokumen PDF
viewer.PrintDocument();
//Tutup berkas PDF
viewer.Close();

Cetak Banyak File PDF dengan C#

Jika Anda perlu mencetak banyak file karena sifat bisnis Anda, fitur tersebut sudah didukung oleh Aspose.PDF for .NET API. Mencetak banyak file PDF, satu per satu dengan potongan kode di atas bisa sedikit lambat. Oleh karena itu, mari kita lakukan pencetakan PDF selangkah lebih maju untuk mempermudah prosesnya. Di sini kita akan menggunakan Daftar sambil menambahkan nama setiap file PDF ke daftar itu. Langkah-langkah berikut menjelaskan bagaimana kami akan mencetak banyak file PDF:

  1. Inisialisasi Daftar tipe String
  2. Tambahkan file PDF ke daftar
  3. Muat file PDF masukan
  4. Cetak beberapa file PDF

Cuplikan kode menunjukkan cara mencetak banyak file PDF menggunakan C#:

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

foreach (String file in files)
{
    //Buat objek PdfViewer
    PdfViewer viewer = new PdfViewer();
    //Buka masukan file PDF
    viewer.BindPdf(file);
    //Cetak dokumen PDF
    viewer.PrintDocument();
    //Tutup berkas PDF
    viewer.Close();
}

Cetak Halaman Tertentu PDF dengan C#

Fitur mencetak halaman tertentu dari dokumen PDF tersedia di API. Kami akan mempertimbangkan contoh yang menyertakan pencetakan beberapa rentang halaman. Anda perlu menentukan dari dan ke nomor halaman seperti yang dijelaskan pada langkah-langkah di bawah ini:

  • Tetapkan jalur input dan output file
  • Atur pencetakan halaman tertentu dengan menentukan rentang
  • Tentukan parameter pencetakan
  • Cetak halaman seperti yang ditentukan sebelumnya

Cuplikan kode di bawah ini menunjukkan cara mencetak halaman tertentu dari dokumen menggunakan 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())
        {
            // Kode pencetakan dokumen ada di sini
            // Cetak dokumen menggunakan pengaturan printer dan halaman                    
            theViewer.BindPdf(inPdf);
            theViewer.AutoResize = true;
            theViewer.AutoRotate = true;
            theViewer.PrintPageDialog = false;
            theViewer.PrintDocumentWithSettings(pgs, ps);
            theViewer.Close();
        }
    }
}

Cetak file PDF Aman dengan C#

File PDF dapat diamankan dan dilindungi oleh kata sandi. Namun, kata sandi dapat terdiri dari dua jenis yaitu kata sandi Pengguna dan Pemilik. File PDF yang diamankan dengan kata sandi pengguna memerlukan kata sandi untuk membuka dan melihat file PDF terenkripsi. Di sisi lain, kata sandi pemilik diperlukan untuk mengubah konten file PDF yang diamankan dan dilindungi kata sandi. Langkah-langkah berikut menjelaskan pencetakan PDF yang aman:

  1. Muat PDF aman dengan kata sandi
  2. Buat objek PdfViewer.
  3. Cetak file PDF aman

Cuplikan kode berikut menunjukkan cara mencetak file PDF aman menggunakan C#:

//Muat dokumen PDF yang aman sambil menentukan kata sandi Pengguna atau Pemilik
Document document = new Document(dataDir + "Password.pdf" , "userORowner");
//Buat objek PdfViewer
PdfViewer viewer = new PdfViewer();
//Buka masukan file PDF
viewer.BindPdf(document);
//Cetak dokumen PDF
viewer.PrintDocument();
//Tutup berkas PDF
viewer.Close();

Cetak PDF ke Baki Kertas Tertentu dari Printer dengan C#

Anda dapat mencetak PDF ke baki kertas tertentu dengan Aspose.PDF for .NET API. Misalnya, Anda mungkin ingin mencetak PDF dengan banyak foto ke baki kertas yang berbeda dan file PDF tekstual ke baki kertas yang berbeda. Ikuti langkah-langkah di bawah ini untuk menyetel baki atau nampan keluaran untuk mencetak file PDF:

  1. Muat file PDF masukan
  2. Tetapkan atribut untuk pencetakan
  3. Tentukan PageSettings dan PaperSource
  4. Panggil metode PrintDocumentWithSettings.

Patut dicatat di sini bahwa Anda dapat mengubah nama printer. Di sini kita akan menggunakan Microsoft Print to PDF, sebagai contoh. Cuplikan kode berikut mengikuti langkah-langkah ini dan menunjukkan cara mencetak dokumen ke baki atau nampan kertas tertentu dari printer dengan 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;
// Tetapkan atribut untuk pencetakan
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;
// Buat objek untuk pengaturan printer dan halaman dan PrintDocument
System.Drawing.Printing.PrinterSettings ps = new System.Drawing.Printing.PrinterSettings();
System.Drawing.Printing.PageSettings pgs = new System.Drawing.Printing.PageSettings();
// Tetapkan nama pencetak
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);
// Cetak dokumen menggunakan pengaturan printer dan halaman
viewer.PrintDocumentWithSettings(pgs, ps);

///<summary>
/// Kembalikan objek PaperSource untuk nama printer dan baki yang disediakan.
///</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;
}

Mencetak Rentang Halaman ke Sumber Kertas Berbeda menggunakan C#

Mungkin ada skenario di mana Anda mungkin perlu mencetak halaman berbeda dari satu dokumen PDF ke baki atau nampan kertas yang berbeda. Misalnya, sumber kertas berbeda untuk halaman sampul dan berbeda untuk halaman lainnya. Anda pasti dapat mengikuti langkah-langkah di bawah ini untuk mencetak rentang halaman ke sumber kertas yang berbeda dalam pekerjaan pencetakan yang sama:

  1. Inisialisasi objek dari kelas PdfViewer.
  2. Gunakan PdfQueryPageSettings delegasi penangan peristiwa
  3. Atur pengaturan halaman dan printer
  4. Panggil metode PrintDocumentWithSettings.

Cuplikan kode berikut menunjukkan cara mengikuti langkah-langkah ini dan mencetak rentang halaman yang berbeda ke sumber kertas atau baki yang berbeda menggunakan 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];
}

Periksa Status Pekerjaan Cetak saat Mencetak PDF dengan C#

Anda dapat mencetak file PDF ke printer yang berbeda. Misalnya, Microsoft Print to PDF, Microsoft XPS Document Writer, atau printer fisik lainnya. Namun, pencetakan dapat memakan waktu lama untuk dokumen PDF yang besar atau pencetakan dapat gagal karena beberapa alasan. Oleh karena itu, API menawarkan fitur yang memungkinkan Anda memeriksa status tugas pencetakan dengan langkah-langkah berikut:

  1. Muat file PDF masukan
  2. Tentukan pengaturan halaman
  3. Tetapkan nama pencetak
  4. Cetak dokumen PDF dengan PrintDocumentWithSettings

Cuplikan kode di bawah ini menunjukkan cara memeriksa status tugas pencetakan atau kemajuan pencetakan PDF menggunakan C#:

// Instansiasi objek PdfViewer
PdfViewer viewer = new PdfViewer();

// Ikat file PDF sumber
viewer.BindPdf(dataDir + "Sample Document with Bookmark.pdf");
viewer.AutoResize = true;

// Sembunyikan dialog pencetakan
viewer.PrintPageDialog = false;

// Buat objek Pengaturan Printer
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();

// Tentukan nama printer
//ps.PrinterName = "Penulis Dokumen Microsoft XPS";
ps.PrinterName = "Microsoft Print to PDF";

// Nama hasil cetak yang dihasilkan
//ps.PrintFileName = "ResultantPrintout.xps";
ps.PrintFileName = "ResultantPrintout.pdf";

// Cetak output ke file
ps.PrintToFile = true;
ps.FromPage = 1;
ps.ToPage = 2;
ps.PrintRange = System.Drawing.Printing.PrintRange.SomePages;

// Tentukan ukuran halaman hasil cetak
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);

// Cetak dokumen dengan pengaturan yang ditentukan di atas
viewer.PrintDocumentWithSettings(pgs, ps);

// Periksa status cetak
if (viewer.PrintStatus != null)
{
    // Pengecualian dilemparkan
    Exception ex = viewer.PrintStatus as Exception;
    if (ex != null)
    {
        // Dapatkan pesan pengecualian
    }
}
else
{
    // Tidak ada kesalahan yang ditemukan. Pekerjaan pencetakan telah berhasil diselesaikan
    Console.WriteLine("printing completed without any issue..");
}

Hasilnya, cuplikan kode ini dicetak di konsol aplikasi .NET tentang status pencetakan file PDF:

C# Cetak Pdf

Kesimpulan

Singkatnya, kami telah mempelajari berbagai pendekatan dan kasus penggunaan pencetakan file PDF yang diamankan dan tidak diamankan dengan kata sandi dengan C # atau VB NET dalam aplikasi pemrograman Anda. Selain itu, kami telah menjelajahi pencetakan seluruh dokumen PDF. Demikian pula, kami telah belajar mencetak beberapa rentang halaman dengan baki halaman, tempat sampah, atau sumber kertas tertentu. Selanjutnya, kami juga telah memeriksa bagaimana memantau status cetak atau kemajuan cetak dokumen menggunakan C#.

Lihat juga