HOWTO · Csharp
C#에서 HTML을 PDF로
HtmlRenderer.PdfSharp를 사용하여 C#에서 HTML 문자열을 A4 PDF로 변환합니다.
이 페이지의 내용
C# 프로젝트에서 HtmlRenderer.PdfSharp를 사용하여 HTML 문자열을 PDF 페이지로 렌더링한 다음 문서를 쓸 수 있는 경로에 저장합니다. 이 패키지는 HTML 렌더러를 PdfSharp에 연결합니다. 기본 스타일은 렌더링될 수 있지만, 복잡한 레이아웃과 고급 CSS는 브라우저 출력과 다를 수 있습니다.
HtmlRenderer.PdfSharp 시작하기
Visual Studio의 NuGet 패키지 관리자로 HtmlRenderer.PdfSharp를 설치하거나, 프로젝트 파일이 포함된 디렉터리에서 dotnet add package HtmlRenderer.PdfSharp를 실행합니다. NuGet은 호환되는 패키지 버전을 선택합니다. 프로젝트에 고정된 버전이 필요한 경우, 선택하기 전에 해당 버전의 대상 프레임워크를 프로젝트와 비교하여 확인하세요.
패키지 기반 변환에는 애플리케이션 프로젝트에 NuGet 어셈블리가 필요합니다. 이 API는 TheArtOfDev.HtmlRenderer.PdfSharp의 PdfGenerator, PdfSharp.Pdf의 PdfDocument, PdfSharp의 PageSize.A4를 사용합니다. 이러한 패키지 참조는 변환기를 빌드하는 프로젝트에 유지하세요.
HTML 문자열을 PDF로 변환하기
다음 독립 실행형 C# 프로그램은 설치된 패키지로 변환을 수행합니다. PdfDocument를 만들고, PageSize.A4와 함께 HTML 문자열을 PdfGenerator.AddPdfPages에 전달하고, 문서를 출력 경로에 저장한 다음, 문서를 해제합니다.
using System;
using PdfSharp;
using PdfSharp.Pdf;
using TheArtOfDev.HtmlRenderer.PdfSharp;
class Program
{
static void Main()
{
string html = "<html><body><h1>Monthly report</h1><p>Revenue increased this month.</p></body></html>";
string outputPath = "monthly-report.pdf";
using (PdfDocument document = new PdfDocument())
{
PdfGenerator.AddPdfPages(document, html, PageSize.A4);
document.Save(outputPath);
}
Console.WriteLine("Saved " + outputPath);
}
}
Saved monthly-report.pdf
이 프로그램은 HtmlRenderer.PdfSharp가 설치된 프로젝트에서 실행하세요. 애플리케이션에서는 프로세스가 쓸 수 있는 대상을 사용하세요. 상대 파일 이름은 현재 작업 디렉터리를 기준으로 확인됩니다. 고정된 대상이 필요한 경우 절대 경로를 사용하세요.
CSS와 이미지가 포함된 HTML 렌더링하기
HTML 문자열을 생성기에 전달하기 전에 <style> 블록과 이미지 요소를 HTML 문자열에 포함하세요. HtmlRenderer.PdfSharp는 기본 CSS를 렌더링할 수 있지만, 그 출력이 브라우저와 일치한다는 보장은 없습니다. 고급 선택자, 사용자 지정 글꼴 또는 복잡한 위치 지정을 사용하는 문서는 검토하세요.
이미지 소스는 변환 중에 애플리케이션이 사용할 수 있어야 합니다. 외부 이미지 URL은 해당 프로세스에서 네트워크에 액세스할 수 있어야 합니다. 로컬 이미지의 경우, 프로젝트의 패키지 버전에서 지원하는 소스 형식과 경로를 사용하고, 프로세스가 이를 읽을 수 있는지 확인하세요. 이미지가 누락된 경우, 그 소스가 올바르고 액세스할 수 있는지 확인하세요. 사용 가능한 스크린샷은 이 예제와 대조하여 확인할 수 없었으므로 생략합니다.
제한 사항 및 문제 해결
HTML을 PDF로 렌더링하는 것은 같은 페이지를 브라우저에서 여는 것과 다릅니다. 마크업을 올바른 형식으로 유지하고, 렌더러에서 지원하는 스타일을 사용하며, 생성된 PDF에서 레이아웃 변경 사항이 있는지 검사하세요. 복잡한 레이아웃과 고급 CSS는 예상대로 렌더링되지 않을 수 있습니다.
PDF가 누락된 경우, 출력 경로와 해당 디렉터리에 대한 애플리케이션의 쓰기 액세스를 확인하세요. 스타일이 누락된 경우, HTML을 줄이고 CSS를 단계적으로 다시 추가하세요. 이미지가 누락된 경우, 그 URL 또는 로컬 소스를 변환 중에 사용할 수 있는지 확인하세요. 이러한 확인은 경로 또는 리소스 액세스 문제와 렌더링 차이를 구분하는 데 도움이 됩니다.
FAQ
- HtmlRenderer.PdfSharp는 어떤 일을 하나요? PdfSharp를 사용하여 HTML 콘텐츠를 PDF 페이지로 렌더링하므로, C# 애플리케이션이 마크업에서 생성된 문서를 저장할 수 있습니다.
- CSS를 사용할 수 있나요? 기본 CSS는 지원됩니다. 고급 CSS와 복잡한 레이아웃은 브라우저와 다르게 보일 수 있으므로, 결과 PDF를 검토하세요.
- 이미지는 어떻게 동작하나요? 이미지 소스는 변환 중에 렌더러가 사용할 수 있어야 합니다. 외부 URL은 애플리케이션에서 네트워크에 액세스할 수 있어야 하며, 로컬 소스는 프로세스가 읽을 수 있는 경로가 필요합니다.
- PDF를 사용자 지정할 수 있나요? PDF 생성 API를 통해 페이지 크기를 설정하고 HTML과 지원되는 스타일을 조정하세요. 설치된 버전의 다른 옵션은 API를 확인하세요.
- 복잡한 HTML에서는 무엇을 기대해야 하나요? 렌더러는 HTML과 CSS의 하위 집합을 지원합니다. 실제 문서로 시도해 보고, 모양이 의도와 다르면 마크업을 단순화하거나 조정하세요.