IronPDF for JAVA를 사용하여 HTML을 PDF로 변환하는 방법

Java를 이용한 HTML을 PDF로 변환

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDF for Java는 전체 Chromium 렌더링 엔진을 실행하여 HTML 콘텐츠를 PDF 문서로 변환합니다 — 현대 브라우저를 구동하는 동일한 엔진입니다. 모든 CSS 속성, 폰트, 이미지 및 JavaScript 생성 레이아웃이 브라우저 창에서 보이는 그대로 정확히 렌더링된 후 픽셀 정확도의 PDF로 나타납니다.

이 튜토리얼은 세 가지 핵심 변환 방법: HTML 문자열을 PDF로, 실시간 URL을 PDF로, 로컬 HTML 파일을 PDF로 변환하는 과정을 안내합니다. 또한 설치, 라이센스 구성, 개발자가 가장 자주 사용하는 렌더링 옵션도 다룹니다.

Java 라이브러리는 IronPDF for .NET의 API 형태를 반영하므로 두 런타임을 동시에 작업하는 팀이 전환을 쉽게 할 수 있습니다. 이 튜토리얼의 모든 예제 소스 코드는 GitHub에서 사용할 수 있습니다.

간편 시작: Java에서 HTML을 PDF로 변환

Maven pom.xml에 IronPDF를 추가한 후, 단일 메서드를 호출하여 PDF를 생성하세요:

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/quickstart.java
import com.ironsoftware.ironpdf.*;

// Set your license key before any rendering calls
License.setLicenseKey("YOUR-LICENSE-KEY");

// Convert an HTML string to a PDF and save it
PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Hello from IronPDF for Java!</h1>");
pdf.saveAs("output.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/quickstart.java
import com.ironsoftware.ironpdf.*;

// Set your license key before any rendering calls
License.setLicenseKey("YOUR-LICENSE-KEY");

// Convert an HTML string to a PDF and save it
PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Hello from IronPDF for Java!</h1>");
pdf.saveAs("output.pdf");
JAVA

지금 바로 무료 체험판을 통해 IronPDF을 프로젝트에서 사용해 보세요.

첫 번째 단계:
green arrow pointer

목차


Java용 IronPDF 설치

IronPDF for Java는 Maven Central을 통해 독립 실행형 JAR로 배송됩니다. 대부분의 프로젝트에 대해 Maven 경로를 권장하는 이유는 전이적 종속성을 처리하고 개발자 컴퓨터 및 CI 파이프라인 전체에서 라이브러리 버전을 일관되게 유지하기 때문입니다.

옵션 1: IronPDF를 Maven 종속성으로 추가하기

프로젝트의 pom.xml 파일을 열고 <dependencies> 블록에 다음 항목을 추가하십시오:

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/maven-dependency.xml
<dependencies>

    <dependency>
        <groupId>com.ironsoftware</groupId>
        <artifactId>ironpdf</artifactId>
        <version>[LATEST_VERSION]</version>
    </dependency>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>[LATEST_VERSION]</version>
    </dependency>
</dependencies>
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/maven-dependency.xml
<dependencies>

    <dependency>
        <groupId>com.ironsoftware</groupId>
        <artifactId>ironpdf</artifactId>
        <version>[LATEST_VERSION]</version>
    </dependency>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>[LATEST_VERSION]</version>
    </dependency>
</dependencies>
XML

첫 번째 아티팩트는 Java용 IronPDF의 최신 릴리스를 가져옵니다. 두 번째 아티팩트는 SLF4J 로그 생성을 활성화하여 IronPDF의 렌더링 엔진이 실행 중에 진단 메시지를 기록할 수 있도록 합니다. Logback 또는 Log4J를 선호하는 개발자는 대신 해당 제공자를 대체할 수 있습니다. 로그 의존성은 선택 사항입니다 — 로그가 필요하지 않으면 생략하세요.

파일을 저장한 후, 프로젝트의 루트 디렉터리에서 mvn install을 실행하여 두 라이브러리를 모두 다운로드하십시오. Maven은 IronPDF가 필요한 모든 전이적 종속성을 포함하여 전체 종속성 그래프를 자동으로 해결합니다.

Gradle 프로젝트의 경우, build.gradle에 있는 이에 상응하는 종속성 선언은 다음과 같습니다:

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/gradle-dependency.java
// build.gradle (Groovy DSL)
// dependencies {
//     implementation 'com.ironsoftware:ironpdf:[LATEST_VERSION]'
//     implementation 'org.slf4j:slf4j-simple:[LATEST_VERSION]'
// }
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/gradle-dependency.java
// build.gradle (Groovy DSL)
// dependencies {
//     implementation 'com.ironsoftware:ironpdf:[LATEST_VERSION]'
//     implementation 'org.slf4j:slf4j-simple:[LATEST_VERSION]'
// }
JAVA

[LATEST_VERSION]IronPDF 변경 내역 또는 해당 아티팩트의 Maven Central 페이지에 있는 버전 번호로 대체하십시오.

옵션 2: JAR 파일을 수동으로 추가하기

Maven Central에서 IronPDF JAR을 직접 다운로드한 후 프로젝트의 클래스 경로에 추가합니다. 이 접근법은 빌드 도구 없이도 작동하지만, 수동 버전 관리를 요구하기 때문에 Maven이나 Gradle을 사용하지 않는 레거시 프로젝트나 아웃바운드 네트워크 접근이 제한된 환경에 가장 적합합니다.

다운로드 후, IDE의 프로젝트 설정을 통해 JAR을 프로젝트의 클래스 경로에 추가하세요. IntelliJ IDEA에서, 프로젝트 루트를 마우스 우클릭하고 "오픈 모듈 설정"을 선택한 후, "Dependencies"를 찾아 들어가 JAR 파일을 추가하세요. Eclipse에서는 프로젝트를 우클릭하고 "Properties > Java Build Path > Libraries"로 이동한 다음 "Add External JARs"를 클릭하세요.

참고해 주세요IronPDF JAR에는 번들로 포함된 Chromium 엔진 바이너리가 포함됩니다. 새 컴퓨터에서의 첫 렌더링 호출은 임시 디렉토리에 이를 추출하며 몇 초가 소요됩니다. 이후의 호출은 캐시된 바이너리를 사용하며 즉시 시작됩니다. 컨테이너 환경에서는, 각 컨테이너 시작 시점에서 재추출을 피하기 위해 추출 경로에 지속 볼륨을 탑재합니다.

시스템 요구 사항

IronPDF for Java는 JDK 8 이상에서 실행됩니다. Windows, Linux, macOS 모두에서 x86-64 및 ARM64 아키텍처를 지원합니다. 외부 브라우저 설치가 필요하지 않습니다. Chromium 바이너리가 JAR에 포함되어 있습니다. Linux에서는 Chromium이 필요로 하는 표준 공유 라이브러리가 존재하는지 확인하십시오. IronPDF for Java 설명서에는 일반적인 Linux 배포판에 필요한 최소 패키지가 나열되어 있습니다.


IronPDF를 가져오고 라이선스 키를 구성하는 방법은?

모든 IronPDF 클래스는 com.ironsoftware.ironpdf 패키지에 포함되어 있습니다. PDF 문서를 생성하거나 조작할 소스 파일의 상단에 가져오기를 추가하십시오.

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/import-and-license.java
import com.ironsoftware.ironpdf.*;
import java.nio.file.Paths;

// Apply your license key before any other IronPDF calls
License.setLicenseKey("YOUR-LICENSE-KEY");

// Optional: set a custom log file path
Settings.setLogPath(Paths.get("IronPdfEngine.log"));
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/import-and-license.java
import com.ironsoftware.ironpdf.*;
import java.nio.file.Paths;

// Apply your license key before any other IronPDF calls
License.setLicenseKey("YOUR-LICENSE-KEY");

// Optional: set a custom log file path
Settings.setLogPath(Paths.get("IronPdfEngine.log"));
JAVA

라이선스 키가 없으면 IronPDF는 체험 모드로 실행되며 각 PDF 페이지에 타일형 워터마크를 삽입합니다. 키를 설정하면 워터마크가 제거되고 모든 기능이 잠금 해제됩니다. 무료 체험을 시작하여 즉시 키를 얻으십시오.

렌더링된 PDF 페이지에 찍힌 IronPDF 체험판 워터마크

라이선스 키는 체험판 또는 상업용 라이선스가 활성화될 때 Iron Software에서 발급한 문자열입니다. 소스 코드에 하드코딩하지 말고 환경 변수나 구성 파일에 저장하십시오. 일반적인 패턴은 시작 시 환경 변수에서 읽는 것입니다:

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/license-from-env.java
import com.ironsoftware.ironpdf.*;

// Read the license key from an environment variable
String licenseKey = System.getenv("IRONPDF_LICENSE_KEY");
if (licenseKey != null && !licenseKey.isEmpty()) {
    License.setLicenseKey(licenseKey);
}
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/license-from-env.java
import com.ironsoftware.ironpdf.*;

// Read the license key from an environment variable
String licenseKey = System.getenv("IRONPDF_LICENSE_KEY");
if (licenseKey != null && !licenseKey.isEmpty()) {
    License.setLicenseKey(licenseKey);
}
JAVA

이 접근 방식은 키를 버전 관리 외부에 보관하고 개발, 스테이징, 프로덕션 환경에서 다른 키를 사용하는 것을 간단하게 만듭니다.

중요한License.setLicenseKeySettings.setLogPath는 렌더링 또는 조작 메서드를 호출하기 전에 반드시 호출되어야 합니다. 애플리케이션 시작 시점에 배치하십시오. 이상적으로는 정적 초기화 블록이나 main 진입점에 배치하는 것이 좋습니다.


HTML 문자열을 PDF로 변환하는 방법은?

PdfDocument.renderHtmlAsPdf는 HTML 마크업 문자열을 받아, 디스크에 기록하기 전에 저장, 병합 또는 수정할 수 있는 PdfDocument 객체를 반환합니다. 이것은 프로그래밍적으로 생성된 HTML에 대한 기본 메서드입니다. 예를 들어, 데이터베이스 값을 결합하여 Java 문자열로 정의된 HTML 템플릿을 사용해 보고서를 작성하는 경우입니다.

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/html-string-to-pdf.java
import com.ironsoftware.ironpdf.*;

// Simple one-liner: convert an HTML string to a PDF
PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Hello from IronPDF!</h1>");
pdf.saveAs("htmlstring_to_pdf.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/html-string-to-pdf.java
import com.ironsoftware.ironpdf.*;

// Simple one-liner: convert an HTML string to a PDF
PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Hello from IronPDF!</h1>");
pdf.saveAs("htmlstring_to_pdf.pdf");
JAVA

렌더링 엔진은 선택적인 두 번째 인수인 기본 경로에 대해 상대 자산 경로(이미지, 스타일 시트, 스크립트)를 해결합니다. 기본 경로가 제공되면 엔진은 해당 경로를 상대 URL을 해결하는 루트로 처리합니다. 이것은 로컬 CSS 및 이미지 파일을 참조하는 HTML이 소스 마크업에서 경로 조작 없이 제대로 렌더링되도록 합니다.

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/html-string-with-assets.java
import com.ironsoftware.ironpdf.*;

// HTML references assets in a local "assets" subfolder
String html = "<html>" +
    "<head><link rel='stylesheet' href='assets/style.css'></head>" +
    "<body><h1>Invoice</h1><img src='assets/logo.png' /></body>" +
    "</html>";

// Pass the base path so IronPDF resolves relative asset URLs
PdfDocument pdf = PdfDocument.renderHtmlAsPdf(html, "C:/my-project/templates");
pdf.saveAs("invoice.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/html-string-with-assets.java
import com.ironsoftware.ironpdf.*;

// HTML references assets in a local "assets" subfolder
String html = "<html>" +
    "<head><link rel='stylesheet' href='assets/style.css'></head>" +
    "<body><h1>Invoice</h1><img src='assets/logo.png' /></body>" +
    "</html>";

// Pass the base path so IronPDF resolves relative asset URLs
PdfDocument pdf = PdfDocument.renderHtmlAsPdf(html, "C:/my-project/templates");
pdf.saveAs("invoice.pdf");
JAVA

saveAs 메서드는 절대 경로 또는 상대 경로를 받아들입니다. 라이브러리가 파일을 생성하며 존재하면 덮어씁니다. 애플리케이션이 아직 생성하지 않은 디렉터리에 쓰기를 수행할 때는, saveAs을 호출하기 전에 먼저 Files.createDirectories(Paths.get("output"))을 사용하여 디렉터리를 생성하십시오.

IronPDF는 Chromium에서 구현된 전체 HTML5 및 CSS3 기능 세트를 지원합니다. CSS의 @font-face을 통해 로드된 사용자 정의 글꼴은 글꼴 파일이 기본 경로에서 접근 가능한 경우 올바르게 렌더링됩니다. JavaScript로 렌더링된 SVG 요소와 <canvas> 요소도 PDF 출력물에 표시됩니다.

HTML 템플릿을 전용 디렉토리에 보관하고 해당 디렉토리를 기본 경로로 전달하십시오. 이 패턴은 디자이너가 Java 코드를 건드리지 않고 템플릿을 업데이트할 수 있게 합니다.


Java에서 URL을 PDF로 변환하는 방법은?

PdfDocument.renderUrlAsPdf는 지정된 URL의 페이지를 가져온 후, JavaScript가 실행되고 동적 콘텐츠가 로드될 때까지 기다린 다음, 완전히 렌더링된 DOM을 PDF로 변환합니다.

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/url-to-pdf.java
import com.ironsoftware.ironpdf.*;

// Convert a live web page to PDF
PdfDocument pdf = PdfDocument.renderUrlAsPdf("https://en.wikipedia.org/wiki/PDF");
pdf.saveAs("wikipedia_pdf_article.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/url-to-pdf.java
import com.ironsoftware.ironpdf.*;

// Convert a live web page to PDF
PdfDocument pdf = PdfDocument.renderUrlAsPdf("https://en.wikipedia.org/wiki/PDF");
pdf.saveAs("wikipedia_pdf_article.pdf");
JAVA

엔진은 인증 헤더, 쿠키 및 JavaScript 중심의 단일 페이지 애플리케이션을 처리합니다. 로그인이나 사용자 정의 요청 헤더가 필요한 페이지의 경우, ChromePdfRenderOptions 클래스를 사용하여 renderUrlAsPdf를 호출하기 전에 요청 매개변수를 구성하십시오.

이 변환 방법은 웹 페이지 아카이빙, 준수 스냅샷 생성 및 내부 대시보드에서 클라이언트에게 보고서 생성에 유용합니다. 로컬 네트워크를 통해 액세스하는 서버 생성 페이지도 완벽하게 지원됩니다. 공용 URL과 동일한 방식으로 http://localhost:8080/report/123을 전달하십시오. IronPDF는 페이지가 완전히 로드될 때까지 기다렸다가 렌더링하므로 비동기 데이터 가져오기에 의존하는 대시보드는 비어 있는 차트가 아닌 데이터가 채워져 렌더링됩니다.

HTTP 기본 인증이 적용된 페이지의 경우, http://user:password@host/path 형식을 사용하여 URL에 자격 증명을 전달하십시오. 세션 쿠키로 보호되는 페이지의 경우, ChromePdfRenderOptions 객체를 renderUrlAsPdf로 전달하기 전에 쿠키 저장소를 구성하십시오. IronPDF for Java 설명서를 참조하여 인증된 URL의 요청 헤더 구성 및 쿠키 관리에 대한 자세한 내용을 확인하십시오.


로컬 HTML 파일을 PDF로 변환하는 방법은?

PdfDocument.renderHtmlFileAsPdf은 로컬 파일 시스템에서 HTML 파일을 읽어와 PDF로 렌더링합니다. 파일의 상대 경로로 참조된 모든 연결된 자산(CSS, JavaScript, 이미지)은 HTML 파일의 자체 디렉토리를 기준으로 해결됩니다.

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/html-file-to-pdf.java
import com.ironsoftware.ironpdf.*;

// Convert a local HTML file — assets resolve relative to its directory
PdfDocument pdf = PdfDocument.renderHtmlFileAsPdf("C:/invoices/TestInvoice1.html");
pdf.saveAs("htmlfile_to_pdf.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/html-file-to-pdf.java
import com.ironsoftware.ironpdf.*;

// Convert a local HTML file — assets resolve relative to its directory
PdfDocument pdf = PdfDocument.renderHtmlFileAsPdf("C:/invoices/TestInvoice1.html");
pdf.saveAs("htmlfile_to_pdf.pdf");
JAVA

이 접근 방식은 복잡한 HTML 문서를 변환하는 데 가장 정확합니다. 렌더링 엔진이 메모리 내 문자열이 아닌 파일 시스템 경로에서 작동하기 때문에 다중 레벨 자산 디렉토리에 대한 상대 참조는 추가 구성 없이 해결됩니다. 동일한 폴더에 있는 style.cssscript.js에 의존하는 템플릿은 경로 조정 없이도 올바르게 렌더링됩니다.

이 방법은 인보이스 생성, 계약 생성 및 Java 애플리케이션과 독립적으로 HTML 템플릿을 유지하는 워크플로에 특히 적합합니다. 개발 팀은 템플릿을 데이터 파일로 취급하여 애플리케이션과 함께 저장하고, 경로를 지정하여 renderHtmlFileAsPdf를 호출합니다. 디자이너가 브랜딩 또는 레이아웃을 변경하기 위해 템플릿을 업데이트할 때 Java 코드 변경이 필요하지 않습니다.

참고해 주세요IronPDF는 Flexbox, CSS Grid, CSS 변수, 웹 글꼴 및 미디어 쿼리 등 Chromium이 지원하는 모든 현대 HTML 및 CSS 기능을 지원하며, 출력 PDF에서 정확히 렌더링됩니다.


PDF 생성 옵션을 설정하는 방법은?

ChromePdfRenderOptions는 용지 크기, 여백, Zoom 수준, 인쇄 매체 유형, JavaScript 타임아웃 등 렌더링 동작을 제어합니다. 인스턴스를 생성하고 원하는 속성을 설정한 후, 이를 render*AsPdf 메서드의 두 번째 인수로 전달하십시오.

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/render-options.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.render.*;

ChromePdfRenderOptions options = new ChromePdfRenderOptions();

// Render the page using the print media type (uses @media print CSS rules)
options.setCssMediaType(CssMediaType.PRINT);

// Wait up to 5 seconds for JavaScript to finish executing
options.setJavaScriptTimeout(5000);

// Apply a 1.5x zoom level to scale content to fit the page
options.setZoom(150);

// Render at 150 DPI for sharper images in print output
options.setDpi(150);

PdfDocument pdf = PdfDocument.renderHtmlAsPdf(
    "<h1>Styled Report</h1>",
    options
);
pdf.saveAs("styled_report.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/render-options.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.render.*;

ChromePdfRenderOptions options = new ChromePdfRenderOptions();

// Render the page using the print media type (uses @media print CSS rules)
options.setCssMediaType(CssMediaType.PRINT);

// Wait up to 5 seconds for JavaScript to finish executing
options.setJavaScriptTimeout(5000);

// Apply a 1.5x zoom level to scale content to fit the page
options.setZoom(150);

// Render at 150 DPI for sharper images in print output
options.setDpi(150);

PdfDocument pdf = PdfDocument.renderHtmlAsPdf(
    "<h1>Styled Report</h1>",
    options
);
pdf.saveAs("styled_report.pdf");
JAVA

CssMediaType.PRINT 설정은 엔진에 @media print CSS 규칙을 적용하도록 지시하며, 많은 HTML 템플릿에서 이 규칙을 사용하여 탐색 모음을 숨기고 PRINT 전용 레이아웃을 적용합니다. setJavaScriptTimeout 메서드는 JavaScript 차트 라이브러리(D3.js, Chart.js)를 사용하거나 콘텐츠를 지연 로딩하는 페이지에서 중요합니다. 타임아웃 시간이 너무 짧으면 PDF가 JavaScript 렌더링이 완료되기 전에 페이지를 캡처하여, 빈 차트가 생성되거나 일부 섹션이 누락될 수 있습니다. 렌더링된 PDF에 예상된 내용이 누락된 경우 시간 초과를 늘리십시오.

setDpi 메서드는 출력의 이미지 해상도를 제어합니다. 디폴트 값(96 DPI)은 화면상 문서에 적합합니다. 인쇄되거나 고해상도 디스플레이에 표시될 PDF의 경우 150 또는 300 DPI를 사용하십시오. 높은 DPI 값은 파일 크기를 비례적으로 증가시킵니다. 구성할 수 있는 속성의 전체 목록을 보려면 PDF 생성 설정 코드 예제를 참조하십시오.


헤더와 푸터를 추가하는 방법은?

IronPDF는 텍스트 기반 및 HTML 기반 헤더와 푸터를 모두 지원합니다. 텍스트 헤더에는 렌더링 시 자동으로 해결되는 포맷 토큰({page}, {total-pages}, {date})이 포함된 TextHeaderFooter 객체가 사용됩니다.

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/headers-footers.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.headerfooter.*;

// Create a text-based header and footer
TextHeaderFooter header = new TextHeaderFooter();
header.setCenterText("Confidential — {date}");
header.setFontSize(10);

TextHeaderFooter footer = new TextHeaderFooter();
footer.setLeftText("My Company, Inc.");
footer.setRightText("Page {page} of {total-pages}");
footer.setFontSize(9);

PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Annual Report</h1>");
pdf.addTextHeaders(header);
pdf.addTextFooters(footer);
pdf.saveAs("report_with_headers.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/headers-footers.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.headerfooter.*;

// Create a text-based header and footer
TextHeaderFooter header = new TextHeaderFooter();
header.setCenterText("Confidential — {date}");
header.setFontSize(10);

TextHeaderFooter footer = new TextHeaderFooter();
footer.setLeftText("My Company, Inc.");
footer.setRightText("Page {page} of {total-pages}");
footer.setFontSize(9);

PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Annual Report</h1>");
pdf.addTextHeaders(header);
pdf.addTextFooters(footer);
pdf.saveAs("report_with_headers.pdf");
JAVA

{page}{total-pages} 토큰은 바닥글에 "12페이지 중 3페이지"와 같은 값을 생성하며 페이지 수가 변경되면 자동으로 업데이트되므로, 렌더링 전에 최종 페이지 수를 알 필요가 없습니다. {date} 토큰은 시스템 로캘을 사용하여 현재 날짜를 삽입합니다. 사용 가능한 다른 토큰으로는 {time}, {document-title}, {url} 등이 있습니다.

addTextHeadersaddTextFooters로 추가된 머리글과 바닥글은 기본적으로 문서의 모든 페이지에 적용됩니다. 클러스터 페이지 예외를 위해 선택적으로 페이지 범위 매개변수를 전달하십시오 — 예를 들어, 표지 페이지에서 헤더를 생략하기 위해.

로고, 브랜드 색상 또는 사용자 지정 레이아웃이 필요한 스타일링된 헤더의 경우, 대신 HtmlHeaderFooter를 사용하십시오. 이 태그는 전체 HTML 문자열을 받아들이며 페이지 본문과 동일한 방식으로 렌더링합니다. 커스텀 헤더 및 푸터 예제에서 전체 HTML 헤더 패턴을 보십시오.


페이지 여백과 용지 크기를 설정하는 방법은?

ChromePdfRenderOptions 메서드를 호출하기 전에 여백 및 용지 크기 값이 설정된 render*AsPdf 인스턴스를 전달하십시오.

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/margins-paper-size.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.render.*;
import com.ironsoftware.ironpdf.page.*;

ChromePdfRenderOptions options = new ChromePdfRenderOptions();

// Set uniform margins in millimeters
options.setMarginTop(20);
options.setMarginBottom(20);
options.setMarginLeft(15);
options.setMarginRight(15);

// Use A4 paper (default is Letter)
options.setPaperSize(PaperSize.A4);

PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<p>Page content here.</p>", options);
pdf.saveAs("a4_with_margins.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/margins-paper-size.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.render.*;
import com.ironsoftware.ironpdf.page.*;

ChromePdfRenderOptions options = new ChromePdfRenderOptions();

// Set uniform margins in millimeters
options.setMarginTop(20);
options.setMarginBottom(20);
options.setMarginLeft(15);
options.setMarginRight(15);

// Use A4 paper (default is Letter)
options.setPaperSize(PaperSize.A4);

PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<p>Page content here.</p>", options);
pdf.saveAs("a4_with_margins.pdf");
JAVA

여백 값은 밀리미터 단위입니다. PaperSize 열거형은 표준 용지 크기(A4, Letter, Legal, A3 등)를 포함합니다. 비표준 크기가 필요한 개발자는 options.setCustomPaperWidthoptions.setCustomPaperHeight을 사용하여 사용자 정의 너비와 높이를 설정할 수 있습니다. 사용자 지정 용지 크기 예제사용자 지정 여백 예제에서 전체 구성 패턴을 보십시오.


PDF에 워터마크를 적용하는 방법은?

IronPDF에서의 워터마크는 페이지 전체에 구성 가능한 불투명도로 HTML이 각 페이지에 찍힌 것입니다. 이 접근 방식은 개발자가 워터마크의 외관을 완전히 제어할 수 있도록 하며 HTML 요소, 이미지, 스타일링된 텍스트를 스탬프로 사용할 수 있습니다.

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/watermark.java
import com.ironsoftware.ironpdf.*;

PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Confidential Report</h1><p>Internal use only.</p>");

// Define the watermark using an HTML string
String watermarkHtml = "<h1 style='color:rgba(200,0,0,0.3); transform:rotate(-45deg);'>DRAFT</h1>";

// Stamp the watermark on all pages at 50% opacity
pdf.applyStamp(watermarkHtml);

pdf.saveAs("draft_watermark.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/watermark.java
import com.ironsoftware.ironpdf.*;

PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Confidential Report</h1><p>Internal use only.</p>");

// Define the watermark using an HTML string
String watermarkHtml = "<h1 style='color:rgba(200,0,0,0.3); transform:rotate(-45deg);'>DRAFT</h1>";

// Stamp the watermark on all pages at 50% opacity
pdf.applyStamp(watermarkHtml);

pdf.saveAs("draft_watermark.pdf");
JAVA

applyStamp 메서드는 정확한 위치 지정(중앙, 왼쪽 상단, 사용자 지정 픽셀 오프셋, z-index(전경 또는 배경))을 위해 HtmlStampOptions 매개변수를 받습니다. 스탬프를 백그라운드로 설정하면 텍스트 뒤에 배치되어 문서가 읽기 가능을 유지합니다. 포어그라운드로 설정하면 위에 배치되어 인쇄할 때 감추기 어렵습니다.

반복 타일 워터마크 — IronPDF 자체가 체험 모드에서 적용하는 종류 — 를 생성하려면 HTML 스탬프 문자열에서 회전된 텍스트 요소의 그리드를 렌더링하고 요소 크기를 전체 페이지로 채우십시오.

커스텀 워터마크 가이드에서는 배경 워터마크, 타일 패턴, 라이선스 업그레이드를 통해 워터마크 제거 예제를 확인할 수 있습니다.


여러 PDF를 하나로 병합하는 방법은?

PdfDocument.merge은 두 개 이상의 PdfDocument 객체를 순서대로 결합하여 하나의 새 문서를 반환합니다. 이는 컴포넌트 섹션에서 보고서를 조합하거나 커버 페이지를 추가하거나 일괄 작업의 사용자별 섹션을 묶는데 선호되는 접근 방식입니다.

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/merge-pdfs.java
import com.ironsoftware.ironpdf.*;
import java.util.Arrays;
import java.util.List;

// Render two separate HTML documents into PDFs
PdfDocument cover    = PdfDocument.renderHtmlAsPdf("<h1>Cover Page</h1>");
PdfDocument body     = PdfDocument.renderHtmlAsPdf("<h1>Report Body</h1><p>Section one...</p>");
PdfDocument appendix = PdfDocument.renderHtmlAsPdf("<h2>Appendix A</h2>");

// Merge all three into a single PDF in the specified order
List<PdfDocument> parts = Arrays.asList(cover, body, appendix);
PdfDocument merged = PdfDocument.merge(parts);
merged.saveAs("full_report.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/merge-pdfs.java
import com.ironsoftware.ironpdf.*;
import java.util.Arrays;
import java.util.List;

// Render two separate HTML documents into PDFs
PdfDocument cover    = PdfDocument.renderHtmlAsPdf("<h1>Cover Page</h1>");
PdfDocument body     = PdfDocument.renderHtmlAsPdf("<h1>Report Body</h1><p>Section one...</p>");
PdfDocument appendix = PdfDocument.renderHtmlAsPdf("<h2>Appendix A</h2>");

// Merge all three into a single PDF in the specified order
List<PdfDocument> parts = Arrays.asList(cover, body, appendix);
PdfDocument merged = PdfDocument.merge(parts);
merged.saveAs("full_report.pdf");
JAVA

각 소스 문서의 페이지는 소스 목록이 지정한 순서에 따라 병합된 출력에 나타납니다. 병합된 문서는 개별 소스 문서로부터 메타데이터를 상속받지 않습니다. 병합 후 해당 필드가 후속 사용자에게 중요한 경우, meta.titlePdfDocument.getPdfMetaData()를 사용하여 문서 속성을 업데이트하십시오.

merge 메서드에는 정확히 두 개의 PdfDocument 인스턴스를 받는 두 인자 오버로드도 있습니다. 다수의 문서를 일괄 병합할 때, 목록 과부하를 사용하십시오 — 이는 여러 두 인수 호출을 체이닝하는 것보다 효율적이며 소스를 단일 패스로 처리합니다.

참고해 주세요병합 목록에 있는 각 소스 PdfDocument은 호출 후에도 유효하며 변경되지 않습니다. merged 인스턴스는 새로운 독립 문서입니다. 더 이상 필요하지 않은 소스 문서는 close() 메서드를 사용하여 관련 네이티브 리소스를 해제하십시오.


PDF에서 페이지를 추가하거나 제거하는 방법은?

PdfDocument.copyPage, PdfDocument.copyPagesPdfDocument.removePages 메서드를 사용하여 개별 페이지를 한 문서에서 다른 문서로 복사하거나 완전히 삭제할 수 있습니다.

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/page-operations.java
import com.ironsoftware.ironpdf.*;
import java.util.Arrays;

// Generate a multi-page document using CSS page breaks
PdfDocument report = PdfDocument.renderHtmlAsPdf(
    "<p>Page 1 content</p>" +
    "<div style='page-break-after:always;'></div>" +
    "<p>Page 2 content</p>" +
    "<div style='page-break-after:always;'></div>" +
    "<p>Page 3 content</p>"
);

// Remove page 2 (zero-indexed — page index 1)
report.removePages(Arrays.asList(1));

// Save the two-page result
report.saveAs("two_page_report.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/page-operations.java
import com.ironsoftware.ironpdf.*;
import java.util.Arrays;

// Generate a multi-page document using CSS page breaks
PdfDocument report = PdfDocument.renderHtmlAsPdf(
    "<p>Page 1 content</p>" +
    "<div style='page-break-after:always;'></div>" +
    "<p>Page 2 content</p>" +
    "<div style='page-break-after:always;'></div>" +
    "<p>Page 3 content</p>"
);

// Remove page 2 (zero-indexed — page index 1)
report.removePages(Arrays.asList(1));

// Save the two-page result
report.saveAs("two_page_report.pdf");
JAVA

IronPDF에서의 페이지 인덱스는 0부터 시작합니다. 여러 페이지를 제거할 때는 루프 내에서 여러 번 호출하는 대신, 모든 인덱스를 단일 removePages 호출에 전달해야 합니다. 각 제거 작업은 이후 페이지 인덱스를 Shift하기 때문입니다. 전체 목록을 한 번에 전달하면 인덱스 드리프트를 방지합니다. 예를 들어, 5페이지 분량의 문서에서 2페이지와 4페이지를 제거하려면 Arrays.asList(1, 3)를 전달해야 하며, 두 번의 별도 호출을 수행해서는 안 됩니다.

외부 PDF의 페이지를 삽입하려면(예: 정적 템플릿의 법적 고지문을 추가하는 경우), PdfDocument.insertPdf을 사용하여 특정 위치에 외부 문서를 삽입하십시오. 수신 문서의 페이지 수는 삽입 후 즉시 업데이트됩니다.

css page-break-after:always CSS 속성은 HTML을 PDF로 렌더링할 때 페이지 나누기를 강제하는 표준 방법입니다. IronPDF는 최신 break-after: page CSS 속성도 지원합니다. 두 접근 방식 모두 특별한 Java 코드 필요 없이 예측 가능한 페이지 구분을 만듭니다.


Java에서 PDF를 암호로 보호하는 방법은?

IronPDF는 PDF에 두 개의 별개 암호를 지원합니다: 편집, 인쇄 및 복사 권한을 제어하는 소유자 암호와 문서 열기를 제어하는 사용자 암호입니다. 두 가지 모두 SecurityOptions 클래스를 통해 설정됩니다.

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/password-protect.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.security.*;

PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Secure Document</h1>");

SecurityOptions security = new SecurityOptions();

// Require a password to open the document
security.setUserPassword("user123");

// Require a separate password to edit, print, or copy content
security.setOwnerPassword("owner456");

// Restrict printing to prevent unauthorized reproduction
security.setAllowUserPrinting(PrintOptions.FullPrintQuality);

PdfSecurityManager securityManager = new PdfSecurityManager(pdf);
securityManager.setSecurityOptions(security);

pdf.saveAs("secure_document.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/password-protect.java
import com.ironsoftware.ironpdf.*;
import com.ironsoftware.ironpdf.security.*;

PdfDocument pdf = PdfDocument.renderHtmlAsPdf("<h1>Secure Document</h1>");

SecurityOptions security = new SecurityOptions();

// Require a password to open the document
security.setUserPassword("user123");

// Require a separate password to edit, print, or copy content
security.setOwnerPassword("owner456");

// Restrict printing to prevent unauthorized reproduction
security.setAllowUserPrinting(PrintOptions.FullPrintQuality);

PdfSecurityManager securityManager = new PdfSecurityManager(pdf);
securityManager.setSecurityOptions(security);

pdf.saveAs("secure_document.pdf");
JAVA

AllowUserPrinting 설정은 PrintOptions 열거형(enum)인 FullPrintQuality, LowQualityPrint 또는 NoPrint을 허용합니다. 소유자 암호가 설정되어 있지만 사용자 암호가 비어 있으면, 문서는 비밀번호 없이 열리지만 편집 및 기타 작업은 PDF 편집기에서 소유자 암호가 필요합니다.

경고PDF 암호 보호는 파일을 암호화하지만 적절한 접근 제어 시스템을 대체하지 않습니다. 전문 툴을 사용하는 의욕적인 사용자가 약한 암호에 브루트 포스 공격을 시도할 수 있습니다. 진정한 보안이 필요한 문서에는 강력하고 무작위로 생성된 암호를 사용하십시오.


동적 데이터와 함께 HTML 템플릿을 변환하는 방법은?

데이터 주도 HTML 템플릿에서 PDF를 생성하는 것은 IronPDF의 가장 일반적인 프로덕션 사용 사례 중 하나입니다. 일반적인 방법은 템플릿 라이브러리나 문자열 연산을 사용하여 Java에서 HTML 문자열을 생성한 다음, 완성된 문자열을 renderHtmlAsPdf로 전달하는 것입니다.

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/dynamic-template.java
import com.ironsoftware.ironpdf.*;

// Simulate data from a database or service layer
String customerName  = "Acme Corp";
String invoiceNumber = "INV-20240501";
String totalAmount   = "$1,250.00";
String dueDate       = "2024-06-01";

// Build the HTML template with real data injected
String html = "<!DOCTYPE html><html><head>" +
    "<style>body{font-family:Arial,sans-serif;margin:40px;}" +
    "table{width:100%;border-collapse:collapse;}" +
    "th,td{border:1px solid #ccc;padding:8px;text-align:left;}" +
    "th{background:#f4f4f4;}</style></head><body>" +
    "<h1>Invoice</h1>" +
    "<p><strong>Customer:</strong> " + customerName + "</p>" +
    "<p><strong>Invoice #:</strong> " + invoiceNumber + "</p>" +
    "<table><tr><th>Description</th><th>Amount</th></tr>" +
    "<tr><td>Professional Services</td><td>" + totalAmount + "</td></tr>" +
    "</table>" +
    "<p><strong>Due Date:</strong> " + dueDate + "</p>" +
    "</body></html>";

PdfDocument pdf = PdfDocument.renderHtmlAsPdf(html);
pdf.saveAs(invoiceNumber + ".pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/dynamic-template.java
import com.ironsoftware.ironpdf.*;

// Simulate data from a database or service layer
String customerName  = "Acme Corp";
String invoiceNumber = "INV-20240501";
String totalAmount   = "$1,250.00";
String dueDate       = "2024-06-01";

// Build the HTML template with real data injected
String html = "<!DOCTYPE html><html><head>" +
    "<style>body{font-family:Arial,sans-serif;margin:40px;}" +
    "table{width:100%;border-collapse:collapse;}" +
    "th,td{border:1px solid #ccc;padding:8px;text-align:left;}" +
    "th{background:#f4f4f4;}</style></head><body>" +
    "<h1>Invoice</h1>" +
    "<p><strong>Customer:</strong> " + customerName + "</p>" +
    "<p><strong>Invoice #:</strong> " + invoiceNumber + "</p>" +
    "<table><tr><th>Description</th><th>Amount</th></tr>" +
    "<tr><td>Professional Services</td><td>" + totalAmount + "</td></tr>" +
    "</table>" +
    "<p><strong>Due Date:</strong> " + dueDate + "</p>" +
    "</body></html>";

PdfDocument pdf = PdfDocument.renderHtmlAsPdf(html);
pdf.saveAs(invoiceNumber + ".pdf");
JAVA

더 큰 프로젝트의 경우 ThymeleafFreemarker 같은 Java 템플릿 라이브러리를 고려하여 HTML 템플릿을 별도의 파일로 관리하고, 컨텍스트 객체를 통해 데이터를 주입하며, 문자열 결합보다 템플릿 구문을 깨끗하게 유지하십시오. 두 라이브러리 모두 renderHtmlAsPdf로 직접 전달되는 일반 HTML 문자열을 생성합니다.

배치 작업에서 PDF를 생성할 때(예: 고객당 청구서 1장씩) 루프 시작 전에 ChromePdfRenderOptions를 한 번 인스턴스화한 후, 모든 렌더링 호출에서 동일한 인스턴스를 재사용하십시오. 호출 당 새로운 옵션 객체를 생성하는 것은 불필요한 객체 할당 오버헤드를 추가합니다.


Java에서 PDF에서 텍스트를 추출하는 방법은?

PdfDocument.extractAllText는 PDF의 모든 페이지에서 텍스트 콘텐츠를 모두 읽어와 하나의 문자열로 반환합니다. 이는 검색 인덱싱, 데이터 추출 및 렌더링 후 콘텐츠 검증에 유용합니다.

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/extract-text.java
import com.ironsoftware.ironpdf.*;
import java.nio.file.Paths;

// Open an existing PDF (or use the result of a render call)
PdfDocument pdf = PdfDocument.fromFile(Paths.get("output.pdf"));

// Extract all text content as a plain string
String text = pdf.extractAllText();
System.out.println(text);
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/extract-text.java
import com.ironsoftware.ironpdf.*;
import java.nio.file.Paths;

// Open an existing PDF (or use the result of a render call)
PdfDocument pdf = PdfDocument.fromFile(Paths.get("output.pdf"));

// Extract all text content as a plain string
String text = pdf.extractAllText();
System.out.println(text);
JAVA

반환된 문자열은 각 페이지에서 텍스트의 읽기 순서를 유지하지만 형식은 포함하지 않습니다. 열과 테이블 셀 간의 공백은 공백으로 나타납니다. 여러 논리적 섹션으로 구성된 PDF의 경우, extractTextFromPage(int pageIndex)는 단일 페이지의 텍스트를 분리하며, 이는 대용량 문서를 한 페이지씩 처리할 때 더 효율적입니다.

텍스트 추출 기능은 텍스트가 PDF 구조 내에서 실제 텍스트 객체로 저장된 PDF에서만 작동합니다. renderHtmlAsPdf로 생성된 PDF는 항상 해당 조건을 충족합니다. 페이지가 이미지인 스캔 문서는 텍스트 추출이 가능하기 전에 OCR이 필요합니다. IronOCR은 Java와 .NET 애플리케이션에 OCR 기능을 추가하는 Iron Software 라이브러리입니다.

이미지 추출 시 pdf.extractAllImages()을 사용하면, 문서에서 발견된 이미지마다 하나씩 BufferedImage 객체 목록이 반환됩니다. PDF에서 텍스트 추출 예제PDF에서 이미지 추출 예제의 전체 코드 패턴을 참조하십시오.


PDF 파일을 압축하는 방법은?

PdfDocument.compressImages는 포함된 이미지를 낮은 품질로 재인코딩하여 파일 크기를 줄입니다. 이는 특히 큰 사진이나 배너 이미지를 포함한 웹 페이지에서 생성된 PDF에 효과적입니다.

//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/compress-pdf.java
import com.ironsoftware.ironpdf.*;
import java.nio.file.Paths;

PdfDocument pdf = PdfDocument.fromFile(Paths.get("large_report.pdf"));

// Compress embedded images to 60% quality (0–100 scale)
pdf.compressImages(60);

pdf.saveAs("compressed_report.pdf");
//:path=/static-assets/pdf/content-code-examples/tutorials/html-to-pdf/compress-pdf.java
import com.ironsoftware.ironpdf.*;
import java.nio.file.Paths;

PdfDocument pdf = PdfDocument.fromFile(Paths.get("large_report.pdf"));

// Compress embedded images to 60% quality (0–100 scale)
pdf.compressImages(60);

pdf.saveAs("compressed_report.pdf");
JAVA

품질 값은 50에서 75 사이로 일반적으로 파일 크기를 40-70% 줄이며 화면 읽기에 적합한 시각적 충실도를 제공할 수 있습니다. 40 이하의 값은 사진에서 눈에 띄는 아티팩트를 도입할 수 있지만 대형 단색 영역을 가진 다이어그램 및 스크린샷에는 허용될 수 있습니다.

오버로드된 compressImages(int quality, boolean scaleExistingImages) 메서드는 PDF에 표시되는 크기보다 큰 이미지를 축소할지 여부를 지정하는 부울 값도 받아들입니다. 이 설정을 true로 지정하면 고해상도 이미지가 삽입되었으나 페이지에서 훨씬 작은 크기로 표시될 때 발생하는 불필요한 해상도를 제거하여 파일 크기를 더욱 줄일 수 있습니다. 이는 이미지가 레티나 디스플레이를 위해 2x 해상도로 제공되는 웹에서 PDF로의 변환에서 일반적입니다.

PDF 압축 예제는 압축 후 크기 감소를 확인하는 설명을 포함한 다중 페이지 문서에서 일괄 압축을 보여줍니다.


다음 단계

이 튜토리얼은 HTML에서 PDF로 변환하는 세 가지 방법, 설치, 라이선스 구성, 렌더링 옵션, 헤더와 푸터, 페이지 레이아웃 설정, 텍스트 추출 및 파일 압축을 다루었습니다.

IronPDF for Java 설명서에 있는 이 리소스를 탐색하여 더 깊이 알아보십시오:

  1. PDF 생성 설정 — 정밀한 렌더링 제어를 위해 DPI, 줌, 시간 초과 및 CSS 미디어 타입 구성.
  2. 헤더와 푸터HTML 헤더와 푸터 로고와 사용자 정의 레이아웃을 추가하십시오.
  3. 페이지 레이아웃 — 인쇄 준비된 출력을 위해 맞춤 여백용지 크기를 설정하십시오.
  4. 워터마크 — 문서 보안을 위해 배경 및 전경 워터마크를 적용하십시오.
  5. 콘텐츠 추출 — 다운스 트림 프로세싱을 위해 PDF에서 텍스트를 추출하고 이미지를 추출하십시오.
  6. 파일 압축 — 저장 및 이메일 전달을 위해 PDF 파일 크기 줄이기.
  7. API 레퍼런스 — 모든 클래스와 메서드에 대한 IronPDF Java API 레퍼런스를 탐색하십시오.

무료 체험을 시작하여 오늘 Java 애플리케이션에서 HTML을 PDF로 변환하기 시작하십시오. 배포할 준비가 되면, 라이선스 옵션 보기를 통해 프로젝트에 맞는 계획을 찾으십시오.

자주 묻는 질문

Java에서 HTML 문자열을 PDF로 변환하려면 어떻게 해야 하나요?

PdfDocument.renderHtmlAsPdf를 HTML 문자열과 함께 호출하세요. 상대적인 CSS, 이미지 및 스크립트 참조가 올바르게 해결될 수 있도록 선택적인 기본 경로를 두 번째 인수로 전달하세요. 반환된 PdfDocument에서 saveAs를 호출하여 파일을 쓰세요.

Java에서 URL을 PDF로 어떻게 변환하나요?

완전한 URL과 함께 PdfDocument.renderUrlAsPdf를 호출하세요. IronPDF가 페이지를 가져오고 JavaScript 실행을 기다렸다가 완전히 로드된 DOM을 PDF로 렌더링합니다.

Java에서 로컬 HTML 파일을 PDF로 변환하려면 어떻게 하나요?

절대 파일 경로와 함께 PdfDocument.renderHtmlFileAsPdf를 호출하세요. HTML 파일의 모든 상대 자산 참조가 해당 파일의 디렉토리에 대해 자동으로 해결됩니다.

Maven을 사용하여 Java 프로젝트에 IronPDF를 어떻게 설치하나요?

groupId com.ironsoftwareartifactId ironpdf와 함께 IronPDF 종속성을 pom.xml에 추가한 후, 프로젝트 루트에서 mvn install을 실행하세요.

IronPDF로 생성된 PDF에서 워터마크를 어떻게 제거하나요?

관련 있는 라이선스 키와 함께 License.setLicenseKey를 렌더링 호출 전 미리 호출하세요. 라이선스 키가 없으면 IronPDF는 모든 페이지에 타일된 워터마크를 찍습니다.

Java에서 PDF에 헤더 및 푸터를 어떻게 추가하나요?

TextHeaderFooter 인스턴스를 생성하고 {page}{total-pages} 같은 형식 토큰을 사용하여 텍스트 속성을 설정한 후, pdf.addTextHeaderspdf.addTextFooters를 호출하세요. 로고가 있는 스타일화된 헤더의 경우 HtmlHeaderFooter를 대신 사용하세요.

Java에서 PDF 페이지 여백과 용지 크기를 어떻게 설정하나요?

ChromePdfRenderOptions 인스턴스를 생성하고 setMarginTop, setMarginBottom, setMarginLeft, setMarginRight (밀리미터 단위) 및 setPaperSizePaperSize 열거 형 값으로 호출하세요. 렌더링 메서드에 옵션을 전달하세요.

Java에서 여러 PDF를 하나로 어떻게 병합하나요?

원하는 순서대로 문서들로 List를 생성하고 이를 PdfDocument.merge로 전달하세요. 이 메서드는 모든 소스의 페이지를 포함한 새로운 PdfDocument를 반환합니다.

Java에서 PDF에 비밀번호를 어떻게 설정하나요?

SecurityOptions 인스턴스를 생성하고 setUserPasswordsetOwnerPassword를 호출한 후, 문서를 저장하기 전에 PdfSecurityManager를 통해 적용하세요.

Java를 사용하여 PDF에서 텍스트를 추출하는 방법은 무엇인가요?

pdf.extractAllText()를 호출하여 모든 텍스트 콘텐츠를 단일 문자열로 가져옵니다. 특정 페이지에서 텍스트를 추출하려면 extractTextFromPage(int pageIndex)를 사용하세요.

커티스 차우
기술 문서 작성자

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.

커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다.

시작할 준비 되셨나요?
버전: 2026.5 just released
Still Scrolling Icon

아직도 스크롤하고 계신가요?

빠른 증거를 원하시나요?
샘플을 실행하세요 HTML이 PDF로 변환되는 것을 지켜보세요.