PDF 파일 인쇄 C#

많은 기업들이 종이 사용을 크게 줄이고 있습니다. 그러나 인쇄가 중요한 몇 가지 시나리오가 있습니다. 예를 들어, 시스템에는 PDF 형식의 온라인 주문 세부 정보가 포함될 수 있습니다. 배달을 위해 온라인 주문을 발송하는 동안 PDF를 인쇄해야 합니다. 그들은 항목을 대규모로 처리하므로 각 문서를 수동으로 인쇄하는 것은 상당한 작업이 될 수 있습니다. Aspose.PDF for .NET API는 다른 많은 파일 조작 및 변환 기능 외에도 PDF 파일의 효율적인 인쇄를 지원합니다. C#을 사용하여 .NET 응용 프로그램에서 PDF 파일을 인쇄하는 것과 관련된 다음 사용 사례를 살펴보겠습니다.

C#으로 PDF 파일 인쇄

PDF 파일 인쇄는 C# 또는 VB.net을 사용하여 .NET 응용 프로그램에서 자동화할 수 있습니다. 아래의 간단한 단계에 따라 PDF 파일을 인쇄할 수 있습니다.

  1. PdfViewer 클래스의 개체 만들기
  2. 입력 PDF 문서 로드
  3. PDF 파일 인쇄

아래 코드 조각은 C#을 사용하여 PDF 파일을 인쇄하는 방법을 보여줍니다.

//PdfViewer 개체 만들기
PdfViewer viewer = new PdfViewer();
//입력 PDF 파일 열기
viewer.BindPdf(dataDir + "Test.pdf");
//PDF 문서 인쇄
viewer.PrintDocument();
//PDF 파일 닫기
viewer.Close();

C#으로 여러 PDF 파일 인쇄

비즈니스 특성으로 인해 여러 파일을 인쇄해야 하는 경우 이 기능은 .NET API용 Aspose.PDF에서 이미 지원됩니다. 위의 코드 조각으로 여러 PDF 파일을 하나씩 인쇄하는 것은 약간 느릴 수 있습니다. 따라서 프로세스를 더 쉽게 만들기 위해 PDF 인쇄를 한 단계 더 발전시켜 보겠습니다. 여기에서는 각 PDF 파일의 이름을 해당 목록에 추가하면서 List를 사용할 것입니다. 다음 단계에서는 여러 PDF 파일을 인쇄하는 방법을 설명합니다.

  1. 문자열 유형 목록 초기화
  2. 목록에 PDF 파일 추가
  3. 입력 PDF 파일 로드
  4. 여러 PDF 파일 인쇄

코드 조각은 C#을 사용하여 여러 PDF 파일을 인쇄하는 방법을 보여줍니다.

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

C#으로 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();
        }
    }
}

C#으로 보안 PDF 파일 인쇄

PDF 파일은 암호로 보호하고 보호할 수 있습니다. 그러나 암호는 사용자 및 소유자 암호의 두 가지 유형이 될 수 있습니다. 사용자 암호로 보호된 PDF 파일은 암호화된 PDF 파일을 열고 보려면 암호가 필요합니다. 반면에 보안 및 비밀번호로 보호된 PDF 파일의 내용을 수정하려면 소유자 비밀번호가 필요합니다. 다음 단계에서는 보안 PDF 인쇄를 설명합니다.

  1. 비밀번호가 포함된 보안 PDF 로드
  2. PdfViewer 개체 만들기
  3. 보안 PDF 파일 인쇄

다음 코드 조각은 C#을 사용하여 보안 PDF 파일을 인쇄하는 방법을 보여줍니다.

//사용자 또는 소유자 암호를 지정하는 동안 보안 PDF 문서 로드
Document document = new Document(dataDir + "Password.pdf" , "userORowner");
//PdfViewer 개체 만들기
PdfViewer viewer = new PdfViewer();
//입력 PDF 파일 열기
viewer.BindPdf(document);
//PDF 문서 인쇄
viewer.PrintDocument();
//PDF 파일 닫기
viewer.Close();

C#을 사용하여 프린터의 특정 용지함에 PDF 인쇄

.NET API용 Aspose.PDF를 사용하여 PDF를 특정 용지함에 인쇄할 수 있습니다. 예를 들어 사진이 많은 PDF를 다른 용지함에 인쇄하고 텍스트 PDF 파일을 다른 용지함에 인쇄할 수 있습니다. PDF 파일 인쇄를 위해 출력 용지함 또는 용지함을 설정하려면 아래 단계를 따르십시오.

  1. 입력 PDF 파일 로드
  2. 인쇄 속성 설정
  3. PageSettingsPaperSource 지정
  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];
}

C#으로 PDF를 인쇄하는 동안 인쇄 작업 상태 확인

PDF 파일을 다른 프린터로 인쇄할 수 있습니다. 예를 들어 Microsoft Print to PDF, Microsoft XPS Document Writer 또는 모든 물리적 프린터. 그러나 대용량 PDF 문서의 경우 인쇄 시간이 오래 걸리거나 어떤 이유로 인쇄가 실패할 수 있습니다. 따라서 API는 다음 단계에 따라 인쇄 작업 상태를 확인할 수 있는 기능을 제공합니다.

  1. 입력 PDF 파일 로드
  2. 페이지 설정 지정
  3. 프린터 이름 설정
  4. PrintDocumentWithSettings를 사용하여 PDF 문서 인쇄

아래 코드 조각은 C#을 사용하여 인쇄 작업 상태 또는 PDF의 인쇄 진행 상황을 확인하는 방법을 보여줍니다.

// 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 = "결과 인쇄 출력.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 파일의 인쇄 상태에 대한 .NET 응용 프로그램 콘솔에 인쇄됩니다.

C# PDF 인쇄

결론

요약하자면, 우리는 프로그래밍 응용 프로그램에서 C# 또는 VB NET을 사용하여 암호로 보호된 PDF 파일과 보안되지 않은 PDF 파일을 인쇄하는 다양한 접근 방식과 사용 사례를 배웠습니다. 또한 전체 PDF 문서의 인쇄를 살펴보았습니다. 마찬가지로 특정 페이지 트레이, 용지함 또는 용지 공급원별로 일부 페이지 범위를 인쇄하는 방법을 배웠습니다. 또한 C#을 사용하여 문서의 인쇄 상태나 인쇄 진행 상황을 모니터링하는 방법도 확인했습니다.

또한보십시오