이 페이지에는 자동 번역된 텍스트가 포함될 수 있습니다.

HTML을 PDF로 변환하는 기능

Docotic.Pdf 라이브러리를 사용하여 HTML을 PDF로 변환할 수 있습니다. 이 페이지에 언급된 리소스를 확인하여 데이터에서 아름다운 PDF를 만드는 방법을 알아보세요.

HTML을 PDF로 변환하는 과정

HTML을 PDF로 변환하려면 HTML을 PDF로 추가 기능이 필요합니다. 이것은 Docotic.Pdf 라이브러리를 위한 무료 추가 기능입니다. 추가 기능은 라이브러리 바이너리가 포함된 zip 파일에서도 사용할 수 있습니다.

Docotic.Pdf 라이브러리 9.5.17615-dev HTML을 PDF로 변환하는 추가 기능 9.5.17615-dev
회귀 테스트 14,813건의 테스트 통과 총 NuGet 다운로드 4,924,084

API 참조

우리 사이트에서는 HTML-PDF 추가 기능에 대한 API 참조를 제공합니다.

조항

C# 및 VB.NET 코드에서 HTML을 PDF로 변환하는 방법에 대해 자세히 알아보려면 다음 내용을 읽어보세요.

샘플 코드

HTML에서 PDF로의 변환은 다양한 관련 작업을 설명할 수 있는 용어입니다. 다음 섹션에서는 이러한 작업을 더 자세히 설명합니다.

HTML에서 PDF로 변환 C#

애드온 설치부터 시작해야 합니다. 패키지 관리자를 사용하여 NuGet에서 HTML to PDF 애드온을 설치합니다.

Install-Package BitMiracle.Docotic.Pdf.HtmlToPdf

이 애드온은 비동기 전용 API를 제공합니다. 우리는 비동기 이벤트 핸들러와 비동기 메서드와 함께 작동하도록 설계했습니다. Windows Forms, WPF, ASP.NET 및 콘솔 애플리케이션에서 이 애드온을 사용할 수 있습니다.

C# HTML을 PDF로 변환하는 코드는 다음과 같습니다.

using var converter = await HtmlConverter.CreateAsync();
var uri = new Uri("https://bitmiracle.com/pdf-library/html-pdf/");
using var pdf = await converter.CreatePdfAsync(uri);
pdf.Save("out.pdf");

이 코드는 HTML에서 PDF 변환기의 인스턴스를 만듭니다. 그런 다음 코드는 인스턴스를 사용하여 HTML에서 PDF를 만듭니다. PDF 문서로 계속 작업할 수 있지만 예제 코드는 문서를 저장할 뿐입니다.

콘솔 애플리케이션이 이전 버전의 C#을 사용하고 async Main이 없는 경우 걱정하지 마세요. 앱에서 여전히 애드온을 사용할 수 있습니다.

다음 코드는 일반적인 동기 방식으로 URL을 PDF로 변환하는 방법을 보여줍니다.

Task.Run(async () =>
{
    using var converter = await HtmlConverter.CreateAsync();
    var uri = new Uri("https://bitmiracle.com/pdf-library/html-pdf/");
    using var pdf = await converter.CreatePdfAsync(uri);
    pdf.Save("out.pdf");
}).GetAwaiter().GetResult();

VB.NET 애플리케이션은 비슷한 코드를 사용합니다. 다음은 VB.NET에서 HTML을 PDF로 변환하는 방법을 보여주는 스니펫입니다.

Task.Run(
    Async Function()
        Using converter = Await HtmlConverter.CreateAsync()
            Dim uri = New Uri("https://bitmiracle.com/pdf-library/html-pdf/")
            Using pdf = Await converter.CreatePdfAsync(uri)
                pdf.Save("out.pdf")
            End Using
        End Using
    End Function
).GetAwaiter().GetResult()

GitHub 저장소에서 전체 테스트 프로젝트를 다운로드하세요:

C#에서 HTML 문자열을 PDF로 변환

일반적인 작업 중 하나는 C# 또는 VB.NET 애플리케이션에서 HTML에서 PDF를 생성하는 것입니다. 이 프로세스는 앱이 데이터베이스의 데이터로 채우는 템플릿으로 시작할 수 있습니다. 웹사이트 사용자가 템플릿, 데이터 또는 둘 다를 만드는 것은 드문 일이 아닙니다.

자동 생성되거나 업로드된 HTML은 코드가 있는 파일 또는 문자열의 형태를 취할 수 있습니다. 애드온은 파일 경로를 허용하는 메서드를 제공합니다. 이 메서드를 사용하여 C# 코드에서 HTML 파일을 PDF로 변환합니다. 다음 코드는 문자열이 있는 경우를 위한 것입니다.

using var converter = await HtmlConverter.CreateAsync();

var html = "<body><br><br><br><h1>Hello, World</h1></body>";
using var pdf = await converter.CreatePdfFromStringAsync(html);
pdf.Save("out.pdf");

HTML은 이미지, 스크립트 및 CSS 파일에 대한 상대 참조를 포함할 수 있습니다. 이러한 코드를 제대로 변환하려면 변환 옵션을 사용해야 합니다. 옵션을 사용하여 기본 URL을 지정하는 방법은 다음과 같습니다.

using var converter = await HtmlConverter.CreateAsync();

var incompleteHtml = "<img src=\"/images/team.svg\"></img>";
var options = new HtmlConversionOptions();
options.Load.BaseUri = new Uri("https://bitmiracle.com/");
using var pdf = await converter.CreatePdfFromStringAsync(incompleteHtml, options);
pdf.Save("out.pdf");

저희의 GitHub 저장소에는 전체 테스트 프로젝트가 포함되어 있습니다.

변환 전에 JavaScript를 실행하세요

애드온 API는 변환 전에 JS 코드를 실행하는 방법을 제공합니다. 코드는 HTML 콘텐츠를 동적으로 생성하거나 수정할 수 있습니다. 예를 들어, 요소를 토글하거나 동적 콘텐츠 로딩을 발생시킬 수 있습니다.

다음 코드는 JavaScript가 완료될 때까지 HTML을 PDF로 변환하는 것을 지연시키는 방법을 보여줍니다.

using var converter = await HtmlConverter.CreateAsync();

var options = new HtmlConversionOptions();
var js = @"document.body.style.backgroundColor = 'green';";
options.Start.SetStartAfterScriptRun(js);

var url = new Uri("https://google.com");
using var pdf = await converter.CreatePdfAsync(url, options);
pdf.Save("out.pdf");

위의 스니펫은 접근 방식을 설명하기 위해 매우 간단한 코드를 사용합니다. 더 현실적인 예를 보려면 GitHub 리포지토리에서 해당 샘플 앱을 확인하세요. 이 앱은 콘텐츠를 동적으로 로드하는 페이지를 처리하는 방법을 보여줍니다. 앱의 JavaScript 코드는 더 이상 새 콘텐츠가 없을 때까지 페이지를 스크롤합니다. 그 후 PDF로 변환이 발생합니다.

SSL 오류 무시

HTML을 로드하기 위한 보안 요청을 보낼 때 애드온은 웹사이트의 신원을 인증하고 암호화된 연결을 가능하게 하는 SSL 인증서가 유효하고 신뢰할 수 있는지 확인합니다.

기본적으로 애드온은 HTML to PDF 변환기가 어떤 이유로든 인증서를 신뢰하지 않는 경우 예외를 발생시킵니다. 신뢰할 수 없는 인증서를 수락하는 위험을 이해한다면 애드온에 검사를 우회하도록 지시할 수 있습니다.

var engineOptions = new HtmlEngineOptions
{
    IgnoreSslErrors = true
};
using var converter = await HtmlConverter.CreateAsync(engineOptions);

var url = new Uri("https://self-signed.badssl.com/");
using var pdf = await converter.CreatePdfAsync(url);
pdf.Save("out.pdf");

전체 코드를 보려면 Docotic.Pdf 샘플 저장소로 이동하세요.

보호된 페이지에 대한 암호 제공

일부 웹 페이지는 액세스하려면 인증이 필요합니다. HTTP 인증이 필요한 보안 URL에 액세스하면 브라우저가 사용자 이름과 비밀번호를 제공하도록 요청합니다.

변환 옵션을 사용하면 로그인이 필요한 웹 페이지에 대한 자격 증명을 제공하도록 API에 지시할 수 있습니다.

이 C# 코드는 암호로 보호된 HTML을 PDF로 변환하는 방법을 보여줍니다.

using var converter = await HtmlConverter.CreateAsync();
var url = new Uri("http://httpbin.org/basic-auth/foo/bar");

var options = new HtmlConversionOptions();
options.Authentication.SetCredentials("foo", "bar");

using var pdf = await converter.CreatePdfAsync(url, options);
pdf.Save("out.pdf");

샘플 저장소에서 완전한 작동 샘플을 찾으세요.

변환하기 전에 기다리세요

HTML에서 PDF로의 변환을 지연하는 것은 페이지가 로드된 후 잠시 동안 업데이트되는 경우 유용할 수 있습니다. JavaScript 또는 AJAX 호출로 생성된 동적 콘텐츠를 처리할 때 종종 그렇습니다.

Acid 3 테스트는 변환 전 지연이 필요한 페이지의 완벽한 예입니다. 이 테스트는 브라우저가 복잡한 웹 페이지를 올바르게 렌더링하는 능력을 평가하기 위해 여러 가지 검사를 실행합니다. 이러한 검사에는 시간이 걸립니다. 다음 코드에서 대기 시간을 변경하여 변환 결과에 어떤 영향을 미치는지 확인해 보세요.

var options = new HtmlConversionOptions();
options.Start.SetStartAfterDelay(10 * 1000);

using var converter = await HtmlConverter.CreateAsync();
var url = new Uri("http://acid3.acidtests.org/");
using var pdf = await converter.CreatePdfAsync(url, options);
pdf.Save("out.pdf");

위의 코드는 지연을 사용하여 HTML을 PDF로 변환하는 방법을 보여줍니다. 추가 시간이 더 나은 결과를 얻는 데 도움이 되지만 지연을 추가하면 성능에 영향을 미칠 수 있습니다. 지연이 충분하지 않으면 변환 품질에 부정적인 영향을 미칠 수 있습니다. 지연을 사용하는 것에 대한 대안적인 접근 방식은 페이지가 준비될 때까지 실행되는 스크립트를 사용하는 것입니다.

전체 테스트 프로젝트는 Docotic.Pdf 샘플 저장소에서 받을 수 있습니다.

HTML to PDF API는 생성된 페이지에 반복 가능한 푸터/헤더 블록을 추가할 수 있습니다. 변환기는 변환 옵션에 지정된 HTML 템플릿에서 블록을 만듭니다. 템플릿 내부의 이미지에는 인라인 스타일과 데이터 URI를 사용하는 것이 좋습니다.

변환기는 헤더와 푸터를 페이지 여백 안에 배치합니다. 페이지 여백이 작기 때문에 헤더와 푸터의 내용이 보이지 않을 수 있습니다. 위쪽과 아래쪽 여백을 명시적으로 지정하는 것이 좋습니다. 크기는 각각 헤더와 푸터의 크기와 일치해야 합니다.

HTML을 PDF로 변경하고 머리글과 바닥글을 추가하는 방법을 알아보세요

using var converter = await HtmlConverter.CreateAsync();

var options = new HtmlConversionOptions();
options.Page.HeaderTemplate = File.ReadAllText("header-template.html");
options.Page.MarginTop = 50;

options.Page.FooterTemplate = File.ReadAllText("footer-template.html");
options.Page.MarginBottom = 50;

var url = new Uri("https://www.iana.org/numbers");
using var pdf = await converter.CreatePdfAsync(url, options);
pdf.Save("out.pdf");

변환기는 변환 날짜 및 문서 제목과 같은 값을 템플릿 내부의 미리 정의된 위치에 삽입할 수 있습니다. 자세한 내용은 HeaderTemplate 및 FooterTemplate 속성에 대한 설명을 확인하세요.

전체 테스트 프로젝트 및 템플릿 코드는 Docotic.Pdf 샘플 저장소에 있습니다.

스케일 내용

넓은 레이아웃이 있는 웹 페이지를 다룰 때 출력 PDF 크기를 늘리거나 PDF 페이지에 맞게 콘텐츠를 축소할 수 있습니다. 축소된 콘텐츠를 더 잘 배치하려면 여백을 설정할 수도 있습니다.

잘 조정된 PDF는 독자가 콘텐츠를 제대로 보기 위해 확대하거나 축소할 필요가 없기 때문에 더 나은 읽기 환경을 제공합니다. HTML 문서가 글꼴 크기가 작아서 읽기 어려운 경우 콘텐츠를 확대할 수 있습니다.

기본적으로 API는 A4와 같은 페이지 크기의 PDF를 생성합니다. 여백도 없고 확대도 없습니다. 변환 옵션을 사용하여 이러한 설정을 변경할 수 있습니다.

HTML에서 PDF를 생성할 때 배율 요소와 여백을 설정하는 방법을 알아보세요.

using var converter = await HtmlConverter.CreateAsync();

var html = "<html><head><style>body { background-color: coral; margin-top: 100px;}</style></head>" +
"<body><h1>Did you notice the margins and the scale?</h1></body></html>";

var options = new HtmlConversionOptions();
options.Page.MarginLeft = 10;
options.Page.MarginTop = 20;
options.Page.MarginRight = 30;
options.Page.MarginBottom = 40;
options.Page.Scale = 1.5;

using var pdf = await converter.CreatePdfFromStringAsync(html, options);
pdf.Save("out.pdf");

Docotic.Pdf 샘플 저장소에는 전체 프로젝트가 포함되어 있습니다.

기존 PDF에 HTML 오버레이

변환 결과의 배경으로 기존 PDF를 사용하고 싶은 경우가 있습니다. 이는 Docotic.Pdf와 애드온을 사용하면 가능합니다.

이 방법은 HTML(오버레이 콘텐츠)에서 새 PDF를 만든 다음 기존 PDF와 병합하는 것을 포함합니다. 최종 문서에는 원래 콘텐츠와 새 오버레이가 모두 포함됩니다. 다음은 이 방법을 설명하는 코드입니다.

using var converter = await HtmlConverter.CreateAsync();

var options = new HtmlConversionOptions();
options.Page.SetSizeInches(4.13, 5.83);

string htmlCode =
    "<div style=\"position: absolute; top: 270px; right: 100px;\">" +
    "I would like to put this here</div>";
using var htmlPdf = await converter.CreatePdfFromStringAsync(htmlCode, options);

using var pdf = new PdfDocument("pdf-to-merge-with.pdf");
var xObj = pdf.CreateXObject(htmlPdf.Pages[0]);

pdf.Pages[0].Canvas.DrawXObject(xObj, 0, 0);
pdf.Save("out.pdf");

오버레이에 페이지 크기를 지정하는 것이 중요합니다. 일반적으로 크기는 오버레이하려는 페이지 크기와 같아야 합니다. 그런 다음 오버레이 콘텐츠로 새 PDF를 생성해야 합니다. 배경은 기본적으로 투명하다는 점에 유의하세요. 필요한 경우 변환 전에 스크립트를 실행하여 배경을 변경할 수 있습니다.

기존 PDF를 열 시간입니다. 이 문서는 생성된 PDF의 페이지에서 XObject를 생성해야 합니다. 그런 다음 코드는 기존 페이지 위에 XObject를 그립니다.

예제 소스 PDF가 포함된 전체 테스트 프로젝트는 Docotic.Pdf 샘플 저장소에 있습니다.

C#에서 SVG를 PDF로 변환

HTML to PDF 변환기를 사용하여 확장 가능한 벡터 그래픽이 있는 이미지에서 PDF를 만듭니다. 다음 코드는 변환을 수행하는 가장 간단한 방법을 보여줍니다.

using var converter = await HtmlConverter.CreateAsync();
var uri = new Uri("https://bitmiracle.com/images/team.svg");
using var pdf = await converter.CreatePdfAsync(uri);
pdf.Save("out.pdf");

변환기는 SVG 이미지에 지정된 너비 및/또는 높이를 사용하여 올바른 크기의 고품질 출력을 생성합니다.

사용자 정의 옵션을 사용하여 다른 크기의 출력을 생성할 수 있습니다. 변환된 이미지를 다른 PDF에 추가하는 것이 가능합니다.

GitHub에서 전체 테스트 프로젝트를 확인하세요.