C#에서 TXT를 PDF로 변환하기
일상적인 개발 및 업무 환경에서 순수 텍스트(TXT) 파일을 PDF 형식으로 변환하는 것은 흔한 요구사항입니다. PDF 형식은 크로스 플랫폼 지원, 스타일 고정, 변조가 쉽지 않은 등의 특징을 가지고 있으며, TXT 형식은 콘텐츠의 경량화 저장에 더 중점을 둡니다. 두 형식 간의 변환을 통해 콘텐츠의 가독성과 문서의 규격성·휴대성을 모두 확보할 수 있습니다. 본 문서에서는 C#과 무료 .NET 클래스 라이브러리를 통해 TXT를 PDF로 효율적으로 변환하는 방법을 소개합니다.
1. 환경 준비
1. 핵심 라이브러리 소개
Free Spire.PDF for .NET은 기능이 풍부한 무료 PDF 조작 라이브러리로, PDF 문서의 생성, 편집, 병합, 변환 등 기본 기능을 지원합니다. 무료 버전은 처리 규모에 일정한 제한이 있지만(예: 한 번에 변환할 수 있는 페이지 수 상한), 일반적인 TXT를 PDF로 변환하는 작업에는 완전히 충분합니다.
2. 환경 구성
개발 환경: Visual Studio 2022 이상 버전 또는 기타 .NET을 지원하는 IDE
라이브러리 설치: NuGet 패키지 관리자를 통해 FreeSpire.PDF를 설치합니다. 패키지 관리자 콘솔에서 다음 명령어를 실행할 수 있습니다:
Install-Package FreeSpire.PDF
2. TXT를 PDF로 변환하는 구현 단계
변환 과정은 다음 핵심 단계로 요약할 수 있습니다:
TXT 파일 내용 읽기
PDF 문서 및 페이지 생성
텍스트 글꼴 및 스타일 설정
텍스트 레이아웃 및 형식 정의
텍스트를 PDF에 그리기 및 저장
완전한 구현 코드
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;
using System.IO;
namespace ConvertTextToPdf
{
class Program
{
static void Main(string[] args)
{
try
{
// 1. TXT 텍스트 파일 내용 읽기
string txtFilePath = @"Input.txt";
string textContent = File.ReadAllText(txtFilePath, System.Text.Encoding.UTF8);
// 2. PDF 문서 인스턴스 생성 및 빈 페이지 추가
PdfDocument pdfDocument = new PdfDocument();
PdfPageBase pdfPage = pdfDocument.Pages.Add(); // 기본 A4 페이지
// 3. PDF 텍스트 렌더링 글꼴 구성
PdfFont pdfFont = new PdfFont(PdfFontFamily.Helvetica, 11);
// 4. 텍스트 레이아웃 규칙 구성
PdfTextLayout textLayout = new PdfTextLayout();
textLayout.Break = PdfLayoutBreakType.FitPage; // 콘텐츠를 페이지에 맞춤
textLayout.Layout = PdfLayoutType.Paginate; // 콘텐츠가 초과할 경우 자동 페이지 분할
// 5. 텍스트 형식 구성
PdfStringFormat textFormat = new PdfStringFormat();
textFormat.Alignment = PdfTextAlignment.Justify; // 텍스트 양쪽 정렬
textFormat.LineSpacing = 20f; // 행 간격 설정
// 6. 텍스트 렌더링 컴포넌트 생성 및 형식 바인딩
PdfTextWidget textWidget = new PdfTextWidget(textContent, pdfFont, PdfBrushes.Black);
textWidget.StringFormat = textFormat;
// 7. 텍스트 렌더링 영역 정의 (페이지 왼쪽 10px, 위쪽 25px에서 시작하여 페이지 전체 그리기 가능 영역을 덮음)
RectangleF renderBounds = new RectangleF(
new PointF(10, 25),
new SizeF(pdfPage.Canvas.ClientSize.Width - 20, pdfPage.Canvas.ClientSize.Height - 30)
);
// 8. 텍스트를 PDF 페이지에 그리기
textWidget.Draw(pdfPage, renderBounds, textLayout);
// 9. PDF 파일 저장
pdfDocument.SaveToFile("TextToPdf.pdf", FileFormat.PDF);
// 리소스 해제
pdfDocument.Close();
Console.WriteLine("TXT를 PDF로 변환 성공!");
}
catch (IOException ex)
{
Console.WriteLine("파일 작업 예외: " + ex.Message);
}
catch (Exception ex)
{
Console.WriteLine("변환 실패: " + ex.Message);
}
}
}
}
핵심 코드 설명
TXT 내용 읽기
File.ReadAllText를 사용하고 인코딩(예: UTF-8)을 명시적으로 지정하면 시스템 기본 인코딩 차이로 인한 깨진 문자 문제를 방지할 수 있습니다.PDF 페이지 생성
PdfDocument.Pages.Add()는 기본적으로 A4 크기의 페이지를 추가합니다. 오버로드 메서드를 통해PdfPageSize.A3등 페이지 크기를 사용자 정의할 수 있습니다.텍스트 스타일 및 레이아웃 구성
글꼴:
PdfFont는 글꼴, 글자 크기 및 스타일을 정의합니다.레이아웃:
PdfTextLayout의Paginate속성은 텍스트가 현재 페이지를 초과할 경우 자동으로 페이지를 분할하도록 보장합니다.형식:
PdfStringFormat은 정렬 방식, 행 간격 등을 설정하여 배치 효과를 향상시킬 수 있습니다.그리기 영역:
RectangleF를 통해 텍스트 그리기 범위를 설정하고 여백을 남겨 문서를 더 미려하게 만듭니다.
그리기 및 저장
PdfTextWidget는 텍스트 내용과 스타일을 바인딩하고Draw메서드를 통해 PDF 페이지에 렌더링하는 역할을 합니다. 마지막으로SaveToFile을 호출하여 파일을 저장합니다.
본 문서에서 시연한 C# 구현 방안은 적은 양의 코드로 TXT를 PDF로 변환하는 기능을 완성했습니다. 이 방법은 Office나 타사 명령줄 도구에 의존할 필요가 없어 중소형 .NET 프로젝트에 통합하기 적합하며, 일상적인 문서 형식 변환 기본 요구사항을 충족할 수 있습니다.