C#에서 PDF 파일 열기

Syed Hassan Sabeeh Kazmi 2023년10월12일
  1. Process.Start() 메서드를 사용하여 C#에서 PDF 파일 열기
  2. DynamicPDF 뷰어를 사용하여 C#에서 PDF 파일 열기
  3. PdfDocument를 사용하여 C#에서 PDF 파일 열기
  4. System.IO.Stream 인스턴스를 사용하여 C#에서 PDF 파일 열기
  5. iTextSharp NuGet 패키지를 사용하여 C#에서 PDF 파일 열기
  6. 도구 상자에서 PdfViewer를 사용하여 C#에서 PDF 파일 열기
C#에서 PDF 파일 열기

이 자습서에서는 C#을 사용하여 Windows Form 내에서 PDF 파일을 여는 방법을 알려줍니다. Windows 응용 프로그램용 C# 프로그래밍을 사용하여 Portable Document Format 파일에 액세스하는 방법에는 6가지가 있습니다.

각 방법은 C# 프로그래밍 및 GUI 컨트롤에 대한 사용자의 기본 지식을 기반으로 정리되어 있습니다. 실행 가능한 C# 예제를 사용하여 프로그래밍 배경 없이 이러한 다양한 방법을 이해하고 배울 수 있습니다.

C#에서 PDF 파일을 생성하기 위한 직접적인 지원이 없다는 것을 알아야 합니다. 대신 타사 라이브러리나 도구를 사용하여 파일을 생성할 수 있습니다. PDFSharp는 Windows 응용 프로그램이 MIT 라이선스에 따라 게시된 GDI+에서 알려진 그리기 루틴을 사용할 수 있도록 하는 예입니다.

Process.Start() 메서드를 사용하여 C#에서 PDF 파일 열기

C#의 System.Diagnostics.Process.Start() 메서드는 시스템 기본 PDF 파일 또는 기타 문서 뷰어로 작동합니다. 이 접근 방식을 사용하는 많은 초보자가 겪는 일반적인 문제는 파일 경로입니다.

프로그램의 .exe 파일에서 리소스가 있는 폴더까지의 상대 경로가 필요한 경우 파일 경로에 Resources\ 또는 ...\Resources\를 추가합니다. 그렇지 않으면 Path.GetTempPath()를 사용하여 임시 위치에 저장하고 열어서 PDF 파일을 포함 리소스로 C# 프로젝트에 추가할 수 있습니다.

using System;
using System.Diagnostics;  // essential namespace
using System.Windows.Forms;

namespace open_pdf {
  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e) {
      /* alternative approach

      ProcessStartInfo file_info = new ProcessStartInfo();
      file_info.FileName = "report.pdf";
      string _path = @"C:\Users\DELL"; // file path
      file_info.Arguments = _path;
      Process.Start(file_info);

       */

      Process.Start(@"C:\Users\DELL\report.pdf");
    }
  }
}

출력:

프로세스 시작

이는 ProcessStartInfo의 정의도 포함하는 System.Diagnostics 네임스페이스에 속합니다. PDF를 포함한 파일에 액세스하기 위한 fileName, arguments, userName, passworddomain을 포함하여 다양한 매개 변수가 있습니다.

DynamicPDF 뷰어를 사용하여 C#에서 PDF 파일 열기

DynamicPDF 뷰어는 파일, 바이트 배열 또는 암호로 보호된 파일을 사용하여 PDF에 액세스하거나 스트림을 사용하여 PDF를 열 수 있는 Windows 응용 프로그램 내의 .NET용 강력한 도구입니다. 이 방법의 예는 DynamicPDF 뷰어를 활용하여 .pdf 파일에 액세스하거나 여는 방법을 설명합니다.

DynamicPDF에서 제공하는 MSI 설치 프로그램을 사용하여 이 뷰어를 설치하고 성공적인 설치 후 DynamicPDFViewer 컨트롤을 Visual Studio 도구 상자에 추가하십시오. 이제 도구 상자에 액세스하여 Windows Forms에 DynamicPDFViewer 컨트롤을 추가하는 것이 유효한 옵션입니다.

C# 애플리케이션의 성능을 향상시키기 위해 사용자 지정 가능한 기능이 포함된 프리미엄 도구입니다. 이 뷰어를 모든 .NET WinForm 응용 프로그램에 완전히 내장할 수 있으므로 문서를 표시하거나 상호 작용하기 위해 더 이상 외부 뷰어에 의존하지 않고 높은 효율성, 안정성 및 호환성을 활용할 수 있습니다.

using System;
using System.Windows.Forms;

namespace open_pdf {
  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e) {
      pdfViewer1.Open(@"C:\Users\DELL\report.pdf");
    }

    private void pdfViewer1_Click(object sender, EventArgs e) {}
  }
}

출력:

DynamicPDF

ceTe.DynamicPDF.Viewer.NET이라는 이름으로 Visual Studio에서 NuGet 패키지로 설치할 수 있습니다. 이 도구의 x64 및 x86 버전을 사용할 수 있으며 설치하고 참조를 C# 프로젝트에 저장하여 PDF 파일을 보다 효율적으로 열 수 있습니다.

PdfDocument를 사용하여 C#에서 PDF 파일 열기

Open 메서드는 pdfViewer.Open(pdf_path);와 같은 C#에서 PDF 파일을 열 때 매우 간단하고 유명합니다. 그리고 바이트 배열을 생성자에게 전달하기 위해 pdfDocument의 인스턴스를 생성해야 하는 바이트 배열에서 직접 PDF를 열려면 Open 방법을 사용할 수 있습니다.

pdfDocument 인스턴스를 pdfDocument pdf_doc = new pdfDocument(pdf_file);와 같은 Open 메소드를 사용하여 생성한 Viewer 컨트롤에 전달합니다. Open 메서드 pdfViewer.Open(pdf_doc);을 사용하여 실행할 수 있습니다.

가장 중요한 것은 암호로 보호된 PDF 파일의 경우 pdfDocument pdf_doc = new pdfDocument(pdf_path, "my_password123");와 같이 생성자에 대한 파일 경로와 함께 암호를 전달해야 합니다. 열기 방법을 사용하여 이 인스턴스를 DynamicPDF 뷰어 컨트롤에 전달합니다.

using System;
using System.Windows.Forms;
using ceTe.DynamicPDF.Viewer;

namespace open_pdf {
  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e) {
      PdfDocument file_pdf =
          new PdfDocument(data_pdf);  // `data_pdf` contains the byte array info of pdf file
      pdfViewer1.Open(file_pdf);
    }

    private void pdfViewer1_Click(object sender, EventArgs e) {}
  }
}

열기 버튼을 클릭하면 Windows Form에 내장된 DynamicPDF 뷰어의 바이트 배열에서 PDF 파일이 열립니다.

암호로 보호된 PDF 파일을 여는 것은 PdfDocument의 인스턴스를 만들고 생성자에 파일 경로와 암호를 전달하여 바이트 배열에서 PDF 파일을 여는 것만큼 간단합니다.

PDF가 암호화되고 암호로 보호되므로 PdfDocument 인스턴스를 Open() 메서드를 사용하여 pdfViewer1에 전달합니다.

using System;
using System.Windows.Forms;
using ceTe.DynamicPDF.Viewer;

namespace open_pdf {
  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e) {
      PdfDocument file_pdf = new PdfDocument(
          @"C:\Users\DELL\report.pdf", "password");  // first string is the path, and the second
                                                     // string is the password on that pdf file
      pdfViewer1.Open(file_pdf);
    }

    private void pdfViewer1_Click(object sender, EventArgs e) {}
  }
}

출력:

Pdf문서 암호

System.IO.Stream 인스턴스를 사용하여 C#에서 PDF 파일 열기

Open 메서드로 이 작업을 수행하기 위해 System.IO.Stream 인스턴스를 직접 사용할 수 있습니다. pdfDocument pdf_doc = new pdfDocument(pdf_stream);와 같은 Stream에서 pdfDocument 인스턴스를 생성해야 합니다.

using System;
using System.Windows.Forms;
using ceTe.DynamicPDF.Viewer;
using System.IO;

namespace open_pdf {
  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e) {
      /* perform some stream operation to get `pdf_stream`

      string dictionary_start = @"C:\Users\DELL\";
      string dictionary_end = @"C:\Users\DELL\edvdd";

      foreach (string info_file in Directory.EnumerateFiles(dictionary_start))
      {
          using (FileStream SourceStream = File.Open(info_file, FileMode.Open))
          {
              using (FileStream DestinationStream = File.Create(dictionary_end +
      info_file.Substring(info_file.LastIndexOf('\\'))))
              {
                  await SourceStream.CopyToAsync(DestinationStream);
              }
          }
      }

      */

      PdfDocument file_pdf =
          new PdfDocument(pdf_stream);  // `pdf_stream` contains the pdf path directly from the
                                        // `System.IO.Strem` instance
      pdfViewer1.Open(file_pdf);
    }

    private void pdfViewer1_Click(object sender, EventArgs e) {}
  }
}

열기 버튼을 클릭하면 Windows Form에 내장된 pdfViewer1 DynamicPDF 뷰어의 스트림에서 PDF 파일이 열립니다.

iTextSharp NuGet 패키지를 사용하여 C#에서 PDF 파일 열기

Visual Studio에서 새 C# 프로젝트(Windows Form C# 애플리케이션)를 만들고 iTextSharp NuGet 패키지 버전 v5.5.11 또는 업데이트된 버전을 설치합니다.

CREATE, INSERT, ADAPTMAINTAIN 문서와 같은 기능을 PDF로 제공하여 가능한 모든 .pdf 기능을 C# 프로젝트에 추가할 수 있도록 하는 중요한 라이브러리입니다.

버튼으로 양식을 디자인하고 iTextSharp.text.pdf.parser 네임스페이스를 사용하여 양식을 처리합니다. 고급 도구 라이브러리로서 복잡한 PDF 보고서를 작성하고 PDF 기능으로 응용 프로그램을 향상시키는 데 도움이 됩니다.

using System;
using System.Windows.Forms;
using iTextSharp.text.pdf.parser;  // essential namespace
using System.Text;

namespace open_pdf {
  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e) {
      using (OpenFileDialog dialog_pdffile =
                 new OpenFileDialog() { Filter = "PDF files|*.pdf", ValidateNames = true,
                                        Multiselect = false }) {
        if (dialog_pdffile.ShowDialog() == DialogResult.OK) {
          try {
            iTextSharp.text.pdf.PdfReader file_proc =
                new iTextSharp.text.pdf.PdfReader(dialog_pdffile.FileName);
            StringBuilder build_string = new StringBuilder();
            for (int i = 1; i <= file_proc.NumberOfPages; i++) {
              // read the pdf document
              build_string.Append(PdfTextExtractor.GetTextFromPage(file_proc, i));
            }
            richTextBox1.Text = build_string.ToString();
            file_proc.Close();
          } catch (Exception ex) {
            MessageBox.Show(ex.Message, "Caution, Error occurs!", MessageBoxButtons.OK,
                            MessageBoxIcon.Error);
          }
        }
      }
    }

    private void richTextBox1_TextChanged(object sender, EventArgs e) {}
  }
}

출력:

iTextSharp

도구 상자에서 PdfViewer를 사용하여 C#에서 PDF 파일 열기

이 방법에서는 C#에서 WinForms PDF 뷰어를 사용하여 PDF 파일을 여는 방법과 간단한 PDF 뷰어 C# 응용 프로그램을 만드는 데 필요한 어셈블리를 배웁니다.

Patagames.pdf는 PDF 파일을 생성, 편집 및 로드하기 위한 클래스 라이브러리와 PDF 렌더링 엔진을 포함하는 기본 어셈블리입니다.

Patagames.Pdf.WinForms 어셈블리에는 PdfViewer UserControl 및 기타 PDF 뷰어용 UI 컨트롤이 포함되어 있으며 이 두 어셈블리는 이 WinForms .pdf 뷰어에 필요한 유일한 두 어셈블리입니다.

코드에서 수동으로 컨트롤을 만드는 것은 많은 이점이 있는 복잡한 프로세스입니다. VS 도구 상자에서 컨트롤을 드래그하여 C# 양식의 디자이너 창에 놓으면 PDF 뷰어를 만들 수 있습니다. Patagames Pdf.Net SDK 탭을 탐색하고 PdfViewer 도구 상자 항목을 Designer 창으로 드래그합니다.

pdfViewer에는 사용자 인터페이스 요소가 포함되어 있지 않으며 모든 중요한 기능은 공용 메서드를 통해 사용할 수 있습니다.

디자이너에 인스턴스를 추가한 후 pdfViewer1.LoadDocument("file_name.pdf");와 같은 항목을 사용하여 pdfViewerControl에서 문서를 로드할 수 있습니다.

using System;
using System.Windows.Forms;

namespace open_pdf {
  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e) {
      pdfViewer1.LoadDocument(@"C:\Users\DELL\Resumed.pdf");
    }

    private void pdfViewer1_Load(object sender, EventArgs e) {}
  }
}

출력:

PdfViewer

이 SDK 탭의 도움으로 사용할 수 있는 또 다른 접근 방식은 Patagames Pdf.Net SDK 탭을 탐색하고 PdfToolStripMain 도구 상자 항목을 디자이너 창으로 드래그하여 해당 인스턴스를 디자이너에 추가함으로써 속성을 사용하여 PDF 문서를 여는 것입니다. .cs 파일.

그런 다음 속성 그리드에서 PdfViewer 속성을 클릭하고 드롭다운 목록에서 pdfViewer1을 선택합니다. 이제 열기 아이콘을 클릭하여 PDF 문서를 로드하거나 추가할 수 있습니다.

버튼 클릭 이벤트에 대해 논의할 때 어셈블리의 네임스페이스 참조를 추가하고 pdfViewer 인스턴스를 생성하고 PDF 파일을 로드하여 C# 코드에서 컨트롤을 수동으로 추가할 수 있습니다. 버튼의 클릭 이벤트에서 PdfViewerControl을 초기화하고 문서를 로드한 다음 양식에 추가합니다.

Spire PDF 뷰어는 C#에서 PDF 파일을 열기 위한 Patagames PDF 뷰어의 유효한 대안입니다. Spire.PDFViewer를 다운로드하고 Windows Form에 도구 스크립트를 추가하고 C# 프로젝트에 Spire.PdfViewer.Forms 참조를 추가하여 시스템에서 PDF 파일을 직접 로드하거나 대화 상자에서 PDF 파일을 선택합니다. 컴퓨터에서.

이 자습서에서는 성능을 유지하는 가장 효과적인 방법을 사용하여 C#에서 PDF 또는 기타 파일을 여는 방법을 배웠습니다.

Syed Hassan Sabeeh Kazmi avatar Syed Hassan Sabeeh Kazmi avatar

Hassan is a Software Engineer with a well-developed set of programming skills. He uses his knowledge and writing capabilities to produce interesting-to-read technical articles.

GitHub

관련 문장 - Csharp PDF