IronPDF와 PDFreactor의 비교
PDF (휴대용 문서 형식) 파일은 다양한 작업 환경에서 필수적인 부분이며, 송장 작성이나 제품 문서 준비와 같은 작업에서는 종종 필수적입니다. 그러나 현재 시장에는 많은 다른 PDF 도구가 존재하므로 어떤 것이 적합한지 어떻게 알 수 있을까요? 오늘 우리는 PDFreactor와 IronPDF의 기능, 지원, 라이선스 모델을 비교할 것입니다.
IronPDF와 PDFreactor 개요
IronPDF는 .NET 생태계 내에서 모든 PDF 관련 작업에 대해 포괄적인 솔루션을 제공하기 위해 설계된 강력한 .NET 라이브러리입니다. HTML, CSS, JavaScript, 다양한 이미지 형식을 지원하여 웹 기반 애플리케이션에 매우 적합합니다. PDF 생성, 편집, 서명 및 암호화 등 다양한 기능과 모던 .NET Framework와의 완벽한 통합으로 얄 IronPDF는 .NET 개발자에게 단 하나의 PDF 솔루션이 될 수 있습니다.
반면에, PDFreactor는 HTML을 PDF로 변환하는 데 전문적인 등급의 컨버터로, 고품질의 출력용 PDF를 제공하는 데 뛰어나며, 데이터 중심 문서, 보고서 또는 데이터 시트와 같은 문서를 변환하는 데 자주 사용됩니다. 복잡한 CSS 및 JavaScript를 처리하는 데 특히 강력하여 결과 PDF가 원래 웹 콘텐츠와 동일함을 보장합니다. 복잡한 레이아웃 및 스타일을 쉽게 처리할 수 있는 능력으로 인해 PDF 출력에 대한 정밀한 제어가 필요한 출판 및 기타 산업에 적합합니다.
플랫폼 간 호환성
IronPDF:
IronPDF는 다양한 플랫폼을 지원하여 선호하는 환경에서 작업할 수 있도록 보장합니다. 다음은 호환성의 세부 정보입니다:
-
.NET 버전:
- C#, VB.NET, F#
- .NET Core (8, 7, 6, 5 및 3.1+)
- .NET Standard (2.0+)
- .NET Framework (4.6.2+)
-
앱 환경: IronPDF는 Windows, Linux, Mac, Docker, Azure, AWS 환경에서 작동합니다.
-
IDE: Microsoft Visual Studio, JetBrains Rider & ReSharper와 같은 IDE와 함께 작동합니다.
- 운영 체제 및 프로세서: Windows, Mac, Linux, x64, x86, ARM을 포함한 여러 운영 체제 및 프로세서를 지원합니다.
자세한 정보는 IronPDF 호환성을 참조하세요.
PDFreactor
-
.NET 버전:
- .NET Core 2.1+
- .NET Framework 4.5+
-
지원: HTML5, CSS3, JavaScript, Java, Python, Docker 이미지, Node.js 등.
- 운영 체제: Windows, Linux, macOS 운영 체제 내에서 작동하며, AWS와 Azure와 같은 클라우드 기반 시스템에서도 작동합니다.
핵심 기능 비교: IronPDF vs. PDFreactor의 PDF 기능
IronPDF 기능
-
HTML을 PDF로 변환: IronPDF는 모던 웹 표준을 완벽히 지원하여 HTML 콘텐츠에서 픽셀 단위로 정확한 PDF를 일관되게 반환합니다.
-
PDF 파일 변환: HTML 이외의 파일 형식을 PDF로 변환해야 합니까? IronPDF는 다양한 파일 형식의 변환을 지원합니다; DOCX를 PDF로, RTF를 PDF로, 이미지를 PDF로, URL을 PDF로, 심지어 PDF를 HTML로 변환하여 원하는 문서 구조를 유지합니다.
-
보안 기능: IronPDF는 보안 기능 덕분에 모든 민감한 PDF 파일이 안전하다는 확신을 드립니다. IronPDF를 사용하여 PDF 파일을 암호화하고, 비밀번호를 설정하며, PDF 파일에 대한 권한을 설정하십시오.
- PDF 편집 기능: IronPDF로 PDF 파일을 쉽게 편집할 수 있습니다. IronPDF는 PDF 페이지에 헤더와 풋터를 추가하고 텍스트 및 이미지를 텍스트 및 이미지에 스탬프하고 PDF에 맞춤형 워터마크를 추가하고 PDF 양식을 작업하고 PDF 파일을 병합하는 등의 편집 기능을 제공합니다.
IronPDF가 제공하는 기능에 대한 자세한 정보는 IronPDF 기능을 참조하세요.
PDFreactor 기능
-
HTML을 PDF로 변환: PDFreactor 웹 서비스는 HTML을 PDF로 서버 쪽에서 변환하는 전문성을 지니며, 일반적으로 동적 데이터 중심 문서(송장, 양식, 보고서 등)의 변환과 복잡하고 고품질의 PDF 전자 배포에 사용됩니다.
-
인터랙티브 지원: JavaScript를 지원하여 PDFreactor는 버튼 및 양식과 같은 인터랙티브 요소를 PDF 내에서 기능을 유지하면서 포함할 수 있습니다.
- 고급 레이아웃 설계: PDFreactor는 페이지 레이아웃 제어, 다중 열 지원, PDF에 요소 추가, 요소 크기 조정 및 변환, 헤더 및 바닥글 추가 및 맞춤 페이지 크기 및 방향과 같은 고급 레이아웃 및 설계 기능을 제공합니다.
Bootstrap 및 현대 CSS 프레임워크 호환성
모던 웹 애플리케이션에서 PDF를 생성할 때, 부트스트랩과 CSS 프레임워크 지원은 필수적입니다. 부트스트랩 스타일의 웹 페이지를 코드 수정 없이 직접 PDF로 변환하는 능력은 디자인 일관성을 보장하며 개발 시간을 대폭 단축합니다.
IronPDF: 전체 부트스트랩 및 CSS 프레임워크 지원
- 부트스트랩 5: 완전한 flexbox 레이아웃 엔진, CSS 그리드, 유틸리티 클래스 및 모든 구성 요소 시스템
- 부트스트랩 4: 완전한 카드 구성 요소, 내비게이션 요소, flex 유틸리티 및 반응형 휴지점
- Tailwind CSS: 모든 유틸리티 기반 클래스가 브라우저 정확도로 렌더링됩니다
- 파운데이션: 완전한 그리드 시스템 및 구성 요소 라이브러리 지원
- 현대 CSS3: Flexbox, CSS Grid, 사용자 정의 속성, 애니메이션, 전환 및 변형
실제 예시 검증: IronPDF는 픽셀 단위로 정확한 부트스트랩 홈페이지와 모든 공식 예제를 성공적으로 렌더링합니다.
코드 예시: 주문 추적 대시보드
using IronPdf;
// Set your IronPDF license key
IronPdf.License.LicenseKey = "License-Key goes here";
var renderer = new ChromePdfRenderer();
string bootstrapTracking = @"
<!DOCTYPE html>
<html>
<head>
<link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
<div class='container my-5'>
<h1 class='mb-4'>Order Tracking - #ORD-2025-0428</h1>
<div class='row g-4 mb-4'>
<div class='col-md-4'>
<div class='card text-center bg-primary text-white h-100'>
<div class='card-body'>
<h3>Order Placed</h3>
<p class='mb-0'>April 20, 2025</p>
</div>
</div>
</div>
<div class='col-md-4'>
<div class='card text-center bg-info text-white h-100'>
<div class='card-body'>
<h3>Processing</h3>
<p class='mb-0'>April 21, 2025</p>
</div>
</div>
</div>
<div class='col-md-4'>
<div class='card text-center bg-light h-100'>
<div class='card-body'>
<h3 class='text-muted'>Delivered</h3>
<p class='mb-0 text-muted'>Est. April 25, 2025</p>
</div>
</div>
</div>
</div>
<div class='card shadow-sm mb-4'>
<div class='card-header bg-white'>
<h5 class='mb-0'>Shipping Timeline</h5>
</div>
<div class='card-body'>
<ul class='list-group list-group-flush'>
<li class='list-group-item d-flex'>
<span class='badge bg-success me-3'>✓</span>
<div class='flex-grow-1'>
<strong>Order Confirmed</strong>
<p class='mb-0 text-muted'>April 20, 2025 at 2:30 PM</p>
</div>
</li>
<li class='list-group-item d-flex'>
<span class='badge bg-success me-3'>✓</span>
<div class='flex-grow-1'>
<strong>Payment Processed</strong>
<p class='mb-0 text-muted'>April 20, 2025 at 2:35 PM</p>
</div>
</li>
<li class='list-group-item d-flex'>
<span class='badge bg-success me-3'>✓</span>
<div class='flex-grow-1'>
<strong>Order Shipped</strong>
<p class='mb-0 text-muted'>April 21, 2025 at 9:00 AM</p>
<small class='text-muted'>Tracking: TRK-9876543210</small>
</div>
</li>
<li class='list-group-item d-flex'>
<span class='badge bg-primary me-3'>→</span>
<div class='flex-grow-1'>
<strong>In Transit</strong>
<p class='mb-0 text-primary'>Currently en route to delivery location</p>
</div>
</li>
<li class='list-group-item d-flex'>
<span class='badge bg-secondary me-3'>○</span>
<div class='flex-grow-1'>
<strong>Out for Delivery</strong>
<p class='mb-0 text-muted'>Pending</p>
</div>
</li>
<li class='list-group-item d-flex'>
<span class='badge bg-secondary me-3'>○</span>
<div class='flex-grow-1'>
<strong>Delivered</strong>
<p class='mb-0 text-muted'>Est. April 25, 2025</p>
</div>
</li>
</ul>
</div>
</div>
<div class='card shadow-sm'>
<div class='card-header bg-primary text-white'>
<h5 class='mb-0'>Order Details</h5>
</div>
<div class='card-body'>
<div class='table-responsive'>
<table class='table mb-0'>
<thead class='table-light'>
<tr>
<th>Item</th>
<th>Quantity</th>
<th class='text-end'>Price</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Premium Widget Pro</strong></td>
<td>2</td>
<td class='text-end'>$199.98</td>
</tr>
<tr>
<td><strong>Standard Gadget</strong></td>
<td>1</td>
<td class='text-end'>$49.99</td>
</tr>
<tr>
<td colspan='2'><strong>Subtotal</strong></td>
<td class='text-end'><strong>$249.97</strong></td>
</tr>
<tr>
<td colspan='2'>Shipping</td>
<td class='text-end'>$12.50</td>
</tr>
<tr class='table-primary'>
<td colspan='2'><strong>Total</strong></td>
<td class='text-end'><strong>$262.47</strong></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(bootstrapTracking);
pdf.SaveAs("order-tracking.pdf");
using IronPdf;
// Set your IronPDF license key
IronPdf.License.LicenseKey = "License-Key goes here";
var renderer = new ChromePdfRenderer();
string bootstrapTracking = @"
<!DOCTYPE html>
<html>
<head>
<link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
<div class='container my-5'>
<h1 class='mb-4'>Order Tracking - #ORD-2025-0428</h1>
<div class='row g-4 mb-4'>
<div class='col-md-4'>
<div class='card text-center bg-primary text-white h-100'>
<div class='card-body'>
<h3>Order Placed</h3>
<p class='mb-0'>April 20, 2025</p>
</div>
</div>
</div>
<div class='col-md-4'>
<div class='card text-center bg-info text-white h-100'>
<div class='card-body'>
<h3>Processing</h3>
<p class='mb-0'>April 21, 2025</p>
</div>
</div>
</div>
<div class='col-md-4'>
<div class='card text-center bg-light h-100'>
<div class='card-body'>
<h3 class='text-muted'>Delivered</h3>
<p class='mb-0 text-muted'>Est. April 25, 2025</p>
</div>
</div>
</div>
</div>
<div class='card shadow-sm mb-4'>
<div class='card-header bg-white'>
<h5 class='mb-0'>Shipping Timeline</h5>
</div>
<div class='card-body'>
<ul class='list-group list-group-flush'>
<li class='list-group-item d-flex'>
<span class='badge bg-success me-3'>✓</span>
<div class='flex-grow-1'>
<strong>Order Confirmed</strong>
<p class='mb-0 text-muted'>April 20, 2025 at 2:30 PM</p>
</div>
</li>
<li class='list-group-item d-flex'>
<span class='badge bg-success me-3'>✓</span>
<div class='flex-grow-1'>
<strong>Payment Processed</strong>
<p class='mb-0 text-muted'>April 20, 2025 at 2:35 PM</p>
</div>
</li>
<li class='list-group-item d-flex'>
<span class='badge bg-success me-3'>✓</span>
<div class='flex-grow-1'>
<strong>Order Shipped</strong>
<p class='mb-0 text-muted'>April 21, 2025 at 9:00 AM</p>
<small class='text-muted'>Tracking: TRK-9876543210</small>
</div>
</li>
<li class='list-group-item d-flex'>
<span class='badge bg-primary me-3'>→</span>
<div class='flex-grow-1'>
<strong>In Transit</strong>
<p class='mb-0 text-primary'>Currently en route to delivery location</p>
</div>
</li>
<li class='list-group-item d-flex'>
<span class='badge bg-secondary me-3'>○</span>
<div class='flex-grow-1'>
<strong>Out for Delivery</strong>
<p class='mb-0 text-muted'>Pending</p>
</div>
</li>
<li class='list-group-item d-flex'>
<span class='badge bg-secondary me-3'>○</span>
<div class='flex-grow-1'>
<strong>Delivered</strong>
<p class='mb-0 text-muted'>Est. April 25, 2025</p>
</div>
</li>
</ul>
</div>
</div>
<div class='card shadow-sm'>
<div class='card-header bg-primary text-white'>
<h5 class='mb-0'>Order Details</h5>
</div>
<div class='card-body'>
<div class='table-responsive'>
<table class='table mb-0'>
<thead class='table-light'>
<tr>
<th>Item</th>
<th>Quantity</th>
<th class='text-end'>Price</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Premium Widget Pro</strong></td>
<td>2</td>
<td class='text-end'>$199.98</td>
</tr>
<tr>
<td><strong>Standard Gadget</strong></td>
<td>1</td>
<td class='text-end'>$49.99</td>
</tr>
<tr>
<td colspan='2'><strong>Subtotal</strong></td>
<td class='text-end'><strong>$249.97</strong></td>
</tr>
<tr>
<td colspan='2'>Shipping</td>
<td class='text-end'>$12.50</td>
</tr>
<tr class='table-primary'>
<td colspan='2'><strong>Total</strong></td>
<td class='text-end'><strong>$262.47</strong></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(bootstrapTracking);
pdf.SaveAs("order-tracking.pdf");
Imports IronPdf
' Set your IronPDF license key
IronPdf.License.LicenseKey = "License-Key goes here"
Dim renderer As New ChromePdfRenderer()
Dim bootstrapTracking As String = "
<!DOCTYPE html>
<html>
<head>
<link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
<div class='container my-5'>
<h1 class='mb-4'>Order Tracking - #ORD-2025-0428</h1>
<div class='row g-4 mb-4'>
<div class='col-md-4'>
<div class='card text-center bg-primary text-white h-100'>
<div class='card-body'>
<h3>Order Placed</h3>
<p class='mb-0'>April 20, 2025</p>
</div>
</div>
</div>
<div class='col-md-4'>
<div class='card text-center bg-info text-white h-100'>
<div class='card-body'>
<h3>Processing</h3>
<p class='mb-0'>April 21, 2025</p>
</div>
</div>
</div>
<div class='col-md-4'>
<div class='card text-center bg-light h-100'>
<div class='card-body'>
<h3 class='text-muted'>Delivered</h3>
<p class='mb-0 text-muted'>Est. April 25, 2025</p>
</div>
</div>
</div>
</div>
<div class='card shadow-sm mb-4'>
<div class='card-header bg-white'>
<h5 class='mb-0'>Shipping Timeline</h5>
</div>
<div class='card-body'>
<ul class='list-group list-group-flush'>
<li class='list-group-item d-flex'>
<span class='badge bg-success me-3'>✓</span>
<div class='flex-grow-1'>
<strong>Order Confirmed</strong>
<p class='mb-0 text-muted'>April 20, 2025 at 2:30 PM</p>
</div>
</li>
<li class='list-group-item d-flex'>
<span class='badge bg-success me-3'>✓</span>
<div class='flex-grow-1'>
<strong>Payment Processed</strong>
<p class='mb-0 text-muted'>April 20, 2025 at 2:35 PM</p>
</div>
</li>
<li class='list-group-item d-flex'>
<span class='badge bg-success me-3'>✓</span>
<div class='flex-grow-1'>
<strong>Order Shipped</strong>
<p class='mb-0 text-muted'>April 21, 2025 at 9:00 AM</p>
<small class='text-muted'>Tracking: TRK-9876543210</small>
</div>
</li>
<li class='list-group-item d-flex'>
<span class='badge bg-primary me-3'>→</span>
<div class='flex-grow-1'>
<strong>In Transit</strong>
<p class='mb-0 text-primary'>Currently en route to delivery location</p>
</div>
</li>
<li class='list-group-item d-flex'>
<span class='badge bg-secondary me-3'>○</span>
<div class='flex-grow-1'>
<strong>Out for Delivery</strong>
<p class='mb-0 text-muted'>Pending</p>
</div>
</li>
<li class='list-group-item d-flex'>
<span class='badge bg-secondary me-3'>○</span>
<div class='flex-grow-1'>
<strong>Delivered</strong>
<p class='mb-0 text-muted'>Est. April 25, 2025</p>
</div>
</li>
</ul>
</div>
</div>
<div class='card shadow-sm'>
<div class='card-header bg-primary text-white'>
<h5 class='mb-0'>Order Details</h5>
</div>
<div class='card-body'>
<div class='table-responsive'>
<table class='table mb-0'>
<thead class='table-light'>
<tr>
<th>Item</th>
<th>Quantity</th>
<th class='text-end'>Price</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Premium Widget Pro</strong></td>
<td>2</td>
<td class='text-end'>$199.98</td>
</tr>
<tr>
<td><strong>Standard Gadget</strong></td>
<td>1</td>
<td class='text-end'>$49.99</td>
</tr>
<tr>
<td colspan='2'><strong>Subtotal</strong></td>
<td class='text-end'><strong>$249.97</strong></td>
</tr>
<tr>
<td colspan='2'>Shipping</td>
<td class='text-end'>$12.50</td>
</tr>
<tr class='table-primary'>
<td colspan='2'><strong>Total</strong></td>
<td class='text-end'><strong>$262.47</strong></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</body>
</html>"
Dim pdf = renderer.RenderHtmlAsPdf(bootstrapTracking)
pdf.SaveAs("order-tracking.pdf")
출력: 부트스트랩 5의 그리드 시스템, 카드 구성 요소, 배지, 목록 그룹, 반응형 테이블 및 flexbox 레이아웃으로 전문적인 주문 추적 PDF를 생성하며 모두 완벽한 색상 정확도와 간격으로 렌더됩니다.
PDFreactor: Java 종속성 있는 부트스트랩 지원
PDFreactor는 Prince XML 엔진을 사용하여 견고한 부트스트랩 지원을 제공하지만, 아키텍처 고려 사항이 있습니다:
- 우수한 부트스트랩 4/5 지원: Prince XML은 현대적 프레임워크를 적절히 처리합니다
- Java 요구 사항: PDFreactor는 Java에서 실행되며, .NET 애플리케이션 배포에 복잡성을 추가합니다
- 서버 기반 아키텍처: 전용 서버 인프라가 필요합니다
- 라이선스 모델: 개발자별 라이선스 대신 서버별 라이선스
개발 영향: PDFreactor는 Bootstrap을 효과적으로 처리하지만, Java 종속성 및 서버 요구 사항은 .NET 팀에 추가적인 운영 복잡성을 추가하여 추가 인프라 관리와 크로스 플랫폼 조정을 요구합니다.
포괄적인 Bootstrap 프레임워크 가이드와 CSS3 렌더링 기능에 대해서는 Bootstrap & Flexbox CSS Guide를 참조하세요.
IronPDF와 PDFreactor 간의 주요 기능 비교
이제 PDF 파일 작업 시 직면할 수 있는 몇 가지 일반적인 사용 사례를 자세히 살펴보겠습니다. 이 섹션에서는 이러한 사용 사례를 가져와 IronPDF와 PDFreactor가 이를 처리하는 방식을 비교합니다.
HTML을 PDF로 변환
IronPDF:
using IronPdf;
// Enable local disk access or cross-origin requests
Installation.EnableWebSecurity = true;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from an HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
// Export to a file or Stream
pdf.SaveAs("output.pdf");
// Advanced Example with HTML Assets
// Load external html assets: images, CSS and JavaScript.
// An optional BasePath 'c:\site\assets\' is set as the file location to load assets from
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"c:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");
using IronPdf;
// Enable local disk access or cross-origin requests
Installation.EnableWebSecurity = true;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from an HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
// Export to a file or Stream
pdf.SaveAs("output.pdf");
// Advanced Example with HTML Assets
// Load external html assets: images, CSS and JavaScript.
// An optional BasePath 'c:\site\assets\' is set as the file location to load assets from
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"c:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");
Imports IronPdf
' Enable local disk access or cross-origin requests
Installation.EnableWebSecurity = True
' Instantiate Renderer
Dim renderer = New ChromePdfRenderer()
' Create a PDF from an HTML string using C#
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>")
' Export to a file or Stream
pdf.SaveAs("output.pdf")
' Advanced Example with HTML Assets
' Load external html assets: images, CSS and JavaScript.
' An optional BasePath 'c:\site\assets\' is set as the file location to load assets from
Dim myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", "c:\site\assets\")
myAdvancedPdf.SaveAs("html-with-assets.pdf")
PDFreactor:
using System.IO;
using RealObjects.PDFreactor.Webservice.Client;
PDFreactor pdfReactor = new PDFreactor("https://cloud.pdfreactor.com/service/rest") {
Timeout = 0
};
var config = new Configuration
{
Document = "http://www.pdfreactor.com/product/samples/textbook/textbook.html"
};
Result data = pdfReactor.Convert(config);
BinaryWriter binWriter = new BinaryWriter(new FileStream("test.pdf",
FileMode.Create,
FileAccess.Write));
binWriter.Write(data.Document);
binWriter.Close();
using System.IO;
using RealObjects.PDFreactor.Webservice.Client;
PDFreactor pdfReactor = new PDFreactor("https://cloud.pdfreactor.com/service/rest") {
Timeout = 0
};
var config = new Configuration
{
Document = "http://www.pdfreactor.com/product/samples/textbook/textbook.html"
};
Result data = pdfReactor.Convert(config);
BinaryWriter binWriter = new BinaryWriter(new FileStream("test.pdf",
FileMode.Create,
FileAccess.Write));
binWriter.Write(data.Document);
binWriter.Close();
Imports System.IO
Imports RealObjects.PDFreactor.Webservice.Client
Private pdfReactor As New PDFreactor("https://cloud.pdfreactor.com/service/rest") With {.Timeout = 0}
Private config = New Configuration With {.Document = "http://www.pdfreactor.com/product/samples/textbook/textbook.html"}
Private data As Result = pdfReactor.Convert(config)
Private binWriter As New BinaryWriter(New FileStream("test.pdf", FileMode.Create, FileAccess.Write))
binWriter.Write(data.Document)
binWriter.Close()
IronPDF는 ChromePdfRenderer와 최신 웹 표준의 지원 덕분에 고품질 PDF 파일을 제공합니다. HTML에서 PDF로 변환할 때 IronPDF를 사용하면 HTML 문서, 웹 페이지 등에서 픽셀 정밀 PDF를 만들 수 있습니다. PDFreactor는 HTML을 PDF로 변환할 수 있는 능력으로 자랑하며, 고품질의 PDF 문서를 제공하지만, 더 많은 코드 줄이 필요한 수동적인 접근 방식을 취합니다.
HTML을 PDF로 변환하기 위한 IronPDF의 추가 예제를 보려면 IronPDF HTML to PDF를 방문하세요.
PDF 문서 암호화
IronPDF:
using IronPdf;
using System;
// Open an Encrypted File, alternatively create a new PDF from Html
var pdf = PdfDocument.FromFile("encrypted.pdf", "password");
// Edit file metadata
pdf.MetaData.Author = "Satoshi Nakamoto";
pdf.MetaData.Keywords = "SEO, Friendly";
pdf.MetaData.ModifiedDate = DateTime.Now;
// Edit file security settings
// The following code makes a PDF read only and will disallow copy & paste and printing
pdf.SecuritySettings.RemovePasswordsAndEncryption();
pdf.SecuritySettings.MakePdfDocumentReadOnly("secret-key");
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserFormData = false;
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;
// Change or set the document encryption password
pdf.Password = "my-password";
pdf.SaveAs("secured.pdf");
using IronPdf;
using System;
// Open an Encrypted File, alternatively create a new PDF from Html
var pdf = PdfDocument.FromFile("encrypted.pdf", "password");
// Edit file metadata
pdf.MetaData.Author = "Satoshi Nakamoto";
pdf.MetaData.Keywords = "SEO, Friendly";
pdf.MetaData.ModifiedDate = DateTime.Now;
// Edit file security settings
// The following code makes a PDF read only and will disallow copy & paste and printing
pdf.SecuritySettings.RemovePasswordsAndEncryption();
pdf.SecuritySettings.MakePdfDocumentReadOnly("secret-key");
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserFormData = false;
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;
// Change or set the document encryption password
pdf.Password = "my-password";
pdf.SaveAs("secured.pdf");
Imports IronPdf
Imports System
' Open an Encrypted File, alternatively create a new PDF from Html
Private pdf = PdfDocument.FromFile("encrypted.pdf", "password")
' Edit file metadata
pdf.MetaData.Author = "Satoshi Nakamoto"
pdf.MetaData.Keywords = "SEO, Friendly"
pdf.MetaData.ModifiedDate = DateTime.Now
' Edit file security settings
' The following code makes a PDF read only and will disallow copy & paste and printing
pdf.SecuritySettings.RemovePasswordsAndEncryption()
pdf.SecuritySettings.MakePdfDocumentReadOnly("secret-key")
pdf.SecuritySettings.AllowUserAnnotations = False
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SecuritySettings.AllowUserFormData = False
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights
' Change or set the document encryption password
pdf.Password = "my-password"
pdf.SaveAs("secured.pdf")
PDFreactor:
PDFreactor는 HTML에서 PDF로 변환 도구로 주로 알려져 있기 때문에 PDF 암호화를 위한 내장 지원을 제공하지 않습니다.
IronPDF는 명확한 C# 메소드를 통해 PDF 암호화를 단순화하고 PDF 암호화를 위한 강력하면서도 간단한 도구를 제공합니다. IronPDF를 사용하면 보안 설정까지 포함하여 전체 프로세스를 완벽하게 컨트롤할 수 있습니다. PDFreactor를 사용하는 경우, PDF 암호화 작업을 처리할 수 있는 서드파티 라이브러리를 찾아야 하며, PDFreactor는 이를 현재 지원하지 않습니다.
더 많은 암호화 예제를 보려면 이 주제에 대한 IronPDF의 사용 방법 가이드를 방문하세요.
PDF 콘텐츠 수정하기
IronPDF:
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("novel.pdf");
// Redact 'are' phrase from all pages
pdf.RedactTextOnAllPages("are");
pdf.SaveAs("redacted.pdf");
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("novel.pdf");
// Redact 'are' phrase from all pages
pdf.RedactTextOnAllPages("are");
pdf.SaveAs("redacted.pdf");
Imports IronPdf
Private pdf As PdfDocument = PdfDocument.FromFile("novel.pdf")
' Redact 'are' phrase from all pages
pdf.RedactTextOnAllPages("are")
pdf.SaveAs("redacted.pdf")
PDFreactor:
PDFreactor는 HTML 콘텐츠로부터 PDF 문서를 생성하고 이러한 PDF를 디자인하는 데 주로 기능이 집중되어 있기 때문에 직접적인 비공개 처리 기능을 지원하지 않습니다.
IronPDF는 비공개 처리 도구를 제공하여 몇 줄의 코드만으로 PDF 문서 내의 콘텐츠를 비공개 처리할 수 있도록 간결하고 사용하기 쉬운 도구를 제공합니다. 그러나 PDFreactor는 내장 비공개 처리 도구를 제공하지 않습니다.
PDF 서명하기
IronPDF:
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>foo</h1>");
// Create X509Certificate2 object with X509KeyStorageFlags set to Exportable
X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable);
// Create PdfSignature object
var sig = new PdfSignature(cert);
// Sign PDF document
pdf.Sign(sig);
pdf.SaveAs("signed.pdf");
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>foo</h1>");
// Create X509Certificate2 object with X509KeyStorageFlags set to Exportable
X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable);
// Create PdfSignature object
var sig = new PdfSignature(cert);
// Sign PDF document
pdf.Sign(sig);
pdf.SaveAs("signed.pdf");
Imports IronPdf
Imports IronPdf.Signing
Imports System.Security.Cryptography.X509Certificates
Private renderer As New ChromePdfRenderer()
Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>foo</h1>")
' Create X509Certificate2 object with X509KeyStorageFlags set to Exportable
Private cert As New X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable)
' Create PdfSignature object
Private sig = New PdfSignature(cert)
' Sign PDF document
pdf.Sign(sig)
pdf.SaveAs("signed.pdf")
PDFreactor:
PDFreactor는 디지털 서명을 직접적으로 지원하지 않습니다.
IronPDF의 디지털 서명 기능을 통해 PDF 서명을 자동화하는 쉬운 방법을 제공합니다. PDFreactor는 PDF 문서에 디지털 서명을 적용하는 데 대한 지원을 제공하지 않습니다.
IronPDF를 사용하여 PDF 문서에 디지털 서명을 적용하는 방법에 대한 내용을 보려면이 도구에 대한 사용 방법 가이드를 방문하세요.
PDF 페이지에 워터마크 적용
IronPDF:
using IronPdf;
// Stamps a Watermark onto a new or existing PDF
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf/");
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center);
pdf.SaveAs(@"C:\Path\To\Watermarked.pdf");
using IronPdf;
// Stamps a Watermark onto a new or existing PDF
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf/");
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center);
pdf.SaveAs(@"C:\Path\To\Watermarked.pdf");
Imports IronPdf
' Stamps a Watermark onto a new or existing PDF
Private renderer = New ChromePdfRenderer()
Private pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf/")
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center)
pdf.SaveAs("C:\Path\To\Watermarked.pdf")
PDFreactor:
PDFreactor는 워터마크를 직접적으로 지원하지 않습니다.
IronPDF의 내장 워터마크 도구는 HTML과 CSS를 사용하여 전체 프로세스를 완벽하게 제어하면서 몇 줄의 코드만으로 PDF 페이지에 워터마크를 쉽게 적용할 수 있도록 합니다.
IronPDF의 워터마크 도구를 더 보고 싶으신가요? 이 도구에 대한 유용한 사용 방법 가이드를 방문하세요!
PDF 문서에 이미지 및 텍스트 스탬프 찍기
IronPDF:
using IronPdf;
using IronPdf.Editing;
using System;
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>");
// Create text stamper
TextStamper textStamper = new TextStamper()
{
Text = "Text Stamper!",
FontFamily = "Bungee Spice",
UseGoogleFont = true,
FontSize = 30,
IsBold = true,
IsItalic = true,
VerticalAlignment = VerticalAlignment.Top,
};
// Stamp the text stamper
pdf.ApplyStamp(textStamper);
pdf.SaveAs("stampText.pdf");
// Create image stamper
ImageStamper imageStamper = new ImageStamper(new Uri("/img/svgs/iron-pdf-logo.svg"))
{
VerticalAlignment = VerticalAlignment.Top,
};
// Stamp the image stamper
pdf.ApplyStamp(imageStamper, 0);
pdf.SaveAs("stampImage.pdf");
using IronPdf;
using IronPdf.Editing;
using System;
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>");
// Create text stamper
TextStamper textStamper = new TextStamper()
{
Text = "Text Stamper!",
FontFamily = "Bungee Spice",
UseGoogleFont = true,
FontSize = 30,
IsBold = true,
IsItalic = true,
VerticalAlignment = VerticalAlignment.Top,
};
// Stamp the text stamper
pdf.ApplyStamp(textStamper);
pdf.SaveAs("stampText.pdf");
// Create image stamper
ImageStamper imageStamper = new ImageStamper(new Uri("/img/svgs/iron-pdf-logo.svg"))
{
VerticalAlignment = VerticalAlignment.Top,
};
// Stamp the image stamper
pdf.ApplyStamp(imageStamper, 0);
pdf.SaveAs("stampImage.pdf");
Imports IronPdf
Imports IronPdf.Editing
Imports System
Private renderer As New ChromePdfRenderer()
Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>")
' Create text stamper
Private textStamper As New TextStamper() With {
.Text = "Text Stamper!",
.FontFamily = "Bungee Spice",
.UseGoogleFont = True,
.FontSize = 30,
.IsBold = True,
.IsItalic = True,
.VerticalAlignment = VerticalAlignment.Top
}
' Stamp the text stamper
pdf.ApplyStamp(textStamper)
pdf.SaveAs("stampText.pdf")
' Create image stamper
Dim imageStamper As New ImageStamper(New Uri("/img/svgs/iron-pdf-logo.svg")) With {.VerticalAlignment = VerticalAlignment.Top}
' Stamp the image stamper
pdf.ApplyStamp(imageStamper, 0)
pdf.SaveAs("stampImage.pdf")
PDFreactor:
PDFreactor는 직접적인 스탬핑을 지원하지 않습니다.
IronPDF는 PDF 문서에 텍스트 및 이미지 스탬프를 찍는 강력한 도구를 제공합니다. HTML과 CSS와 유사한 접근 방식으로, 스탬핑 프로세스를 완벽하게 제어할 수 있습니다. 그러나 PDFreactor는 내장 스탬핑 도구를 제공하지 않습니다.
IronPDF의 이미지 및 텍스트 스탬핑 도구에 대해 더 알고 싶으시면, 반드시 우리의 사용 방법 가이드를 방문하세요.
DOCX를 PDF로 변환하기
IronPDF:
using IronPdf;
// Instantiate Renderer
DocxToPdfRenderer renderer = new DocxToPdfRenderer();
// Render from DOCX file
PdfDocument pdf = renderer.RenderDocxAsPdf("Modern-chronological-resume.docx");
// Save the PDF
pdf.SaveAs("pdfFromDocx.pdf");
using IronPdf;
// Instantiate Renderer
DocxToPdfRenderer renderer = new DocxToPdfRenderer();
// Render from DOCX file
PdfDocument pdf = renderer.RenderDocxAsPdf("Modern-chronological-resume.docx");
// Save the PDF
pdf.SaveAs("pdfFromDocx.pdf");
Imports IronPdf
' Instantiate Renderer
Private renderer As New DocxToPdfRenderer()
' Render from DOCX file
Private pdf As PdfDocument = renderer.RenderDocxAsPdf("Modern-chronological-resume.docx")
' Save the PDF
pdf.SaveAs("pdfFromDocx.pdf")
PDFreactor:
PDFreactor는 주로 HTML에서 PDF로의 변환에 중점을 두고 있기 때문에 DOCX를 PDF로 직접 변환하는 것을 지원하지 않습니다.
IronPDF를 사용하면 간결하고 사용하기 쉬운 DOCX 변환 도구로 DOCX 파일을 변환할 수 있습니다. PDFreactor를 사용하는 경우, PDFreactor가 이러한 변환에 대한 지원을 제공하지 않으므로 DOCX에서 PDF로 변환할 수 있는 라이브러리를 설치해야 합니다.
IronPDF의 DOCX에서 PDF로 변환하는 도구에 대한 자세한 내용은 이 도움말 사용 방법 가이드를 방문하세요.
기능 비교 요약

자세한 코드 예제는 IronPDF 코드 예제 페이지를 방문하세요.
가격 및 라이선스: IronPDF vs. PDFreactor
IronPDF
IronPDF는 다양한 수준과 추가 기능을 제공하는 라이선스 구매 옵션이 있습니다. 개발자는 또한 Iron Suite를 구매하여, 두 개 제품의 가격으로 Iron Software의 모든 제품에 접근할 수 있습니다. 라이선스를 구매할 준비가 되지 않았다면, IronPDF는 30일 동안 지속되는 무료 체험판을 제공합니다.
- 영구 라이선스: 팀의 크기, 프로젝트 요구 사항 및 위치 수에 따라 다양한 영구 라이선스를 제공합니다. 각 라이선스 유형에는 이메일 지원이 포함됩니다.
- Lite License: 이 라이선스는 $799 비용이 들며, 하나의 개발자, 하나의 위치 및 하나의 프로젝트를 지원합니다.
- Plus License: 세 명의 개발자, 세 곳의 위치, 세 개의 프로젝트를 지원하며, Lite License 다음 단계이며 $1,199 비용이 듭니다. Plus 라이선스는 기본 이메일 지원 외에도 채팅 지원 및 전화 지원을 제공합니다.
- Professional License: 이 라이선스는 더 큰 팀에 적합하며, 10명의 개발자, 10개의 위치 및 10개의 프로젝트를 $2,399에 지원합니다. 그것은 이전 등급과 동일한 연락 지원 채널을 제공하면서도 화면 공유 지원을 추가로 제공합니다.
- 로열티 없는 재배포: IronPDF의 라이선스는 추가 $2,399에 로열티 없는 재배포 커버리지를 제공합니다.
- 끊김 없는 제품 지원: IronPDF는 지속적인 제품 업데이트, 보안 기능 업그레이드, 그리고 엔지니어 팀의 지원을 연간 $1,199 또는 5년 커버리지에 대한 일회성 구매 $2,399를 통해 제공합니다.
- Iron Suite: $1,498 가격에 Iron Software의 모든 제품에 접근할 수 있으며, 여기에 IronPDF, IronOCR, IronWord, IronXL, IronBarcode, IronQR, IronZIP, IronPrint, IronWebScraper가 포함됩니다.

PDFreactor
-
CPU License: PDFreactor의 기본 비용으로, 4개의 CPU 코드를 지원하고 첫 해 지원 및 유지보수를 포함하여 $2,950에 가격이 설정되어 있습니다.
- 애드온: PDFreactor는 라이선스 외에도 다음과 같은 애드온을 제공합니다; 래스터 이미지 출력 애드온, 1년 지원 및 유지 보수 연장, CPU 라이선스 업그레이드.
문서 및 지원: IronPDF vs. PDFreactor
IronPDF
IronPDF는 광범위한 문서화 및 지원을 제공하는 데 탁월합니다:
- 종합 문서: 모든 기능을 다룬 광범위하고 사용자 친화적인 문서입니다.
- 24/5 지원: 활동적인 엔지니어 지원이 가능합니다.
- 비디오 튜토리얼: YouTube에서 단계별 비디오 가이드를 제공합니다.
- 커뮤니티 포럼: 추가 지원을 위한 참여 커뮤니티입니다.
- 정기 업데이트: 최신 기능과 보안 패치를 보장하기 위해 월별 제품 업데이트를 제공합니다.
자세한 내용은 IronPDF의 광범위한 문서화를 확인하고, Iron Software YouTube 채널을 방문하세요.
PDFreactor
- 상세한 문서: HTML에서 PDF로의 변환의 모든 측면을 다룹니다.
- 이메일 지원: 기술 및 라이선스 문의를 위한 이메일 지원을 제공합니다.
- 커뮤니티 포럼: 다른 사용자 및 개발자와 소통하세요.
- 지식 베이스: 기사 및 문제 해결 가이드에 접근하세요.
- 전문 서비스: 복잡한 구현을 위한 유료 지원.
결론
HTML을 PDF로 변환할 때, IronPDF와 PDFreactor는 모두 강력한 경쟁자이며, 둘 다 HTML 콘텐츠로부터 PDF 문서를 만들 수 있는 완전한 기능을 제공한다. 그러나 암호화, 워터마크 추가, HTML 외의 파일 형식을 PDF로 변환하는 것과 같은 더 복잡한 작업을 처리할 수 있는 PDF 도구를 찾고 있다면, IronPDF는 당신에게 적합한 도구이다.
모던 .NET Framework와의 호환성, 훌륭한 지원을 갖춘 광범위한 기능 세트로 IronPDF는 강력한 도구이다. PDFreactor는 그 자체로 강력한 도구이지만, IronPDF가 제공하는 일부 고급 기능과 유연성이 부족하다.
30일 무료 체험판을 통해 제공되는 기능을 확인할 수 있습니다.
자주 묻는 질문
C#에서 HTML을 PDF로 변환하는 방법은 무엇인가요?
IronPDF의 RenderHtmlAsPdf 메서드를 사용하여 HTML 문자열을 PDF로 변환할 수 있습니다. 또한 RenderHtmlFileAsPdf 사용하여 HTML 파일을 PDF로 변환할 수도 있습니다.
IronPDF와 PDFreactor의 주요 차이점은 무엇입니까?
IronPDF는 PDF 생성, 편집, 서명 및 암호화와 함께 HTML, CSS, JavaScript 및 다양한 이미지 형식에 대한 강력한 지원을 제공하며, PDFreactor는 인쇄 준비된 PDF를 위해 복잡한 CSS와 JavaScript를 다루는 데 뛰어난 고품질 HTML에서 PDF로의 변환에 중점을 둡니다.
IronPDF는 여러 플랫폼에서 사용할 수 있습니까?
네, IronPDF는 Windows, Linux, macOS, Docker, Azure 및 AWS를 비롯한 여러 플랫폼을 지원합니다. 이는 .NET Core, .NET Standard 및 .NET Framework와 같은 다양한 .NET 버전과 호환됩니다.
IronPDF는 PDF 문서에 디지털 서명을 추가할 수 있는 기능을 제공합니까?
네, IronPDF는 PDF에 디지털 서명을 적용하는 직관적인 방법을 제공합니다.
IronPDF 사용자를 위한 지원 옵션은 무엇인가요?
IronPDF는 포괄적인 지원을 제공하여 광범위한 문서, 24/5 엔지니어 지원, 비디오 튜토리얼, 커뮤니티 포럼 및 사용자를 지원하기 위한 정기 업데이트를 포함합니다.
IronPDF는 어떤 종류의 라이선스를 제공합니까?
IronPDF는 영구 라이선스 및 메일 지원과 로열티 없는 재배포와 같은 혜택이 있는 suite 옵션을 포함한 다양한 라이선스 옵션을 제공합니다.
IronPDF는 PDF에서 복잡한 CSS와 JavaScript를 어떻게 처리합니까?
IronPDF는 PDF에서 복잡한 CSS와 JavaScript를 지원하여 복잡한 디자인과 상호작용 요소를 포함한 웹 기반 문서 생성을 이상적으로 만들어 줍니다.
IronPDF를 사용하여 PDF 문서를 암호화할 수 있습니까?
예, IronPDF는 PDF 암호화를 위한 기본 지원을 제공하여 강력한 암호 보호로 문서를 보안할 수 있게 해줍니다.
IronPDF의 HTML 외의 변환 기능은 무엇입니까?
IronPDF는 DOCX, RTF, 이미지와 같은 다양한 파일 형식을 PDF로 변환하는 것을 지원하며, 원하는 문서 구조를 유지합니다.
IronPDF로 PDF 파일에 워터마크와 스탬프를 적용할 수 있습니까?
예, IronPDF는 사용자에게 HTML과 CSS를 사용하여 PDF 문서에 워터마크와 스탬프를 추가할 수 있게 하여 외관에 대한 완전한 제어를 제공합니다.



