PDFsharp & MigraDoc
0 Comment
MigraDoc: 문서 객체 모델(DOM)을 기반으로 문서를 생성하는 라이브러리입니다. 단락, 표, 차트 등을 객체로 추가하여 문서를 구성하며, 자동으로 레이아웃과 페이지 나누기를 처리하여 PDF 또는 RTF 형식의 문서를 생성할 수 있습니다. 워드 프로세서와 유사한 기능을 제공합니다.
PDFsharp: PDF 파일을 프로그래밍 방식으로 생성하고 처리하는 .NET 라이브러리입니다. GDI+와 유사한 드로잉 루틴을 사용하여 PDF 페이지를 직접 그릴 수 있으며, 화면, PDF, 메타파일 등 다양한 출력 대상으로 동일한 루틴을 사용할 수 있습니다. 다만, 고급 텍스트 레이아웃이나 자동 페이지 나누기는 지원하지 않습니다.
MigraDoc (문서 생성기):
- 워드 프로세서와 유사한 기능 (단락, 표, 차트, 섹션, 목차 등)을 객체 모델을 통해 프로그래밍 방식으로 제공합니다.
- 자동으로 레이아웃 및 페이지 나누기를 처리합니다.
- 결과물: PDF 또는 RTF 파일.
- 주 사용 목적: 문서 구조와 내용에 집중하고 레이아웃은 라이브러리에 맡기고 싶을 때, 또는 PDF 외에 RTF 형식도 필요할 때 적합합니다.
PDFsharp (PDF 처리 라이브러리):
- GDI+와 유사한 드로잉 루틴을 사용하여 PDF 페이지를 직접 그립니다.
- 픽셀, 선 단위의 세밀한 제어가 가능합니다.
- 기본적인 텍스트 레이아웃만 지원하며, 페이지 나누기는 자동으로 처리되지 않습니다.
- 결과물: PDF 파일 (드로잉 루틴은 화면이나 메타파일에도 사용 가능).
- 주 사용 목적: PDF 파일 형식만 필요하고, 내용물의 위치나 모양을 정밀하게 제어하고 싶을 때 적합합니다.
MigraDoc – Getting Started
Document
객체 생성: 모든 MigraDoc 문서 작업의 시작점입니다.
12Document document = new Document();Section
추가: MigraDoc은 페이지 단위가 아닌 섹션 단위로 내용을 구성합니다. 최소 하나 이상의 섹션이 필요합니다.
12Section section = document.AddSection();Paragraph
추가: 섹션에 텍스트 단락을 추가하는 가장 기본적인 방법입니다.
123section.AddParagraph("Hello, World!"); // 간단한 텍스트 추가section.AddParagraph(); // 빈 단락 추가- 객체 저장 및 서식 지정:
AddParagraph
와 같은 메서드는 생성된 객체를 반환하므로, 이를 변수에 저장하여 추가적인 서식을 적용할 수 있습니다.
1234Paragraph paragraph = section.AddParagraph(); // 단락 객체 저장paragraph.Format.Font.Color = Color.FromCmyk(100, 30, 20, 50); // 폰트 색상 변경paragraph.AddFormattedText("Hello, World!", TextFormat.Underline); // 밑줄 친 텍스트 추가 FormattedText
객체 활용:AddFormattedText
역시 객체를 반환하여 더 세부적인 서식(예: 글자 크기)을 지정할 수 있습니다.
123FormattedText ft = paragraph.AddFormattedText("Small text", TextFormat.Bold); // 굵은 텍스트 추가 및 객체 저장ft.Font.Size = 6; // 글자 크기 변경- 다양한 요소 추가: 텍스트 외에도
AddTable
,AddImage
,AddHyperlink
등 다양한 요소를 추가할 수 있음을 시사합니다. Renderer
선택 및 사용: 문서를 실제 파일(여기서는 PDF)로 만들기 위해Renderer
를 사용합니다.
1234567// PDF 렌더러 생성 (폰트 임베딩 설정 포함)PdfDocumentRenderer pdfRenderer = new PdfDocumentRenderer(false, PdfFontEmbedding.Always);// 렌더러에 문서 객체 전달pdfRenderer.Document = document;// 문서 렌더링 실행pdfRenderer.RenderDocument();- 파일 저장: 렌더링된 결과를 파일로 저장합니다.
123string filename = "HelloWorld.pdf";pdfRenderer.PdfDocument.Save(filename); // PDF 파일 저장 - (선택 사항) 파일 열기: 생성된 파일을 바로 열어볼 수 있습니다.
12Process.Start(filename);