IronPDF와 PDFNet의 비교
1. 서론
.NET Framework에 완벽한 PDF 도구를 찾고 있습니까?
이 글에서는 C# (가장 인기 있는 프로그래밍 언어 중 하나)에서 PDF 파일을 작업하는 방법을 알아보겠습니다. 코드 샘플을 사용하여 성능과 기능을 기준으로 두 가지 업계 선도적인 C#용 PDF 도구를 비교할 것입니다. 마지막으로, 그들의 라이선스 세부 정보를 살펴보고 라이선스 키를 얻는 방법을 배울 것입니다.
두 개의 PDF 라이브러리는 다음과 같습니다:
- PDFNet
- IronPDF
2. IronPDF
IronPDF는 C# .NET 개발자를 위해 단일 라이브러리에 PDF 문제를 해결하기 위해 Iron Software가 개발한 C# .NET 라이브러리입니다. IronPDF는 Chromium 엔진으로 구동되며 HTML5, JavaScript, CSS, 및 이미지 파일을 PDF로 변환하는 것 외에도 맞춤 헤더와 푸터를 생성하고, PDF를 브라우저에 표시되는 대로 정확하게 표시하는 등의 다양한 유용하고 강력한 기능을 제공합니다. IronPDF는 PDF 파일에서 데이터를 읽어 .NET 애플리케이션 및 데이터 저장 시스템에 자동으로 삽입할 수 있습니다. 귀하는 이전 PDF 문서 저장소에서 콘텐츠를 가져오고, 이동하고, 인덱싱하여 문서 관리 및 비즈니스 애플리케이션으로 통합할 수 있습니다.
2.1. IronPDF 기능
2.1.1. PDF 변환
이 기능을 통해 HTML, MVC 뷰, 웹 폼, HTML 문자열 및 URL과 같은 다양한 형식으로부터 PDF 파일을 생성할 수 있습니다.
2.1.2. PDF 콘텐츠 추출
많은 경우에 PDF에서 포함된 텍스트를 쉽게 추출할 수 있습니다. 그러나 실패하는 경우, 텍스트는 이미지에 포함되어 있을 가능성이 높습니다. 평문 텍스트가 아닌 시각적 텍스트로 문서를 스캔하려면 IronOCR 라이브러리를 사용하십시오.
2.1.3 머리글과 바닥글
PDF를 생성하거나 기존 PDF에 머리글과 바닥글을 추가할 수 있습니다. 인쇄 옵션 속성을 사용하여 각 문서 페이지에 대한 머리글과 바닥글을 만들 수 있습니다. 이 매개변수는 ChromePdfRenderer 객체에 있습니다. 이 예제는 .NET Core 콘솔 앱 내에서 실행됩니다.
2.1.4. PDF 이미지 처리
이는 사용자들이 PDF에서 이미지를 생성할 수 있게 하며, 사진에서 PDF를 생성할 수 있게 합니다. 이미지 추출, 다양한 이미지 확장 및 PDF 인쇄를 지원합니다.
2.1.5. PDF 문서 IO
IronPDF는 128비트 PDF 암호화, 암호 보호 PDF 잠금 및 PDF의 디지털 서명을 포함합니다.
2.1.6. PDF 편집
IronPDF 도구를 사용하면 워터마크 추가, 페이지 추가, 페이지 제거, 배경, 전경 등을 PDF에 추가할 수 있습니다.
2.1.7. 호환성
IronPDF는 C#과 호환되는 거의 모든 운영 체제 및 프레임워크를 지원합니다, 예를 들어:
- Windows
- .NET Core 2.1, 3.0, 3.1, .NET 6 & 5
- 보편적 호환성 for .NET Standard 2.0 준수
- Azure
- AWS
- Docker
- Linux
3. PDFNet
PDFTron의 PDFNet .NET SDK는 웹, 모바일, 데스크톱 또는 서버의 모든 프레임워크나 애플리케이션에 정밀한 PDF 처리, 주석, 편집 및 생성을 제공합니다. 이는 귀하의 인프라와 함께 전체 문서 및 정보 관리 프로세스를 관리하며, 타사 서버 종속성의 필요성을 제거합니다. PDFTron의 웹 플랫폼은 지원되는 플랫폼과 모든 PDF SDK에 대한 데모 라이센스 키를 포함한 JS 버전을 제공합니다.
PDFNet의 가장 중요한 이점 중 하나는 진정한 크로스 플랫폼 기능을 제공하여, 사용자들이 다양한 모바일 및 데스크톱 환경에서 동일한 인터페이스를 사용하여 PDF 호환성과 관련 비즈니스 기능을 워크플로 및 앱에 간단히 추가할 수 있다는 것입니다.
3.1. PDFNet SDK 기능
3.1.1. 호환성
PDFNet SDK는 다양한 플랫폼 및 프레임워크와 호환됩니다. 플랫폼 일관성을 보장하기 위해 JavaScript API는 PDFNet API와 동일한 방식으로 사용됩니다. SDK의 Node.js 및 Electron 버전도 사용할 수 있습니다. 이 패키지는 관리되지 않는 추가 바이너리를 필요로 합니다.
3.1.2. 편집 및 보기
온라인, 모바일 및 데스크톱 플랫폼 전반에 걸쳐 사용자에게 안전하고 확장 가능하며 높은 신뢰도의 PDF 읽기 및 편집 능력을 제공합니다.
3.1.3. 서명
맞춤형 서명 절차를 만듭니다. 디지털 서명된 문서는 인증, 검증 및 봉인될 수 있습니다.
3.1.4. 올바른 수정
문서에서 개인 정보나 개인 건강 정보와 같은 민감한 데이터를 제거하면서도 문서가 검색 가능하도록 유지합니다.
3.1.5. 페이지 조작
페이지를 추가, 제거 또는 재정렬할 수 있습니다. 문서를 조립하거나 병합하거나 부분으로 나눌 수 있습니다. 하나의 리더에서 또는 나란히 여러 문서를 동시에 볼 수 있습니다.
4. Visual Studio에서 새 프로젝트 생성하기
이 글에서는 콘솔 애플리케이션을 사용하여 PDF 문서를 생성할 것입니다.
Visual Studio 소프트웨어를 열고 파일 메뉴로 이동합니다. "새 프로젝트"를 선택한 후 콘솔 애플리케이션을 선택합니다.
프로젝트 이름을 입력하고 적절한 텍스트 상자에서 경로를 선택합니다. 그런 다음 생성 버튼을 클릭하세요. 아래 스크린샷과 같이 필요한 .NET Framework를 선택합니다:
Visual Studio 프로젝트는 이제 콘솔 애플리케이션의 구조를 생성할 것입니다. 완료되면 Program.cs 파일이 열리며, 해당 파일에서 소스 코드를 작성하고 실행할 수 있습니다.
이제 라이브러리를 추가하고 프로그램을 테스트할 수 있습니다.
5. IronPDF 라이브러리 설치
IronPDF 라이브러리는 네 가지 다른 방법으로 다운로드 및 설치할 수 있습니다. 다음과 같습니다:
- Visual Studio NuGet 패키지 관리자 사용
- Visual Studio 명령 줄 사용하기
- NuGet Gallery IronPDF Package에서 직접 다운로드.
- IronPDF 다운로드 페이지에서 직접 다운로드.
5.1 Visual Studio NuGet 패키지 관리자 사용
Visual Studio 소프트웨어는 솔루션에 패키지를 직접 설치하기 위한 NuGet 패키지 관리자 옵션을 제공합니다. 아래 스크린샷은 NuGet 패키지 관리자를 여는 방법을 보여줍니다.
패키지 관리자 GUI를 열고, 탐색 탭을 클릭하여 "IronPDF"를 검색하십시오:
위 이미지에서 검색과 관련된 패키지 목록을 볼 수 있습니다. IronPDF 옵션을 선택하고 솔루션에 패키지를 설치합니다.
5.2 Visual Studio 명령줄 사용
- Visual Studio 메뉴에서, 도구 > NuGet 패키지 관리자 > 패키지 관리자 콘솔로 이동합니다.
- 패키지 관리자 콘솔 탭에 다음 줄을 입력하십시오:
Install-Package IronPdf
이제 프로젝트에 IronPDF 패키지가 설치됩니다.
5.3 NuGet 웹페이지에서 직접 다운로드
세 번째 방법은 NuGet Gallery IronPDF Package에서 NuGet 패키지를 직접 다운로드하는 것입니다.
- 오른쪽 메뉴에서 다운로드 패키지 옵션을 선택합니다.
- 다운로드된 패키지를 더블 클릭합니다; 자동으로 설치될 것입니다.
- 그런 다음, 솔루션을 다시 로드하고 프로젝트에서 사용을 시작하십시오.
5.4 IronPDF 웹페이지에서 직접 다운로드
최신 패키지를 IronPDF 다운로드 페이지에서 직접 다운로드하세요. 다운로드 후, 패키지를 프로젝트에 추가하기 위해 아래 단계에 따라 진행합니다.
- 솔루션 창에서 프로젝트를 마우스 오른쪽 버튼으로 클릭합니다.
- 그런 다음 옵션 참조를 선택하고 다운로드된 참조의 위치를 찾아보세요.
- 다음, 확인을 클릭하여 참조를 추가합니다.
6. PDFNet SDK 설치
PDFNet SDK는 네 가지 다른 방법으로 다운로드 및 설치할 수 있습니다.
- Visual Studio의 NuGet 패키지 관리자를 사용합니다.
- Visual Studio 명령 줄 사용하기
- NuGet Gallery PDFNet Package에서 직접 다운로드합니다.
- PDFNetLoader.dll을 사용합니다.
6.1. Visual Studio NuGet 패키지 관리자 사용
위와 같이, Visual Studio에서 도구로 이동하여 NuGet 패키지 관리자를 엽니다. 목록이 나타나면 솔루션을 위한 NuGet 패키지를 관리하려면 클릭하세요.
검색 창이 있는 창이 나타납니다. PDFNet을 검색하여 프로젝트에 설치하세요.
6.2. Visual Studio 명령 줄 사용
- Visual Studio 메뉴에서, 도구 > NuGet 패키지 관리자 > 패키지 관리자 콘솔로 이동합니다.
- 패키지 관리자 콘솔 탭에 다음 줄을 입력하십시오:
Install-Package PDFNet -Version 9.2.0
6.3. NuGet 웹 페이지에서 직접 다운로드
세 번째 방법은 NuGet Gallery PDFNet Package에서 NuGet 패키지를 직접 다운로드하는 것입니다.
- 오른쪽 메뉴에서 다운로드 패키지 선택을 선택합니다.
- 설치 프로세스를 시작하려면 다운로드된 패키지를 두 번 클릭하세요.
6.4. PDFNetLoader.dll 사용
PDFNetLoader.dll 파일을 사용하여 PDFNet API를 설치할 수도 있습니다. GitHub Releases for PDFNetLoader.dll에서 다운로드하세요.
패키지를 다운로드하고 프로젝트의 bin 파일에 넣고 실행하세요. Visual Studio 프로젝트에서 참조로 PDFNetLoader.dll을 추가하세요.
Bootstrap 및 CSS 프레임워크 렌더링
현대 웹 애플리케이션은 일관되고 반응형 디자인을 위해 부트스트랩과 CSS 프레임워크에 크게 의존합니다. 웹 콘텐츠에서 PDF를 생성할 때, 이러한 프레임워크를 수정 없이 정확하게 렌더링하는 기능은 디자인 일관성을 유지하고 개발 노력을 줄이는 데 필수적입니다.
IronPDF: 완전한 부트스트랩 프레임워크 지원
- 부트스트랩 5: 전체 플렉스박스 레이아웃 시스템, CSS Grid, 유틸리티 클래스, 모든 컴포넌트 라이브러리
- 부트스트랩 4: 완전한 카드 컴포넌트, 내비게이션, 플렉스 유틸리티, 반응형 디자인
- Tailwind CSS: 모든 유틸리티 기반 클래스가 브라우저 정확도로 렌더링됩니다
- Foundation: 완전한 그리드 시스템 및 구성 요소 지원
- 현대 CSS3: Flexbox, CSS Grid, 사용자 정의 속성, 애니메이션, 전환 및 변형
실세계 검증: IronPDF는 픽셀 완벽한 충실도로 부트스트랩 홈페이지와 모든 공식 예제를 렌더링합니다.
코드 예시: 학습 관리 시스템 대시보드
using IronPdf;
// Set your IronPDF license key
IronPdf.License.LicenseKey = "License-Key goes here";
var renderer = new ChromePdfRenderer();
string bootstrapLMS = @"
<!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-fluid py-4'>
<div class='d-flex justify-content-between align-items-center mb-4'>
<div>
<h1 class='display-6 mb-1'>Student Learning Dashboard</h1>
<p class='text-muted mb-0'>Spring Semester 2025</p>
</div>
<span class='badge bg-success fs-5'>92% Overall Progress</span>
</div>
<div class='row g-4 mb-4'>
<div class='col-md-3'>
<div class='card text-center shadow-sm border-primary'>
<div class='card-body'>
<div class='text-primary mb-2' style='font-size: 2rem;'>📚</div>
<h3 class='mb-1'>6/8</h3>
<p class='text-muted mb-0'>Courses Completed</p>
</div>
</div>
</div>
<div class='col-md-3'>
<div class='card text-center shadow-sm border-success'>
<div class='card-body'>
<div class='text-success mb-2' style='font-size: 2rem;'>🎯</div>
<h3 class='mb-1'>24/28</h3>
<p class='text-muted mb-0'>Assignments Submitted</p>
</div>
</div>
</div>
<div class='col-md-3'>
<div class='card text-center shadow-sm border-warning'>
<div class='card-body'>
<div class='text-warning mb-2' style='font-size: 2rem;'>⏱️</div>
<h3 class='mb-1'>48hrs</h3>
<p class='text-muted mb-0'>Study Time This Week</p>
</div>
</div>
</div>
<div class='col-md-3'>
<div class='card text-center shadow-sm border-info'>
<div class='card-body'>
<div class='text-info mb-2' style='font-size: 2rem;'>⭐</div>
<h3 class='mb-1'>A- Average</h3>
<p class='text-muted mb-0'>Current GPA: 3.7</p>
</div>
</div>
</div>
</div>
<div class='row g-4'>
<div class='col-md-8'>
<div class='card shadow-sm'>
<div class='card-header bg-primary text-white'>
<h5 class='mb-0'>Current Courses</h5>
</div>
<div class='card-body p-0'>
<div class='list-group list-group-flush'>
<div class='list-group-item'>
<div class='d-flex justify-content-between align-items-center mb-2'>
<div>
<h6 class='mb-1'>Advanced Web Development</h6>
<small class='text-muted'>Prof. Johnson | Mondays & Wednesdays, 2:00 PM</small>
</div>
<span class='badge bg-success'>Grade: A</span>
</div>
<div class='progress' style='height: 6px;'>
<div class='progress-bar bg-success' style='width: 95%'></div>
</div>
<small class='text-muted'>95% Complete | Final Project Due: May 15</small>
</div>
<div class='list-group-item'>
<div class='d-flex justify-content-between align-items-center mb-2'>
<div>
<h6 class='mb-1'>Database Systems</h6>
<small class='text-muted'>Prof. Chen | Tuesdays & Thursdays, 10:00 AM</small>
</div>
<span class='badge bg-primary'>Grade: A-</span>
</div>
<div class='progress' style='height: 6px;'>
<div class='progress-bar bg-primary' style='width: 88%'></div>
</div>
<small class='text-muted'>88% Complete | Midterm: April 28</small>
</div>
<div class='list-group-item'>
<div class='d-flex justify-content-between align-items-center mb-2'>
<div>
<h6 class='mb-1'>Artificial Intelligence Fundamentals</h6>
<small class='text-muted'>Prof. Martinez | Fridays, 1:00 PM</small>
</div>
<span class='badge bg-warning text-dark'>Grade: B+</span>
</div>
<div class='progress' style='height: 6px;'>
<div class='progress-bar bg-warning' style='width: 75%'></div>
</div>
<small class='text-muted'>75% Complete | Research Paper Due: May 5</small>
</div>
<div class='list-group-item'>
<div class='d-flex justify-content-between align-items-center mb-2'>
<div>
<h6 class='mb-1'>Computer Networks</h6>
<small class='text-muted'>Prof. Davis | Mondays & Wednesdays, 4:00 PM</small>
</div>
<span class='badge bg-success'>Grade: A</span>
</div>
<div class='progress' style='height: 6px;'>
<div class='progress-bar bg-success' style='width: 92%'></div>
</div>
<small class='text-muted'>92% Complete | Lab Exam: April 30</small>
</div>
</div>
</div>
</div>
</div>
<div class='col-md-4'>
<div class='card shadow-sm mb-3'>
<div class='card-header bg-warning text-dark'>
<h5 class='mb-0'>Upcoming Deadlines</h5>
</div>
<div class='card-body p-0'>
<ul class='list-group list-group-flush'>
<li class='list-group-item'>
<div class='d-flex align-items-start'>
<span class='badge bg-danger me-2'>Today</span>
<div class='flex-grow-1'>
<small><strong>AI Assignment 4</strong></small>
<br><small class='text-muted'>Neural Networks Lab</small>
</div>
</div>
</li>
<li class='list-group-item'>
<div class='d-flex align-items-start'>
<span class='badge bg-warning text-dark me-2'>Apr 28</span>
<div class='flex-grow-1'>
<small><strong>Database Midterm</strong></small>
<br><small class='text-muted'>Chapters 1-8</small>
</div>
</div>
</li>
<li class='list-group-item'>
<div class='d-flex align-items-start'>
<span class='badge bg-info me-2'>Apr 30</span>
<div class='flex-grow-1'>
<small><strong>Networks Lab Exam</strong></small>
<br><small class='text-muted'>Practical Assessment</small>
</div>
</div>
</li>
<li class='list-group-item'>
<div class='d-flex align-items-start'>
<span class='badge bg-primary me-2'>May 5</span>
<div class='flex-grow-1'>
<small><strong>AI Research Paper</strong></small>
<br><small class='text-muted'>15-20 pages</small>
</div>
</div>
</li>
</ul>
</div>
</div>
<div class='card shadow-sm'>
<div class='card-header bg-info text-white'>
<h5 class='mb-0'>Study Resources</h5>
</div>
<div class='card-body'>
<div class='d-grid gap-2'>
<button class='btn btn-outline-primary btn-sm'>📖 Course Materials</button>
<button class='btn btn-outline-primary btn-sm'>💬 Discussion Forums</button>
<button class='btn btn-outline-primary btn-sm'>🎥 Recorded Lectures</button>
<button class='btn btn-outline-primary btn-sm'>📝 Practice Quizzes</button>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(bootstrapLMS);
pdf.SaveAs("lms-dashboard.pdf");
using IronPdf;
// Set your IronPDF license key
IronPdf.License.LicenseKey = "License-Key goes here";
var renderer = new ChromePdfRenderer();
string bootstrapLMS = @"
<!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-fluid py-4'>
<div class='d-flex justify-content-between align-items-center mb-4'>
<div>
<h1 class='display-6 mb-1'>Student Learning Dashboard</h1>
<p class='text-muted mb-0'>Spring Semester 2025</p>
</div>
<span class='badge bg-success fs-5'>92% Overall Progress</span>
</div>
<div class='row g-4 mb-4'>
<div class='col-md-3'>
<div class='card text-center shadow-sm border-primary'>
<div class='card-body'>
<div class='text-primary mb-2' style='font-size: 2rem;'>📚</div>
<h3 class='mb-1'>6/8</h3>
<p class='text-muted mb-0'>Courses Completed</p>
</div>
</div>
</div>
<div class='col-md-3'>
<div class='card text-center shadow-sm border-success'>
<div class='card-body'>
<div class='text-success mb-2' style='font-size: 2rem;'>🎯</div>
<h3 class='mb-1'>24/28</h3>
<p class='text-muted mb-0'>Assignments Submitted</p>
</div>
</div>
</div>
<div class='col-md-3'>
<div class='card text-center shadow-sm border-warning'>
<div class='card-body'>
<div class='text-warning mb-2' style='font-size: 2rem;'>⏱️</div>
<h3 class='mb-1'>48hrs</h3>
<p class='text-muted mb-0'>Study Time This Week</p>
</div>
</div>
</div>
<div class='col-md-3'>
<div class='card text-center shadow-sm border-info'>
<div class='card-body'>
<div class='text-info mb-2' style='font-size: 2rem;'>⭐</div>
<h3 class='mb-1'>A- Average</h3>
<p class='text-muted mb-0'>Current GPA: 3.7</p>
</div>
</div>
</div>
</div>
<div class='row g-4'>
<div class='col-md-8'>
<div class='card shadow-sm'>
<div class='card-header bg-primary text-white'>
<h5 class='mb-0'>Current Courses</h5>
</div>
<div class='card-body p-0'>
<div class='list-group list-group-flush'>
<div class='list-group-item'>
<div class='d-flex justify-content-between align-items-center mb-2'>
<div>
<h6 class='mb-1'>Advanced Web Development</h6>
<small class='text-muted'>Prof. Johnson | Mondays & Wednesdays, 2:00 PM</small>
</div>
<span class='badge bg-success'>Grade: A</span>
</div>
<div class='progress' style='height: 6px;'>
<div class='progress-bar bg-success' style='width: 95%'></div>
</div>
<small class='text-muted'>95% Complete | Final Project Due: May 15</small>
</div>
<div class='list-group-item'>
<div class='d-flex justify-content-between align-items-center mb-2'>
<div>
<h6 class='mb-1'>Database Systems</h6>
<small class='text-muted'>Prof. Chen | Tuesdays & Thursdays, 10:00 AM</small>
</div>
<span class='badge bg-primary'>Grade: A-</span>
</div>
<div class='progress' style='height: 6px;'>
<div class='progress-bar bg-primary' style='width: 88%'></div>
</div>
<small class='text-muted'>88% Complete | Midterm: April 28</small>
</div>
<div class='list-group-item'>
<div class='d-flex justify-content-between align-items-center mb-2'>
<div>
<h6 class='mb-1'>Artificial Intelligence Fundamentals</h6>
<small class='text-muted'>Prof. Martinez | Fridays, 1:00 PM</small>
</div>
<span class='badge bg-warning text-dark'>Grade: B+</span>
</div>
<div class='progress' style='height: 6px;'>
<div class='progress-bar bg-warning' style='width: 75%'></div>
</div>
<small class='text-muted'>75% Complete | Research Paper Due: May 5</small>
</div>
<div class='list-group-item'>
<div class='d-flex justify-content-between align-items-center mb-2'>
<div>
<h6 class='mb-1'>Computer Networks</h6>
<small class='text-muted'>Prof. Davis | Mondays & Wednesdays, 4:00 PM</small>
</div>
<span class='badge bg-success'>Grade: A</span>
</div>
<div class='progress' style='height: 6px;'>
<div class='progress-bar bg-success' style='width: 92%'></div>
</div>
<small class='text-muted'>92% Complete | Lab Exam: April 30</small>
</div>
</div>
</div>
</div>
</div>
<div class='col-md-4'>
<div class='card shadow-sm mb-3'>
<div class='card-header bg-warning text-dark'>
<h5 class='mb-0'>Upcoming Deadlines</h5>
</div>
<div class='card-body p-0'>
<ul class='list-group list-group-flush'>
<li class='list-group-item'>
<div class='d-flex align-items-start'>
<span class='badge bg-danger me-2'>Today</span>
<div class='flex-grow-1'>
<small><strong>AI Assignment 4</strong></small>
<br><small class='text-muted'>Neural Networks Lab</small>
</div>
</div>
</li>
<li class='list-group-item'>
<div class='d-flex align-items-start'>
<span class='badge bg-warning text-dark me-2'>Apr 28</span>
<div class='flex-grow-1'>
<small><strong>Database Midterm</strong></small>
<br><small class='text-muted'>Chapters 1-8</small>
</div>
</div>
</li>
<li class='list-group-item'>
<div class='d-flex align-items-start'>
<span class='badge bg-info me-2'>Apr 30</span>
<div class='flex-grow-1'>
<small><strong>Networks Lab Exam</strong></small>
<br><small class='text-muted'>Practical Assessment</small>
</div>
</div>
</li>
<li class='list-group-item'>
<div class='d-flex align-items-start'>
<span class='badge bg-primary me-2'>May 5</span>
<div class='flex-grow-1'>
<small><strong>AI Research Paper</strong></small>
<br><small class='text-muted'>15-20 pages</small>
</div>
</div>
</li>
</ul>
</div>
</div>
<div class='card shadow-sm'>
<div class='card-header bg-info text-white'>
<h5 class='mb-0'>Study Resources</h5>
</div>
<div class='card-body'>
<div class='d-grid gap-2'>
<button class='btn btn-outline-primary btn-sm'>📖 Course Materials</button>
<button class='btn btn-outline-primary btn-sm'>💬 Discussion Forums</button>
<button class='btn btn-outline-primary btn-sm'>🎥 Recorded Lectures</button>
<button class='btn btn-outline-primary btn-sm'>📝 Practice Quizzes</button>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(bootstrapLMS);
pdf.SaveAs("lms-dashboard.pdf");
Imports IronPdf
' Set your IronPDF license key
IronPdf.License.LicenseKey = "License-Key goes here"
Dim renderer As New ChromePdfRenderer()
Dim bootstrapLMS 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-fluid py-4'>
<div class='d-flex justify-content-between align-items-center mb-4'>
<div>
<h1 class='display-6 mb-1'>Student Learning Dashboard</h1>
<p class='text-muted mb-0'>Spring Semester 2025</p>
</div>
<span class='badge bg-success fs-5'>92% Overall Progress</span>
</div>
<div class='row g-4 mb-4'>
<div class='col-md-3'>
<div class='card text-center shadow-sm border-primary'>
<div class='card-body'>
<div class='text-primary mb-2' style='font-size: 2rem;'>📚</div>
<h3 class='mb-1'>6/8</h3>
<p class='text-muted mb-0'>Courses Completed</p>
</div>
</div>
</div>
<div class='col-md-3'>
<div class='card text-center shadow-sm border-success'>
<div class='card-body'>
<div class='text-success mb-2' style='font-size: 2rem;'>🎯</div>
<h3 class='mb-1'>24/28</h3>
<p class='text-muted mb-0'>Assignments Submitted</p>
</div>
</div>
</div>
<div class='col-md-3'>
<div class='card text-center shadow-sm border-warning'>
<div class='card-body'>
<div class='text-warning mb-2' style='font-size: 2rem;'>⏱️</div>
<h3 class='mb-1'>48hrs</h3>
<p class='text-muted mb-0'>Study Time This Week</p>
</div>
</div>
</div>
<div class='col-md-3'>
<div class='card text-center shadow-sm border-info'>
<div class='card-body'>
<div class='text-info mb-2' style='font-size: 2rem;'>⭐</div>
<h3 class='mb-1'>A- Average</h3>
<p class='text-muted mb-0'>Current GPA: 3.7</p>
</div>
</div>
</div>
</div>
<div class='row g-4'>
<div class='col-md-8'>
<div class='card shadow-sm'>
<div class='card-header bg-primary text-white'>
<h5 class='mb-0'>Current Courses</h5>
</div>
<div class='card-body p-0'>
<div class='list-group list-group-flush'>
<div class='list-group-item'>
<div class='d-flex justify-content-between align-items-center mb-2'>
<div>
<h6 class='mb-1'>Advanced Web Development</h6>
<small class='text-muted'>Prof. Johnson | Mondays & Wednesdays, 2:00 PM</small>
</div>
<span class='badge bg-success'>Grade: A</span>
</div>
<div class='progress' style='height: 6px;'>
<div class='progress-bar bg-success' style='width: 95%'></div>
</div>
<small class='text-muted'>95% Complete | Final Project Due: May 15</small>
</div>
<div class='list-group-item'>
<div class='d-flex justify-content-between align-items-center mb-2'>
<div>
<h6 class='mb-1'>Database Systems</h6>
<small class='text-muted'>Prof. Chen | Tuesdays & Thursdays, 10:00 AM</small>
</div>
<span class='badge bg-primary'>Grade: A-</span>
</div>
<div class='progress' style='height: 6px;'>
<div class='progress-bar bg-primary' style='width: 88%'></div>
</div>
<small class='text-muted'>88% Complete | Midterm: April 28</small>
</div>
<div class='list-group-item'>
<div class='d-flex justify-content-between align-items-center mb-2'>
<div>
<h6 class='mb-1'>Artificial Intelligence Fundamentals</h6>
<small class='text-muted'>Prof. Martinez | Fridays, 1:00 PM</small>
</div>
<span class='badge bg-warning text-dark'>Grade: B+</span>
</div>
<div class='progress' style='height: 6px;'>
<div class='progress-bar bg-warning' style='width: 75%'></div>
</div>
<small class='text-muted'>75% Complete | Research Paper Due: May 5</small>
</div>
<div class='list-group-item'>
<div class='d-flex justify-content-between align-items-center mb-2'>
<div>
<h6 class='mb-1'>Computer Networks</h6>
<small class='text-muted'>Prof. Davis | Mondays & Wednesdays, 4:00 PM</small>
</div>
<span class='badge bg-success'>Grade: A</span>
</div>
<div class='progress' style='height: 6px;'>
<div class='progress-bar bg-success' style='width: 92%'></div>
</div>
<small class='text-muted'>92% Complete | Lab Exam: April 30</small>
</div>
</div>
</div>
</div>
</div>
<div class='col-md-4'>
<div class='card shadow-sm mb-3'>
<div class='card-header bg-warning text-dark'>
<h5 class='mb-0'>Upcoming Deadlines</h5>
</div>
<div class='card-body p-0'>
<ul class='list-group list-group-flush'>
<li class='list-group-item'>
<div class='d-flex align-items-start'>
<span class='badge bg-danger me-2'>Today</span>
<div class='flex-grow-1'>
<small><strong>AI Assignment 4</strong></small>
<br><small class='text-muted'>Neural Networks Lab</small>
</div>
</div>
</li>
<li class='list-group-item'>
<div class='d-flex align-items-start'>
<span class='badge bg-warning text-dark me-2'>Apr 28</span>
<div class='flex-grow-1'>
<small><strong>Database Midterm</strong></small>
<br><small class='text-muted'>Chapters 1-8</small>
</div>
</div>
</li>
<li class='list-group-item'>
<div class='d-flex align-items-start'>
<span class='badge bg-info me-2'>Apr 30</span>
<div class='flex-grow-1'>
<small><strong>Networks Lab Exam</strong></small>
<br><small class='text-muted'>Practical Assessment</small>
</div>
</div>
</li>
<li class='list-group-item'>
<div class='d-flex align-items-start'>
<span class='badge bg-primary me-2'>May 5</span>
<div class='flex-grow-1'>
<small><strong>AI Research Paper</strong></small>
<br><small class='text-muted'>15-20 pages</small>
</div>
</div>
</li>
</ul>
</div>
</div>
<div class='card shadow-sm'>
<div class='card-header bg-info text-white'>
<h5 class='mb-0'>Study Resources</h5>
</div>
<div class='card-body'>
<div class='d-grid gap-2'>
<button class='btn btn-outline-primary btn-sm'>📖 Course Materials</button>
<button class='btn btn-outline-primary btn-sm'>💬 Discussion Forums</button>
<button class='btn btn-outline-primary btn-sm'>🎥 Recorded Lectures</button>
<button class='btn btn-outline-primary btn-sm'>📝 Practice Quizzes</button>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>"
Dim pdf = renderer.RenderHtmlAsPdf(bootstrapLMS)
pdf.SaveAs("lms-dashboard.pdf")
출력: 전문적 학습 관리 시스템 PDF는 부트스트랩 5의 그리드 시스템, 카드 컴포넌트, 진행 막대, 배지, 플렉스박스 레이아웃, 리스트 그룹 등과 함께 훌륭한 간격, 타이포그래피 및 색상 정확도로 렌더링됩니다.
PDFNet (Apryse): 부분적인 최신 CSS 지원
PDFNet은 선택적인 CSS3 지원을 갖춘 사용자 정의 HTML 렌더링 엔진을 사용합니다.
- 제한된 플렉스박스 구현: 부트스트랩 4/5 플렉스 기반 레이아웃은 일관되지 않게 렌더링될 수 있습니다
- 부분적인 CSS Grid 지원: 그리드 기반 디자인은 종종 대체해야 합니다
- JavaScript 제약: 완전한 브라우저 환경과 비교했을 때 최소한의 실행
- 프레임워크 테스트 필요: 부트스트랩 컴포넌트는 생산 사용 전 검증이 필요합니다
개발 영향: 각 부트스트랩 컴포넌트를 개별적으로 테스트해야 하며, PDFNet을 위해 종종 간소화된 레이아웃 또는 대체 CSS를 만들어야 하므로 복잡성이 증가하고 디자인의 일관성이 줄어듭니다.
포괄적인 부트스트랩 프레임워크 가이드와 최신 CSS 렌더링 기능은 부트스트랩 및 Flexbox CSS 가이드를 참조하세요.
7. PDF 파일 인쇄 (코드 샘플)
PDF 파일의 인쇄는 PDFs를 다루는 현대 애플리케이션에서 필수 기능입니다. 여기에서는 두 가지 도구를 사용하여 PDF 파일을 인쇄하는 방법을 논의할 것입니다.
7.1. IronPDF를 사용하여 PDF 파일 인쇄
IronPDF는 PDF를 컴퓨터의 기본 프린터로 보내 인쇄합니다. 이렇게 하면 Windows 인쇄 인터페이스가 열리고, 출력물 인쇄를 클릭하기만 하면 됩니다.
using IronPdf;
class PrintPDF
{
static void Main(string[] args)
{
// Create a new PDF and print it
var Renderer = new IronPdf.ChromePdfRenderer();
PdfDocument Pdf = Renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");
// Send the PDF to the default printer to print
Pdf.Print(300, false);
}
}
using IronPdf;
class PrintPDF
{
static void Main(string[] args)
{
// Create a new PDF and print it
var Renderer = new IronPdf.ChromePdfRenderer();
PdfDocument Pdf = Renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");
// Send the PDF to the default printer to print
Pdf.Print(300, false);
}
}
Imports IronPdf
Friend Class PrintPDF
Shared Sub Main(ByVal args() As String)
' Create a new PDF and print it
Dim Renderer = New IronPdf.ChromePdfRenderer()
Dim Pdf As PdfDocument = Renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf")
' Send the PDF to the default printer to print
Pdf.Print(300, False)
End Sub
End Class
7.2. PDFNet을 사용하여 PDF 파일 인쇄
PDFTron의 PDFNet SDK도 인쇄 기능을 제공합니다. PDFNet에서 PDF 파일을 인쇄하는 소스 코드 스니펫은 다음과 같습니다.
using System;
using pdftron;
using pdftron.PDF;
using pdftron.Common;
using pdftron.Filters;
namespace PDFPrintTestCS
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Opening the input file...");
using (PDFDoc pdfdoc = new PDFDoc("tiger.pdf"))
{
pdfdoc.InitSecurityHandler();
Console.WriteLine("Printing the input file using PDF.Print.StartPrintJob...");
PrinterMode printerMode = new PrinterMode();
printerMode.SetAutoCenter(true);
printerMode.SetAutoRotate(true);
printerMode.SetCollation(true);
printerMode.SetCopyCount(1);
printerMode.SetDPI(300); // Set print quality to 300 DPI
printerMode.SetDuplexing(PrinterMode.DuplexMode.e_Duplex_Auto);
printerMode.SetNUp(PrinterMode.NUp.e_NUp_1_1, PrinterMode.NUpPageOrder.e_PageOrder_LeftToRightThenTopToBottom);
printerMode.SetOrientation(PrinterMode.Orientation.e_Orientation_Portrait);
printerMode.SetOutputAnnot(PrinterMode.PrintContentTypes.e_PrintContent_DocumentAndAnnotations);
printerMode.SetOutputColor(PrinterMode.OutputColor.e_OutputColor_Grayscale);
printerMode.SetOutputPageBorder(false);
printerMode.SetOutputQuality(PrinterMode.OutputQuality.e_OutputQuality_Medium);
printerMode.SetPaperSize(new Rect(0, 0, 612, 792));
PageSet pagesToPrint = new PageSet(1, pdfdoc.GetPageCount(), PageSet.Filter.e_all);
Print.StartPrintJob(pdfdoc, "", pdfdoc.GetFileName(), "", pagesToPrint, printerMode, null);
}
}
}
}
using System;
using pdftron;
using pdftron.PDF;
using pdftron.Common;
using pdftron.Filters;
namespace PDFPrintTestCS
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Opening the input file...");
using (PDFDoc pdfdoc = new PDFDoc("tiger.pdf"))
{
pdfdoc.InitSecurityHandler();
Console.WriteLine("Printing the input file using PDF.Print.StartPrintJob...");
PrinterMode printerMode = new PrinterMode();
printerMode.SetAutoCenter(true);
printerMode.SetAutoRotate(true);
printerMode.SetCollation(true);
printerMode.SetCopyCount(1);
printerMode.SetDPI(300); // Set print quality to 300 DPI
printerMode.SetDuplexing(PrinterMode.DuplexMode.e_Duplex_Auto);
printerMode.SetNUp(PrinterMode.NUp.e_NUp_1_1, PrinterMode.NUpPageOrder.e_PageOrder_LeftToRightThenTopToBottom);
printerMode.SetOrientation(PrinterMode.Orientation.e_Orientation_Portrait);
printerMode.SetOutputAnnot(PrinterMode.PrintContentTypes.e_PrintContent_DocumentAndAnnotations);
printerMode.SetOutputColor(PrinterMode.OutputColor.e_OutputColor_Grayscale);
printerMode.SetOutputPageBorder(false);
printerMode.SetOutputQuality(PrinterMode.OutputQuality.e_OutputQuality_Medium);
printerMode.SetPaperSize(new Rect(0, 0, 612, 792));
PageSet pagesToPrint = new PageSet(1, pdfdoc.GetPageCount(), PageSet.Filter.e_all);
Print.StartPrintJob(pdfdoc, "", pdfdoc.GetFileName(), "", pagesToPrint, printerMode, null);
}
}
}
}
Imports System
Imports pdftron
Imports pdftron.PDF
Imports pdftron.Common
Imports pdftron.Filters
Namespace PDFPrintTestCS
Friend Class Program
Shared Sub Main(ByVal args() As String)
Console.WriteLine("Opening the input file...")
Using pdfdoc As New PDFDoc("tiger.pdf")
pdfdoc.InitSecurityHandler()
Console.WriteLine("Printing the input file using PDF.Print.StartPrintJob...")
Dim printerMode As New PrinterMode()
printerMode.SetAutoCenter(True)
printerMode.SetAutoRotate(True)
printerMode.SetCollation(True)
printerMode.SetCopyCount(1)
printerMode.SetDPI(300) ' Set print quality to 300 DPI
printerMode.SetDuplexing(PrinterMode.DuplexMode.e_Duplex_Auto)
printerMode.SetNUp(PrinterMode.NUp.e_NUp_1_1, PrinterMode.NUpPageOrder.e_PageOrder_LeftToRightThenTopToBottom)
printerMode.SetOrientation(PrinterMode.Orientation.e_Orientation_Portrait)
printerMode.SetOutputAnnot(PrinterMode.PrintContentTypes.e_PrintContent_DocumentAndAnnotations)
printerMode.SetOutputColor(PrinterMode.OutputColor.e_OutputColor_Grayscale)
printerMode.SetOutputPageBorder(False)
printerMode.SetOutputQuality(PrinterMode.OutputQuality.e_OutputQuality_Medium)
printerMode.SetPaperSize(New Rect(0, 0, 612, 792))
Dim pagesToPrint As New PageSet(1, pdfdoc.GetPageCount(), PageSet.Filter.e_all)
Print.StartPrintJob(pdfdoc, "", pdfdoc.GetFileName(), "", pagesToPrint, printerMode, Nothing)
End Using
End Sub
End Class
End Namespace
8. HTML에서 PDF 생성
두 라이브러리 모두 HTML에서 PDF로 변환하는 기능을 가지고 있지만, 방법은 약간 다릅니다.
8.1. IronPDF를 사용하여 HTML에서 PDF 생성
IronPDF는 JSON 또는 암호화 메커니즘의 사용을 요구하지 않습니다. IronPDF는 다양한 범위의 메서드를 지원합니다. 예를 들어:
HTML 파일을 PDF로
using IronPdf;
class HtmlToPdf
{
static void Main(string[] args)
{
var Renderer = new IronPdf.ChromePdfRenderer();
Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>").SaveAs("pixel-perfect.pdf");
}
}
using IronPdf;
class HtmlToPdf
{
static void Main(string[] args)
{
var Renderer = new IronPdf.ChromePdfRenderer();
Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>").SaveAs("pixel-perfect.pdf");
}
}
Imports IronPdf
Friend Class HtmlToPdf
Shared Sub Main(ByVal args() As String)
Dim Renderer = New IronPdf.ChromePdfRenderer()
Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>").SaveAs("pixel-perfect.pdf")
End Sub
End Class
PDF URL
using IronPdf;
class UrlToPdf
{
static void Main(string[] args)
{
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
var Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/");
Pdf.SaveAs("url.pdf");
}
}
using IronPdf;
class UrlToPdf
{
static void Main(string[] args)
{
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
var Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/");
Pdf.SaveAs("url.pdf");
}
}
Imports IronPdf
Friend Class UrlToPdf
Shared Sub Main(ByVal args() As String)
Dim Renderer As New IronPdf.ChromePdfRenderer()
Dim Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/")
Pdf.SaveAs("url.pdf")
End Sub
End Class
8.2. PDFNet을 사용하여 HTML에서 PDF 만들기
PDFNet은 페이지 변환과 URL 변환을 모두 사용하여 HTML을 PDF로 변환하는 기능을 제공합니다. 코드가 길어서 여기서는 하나의 예제만 드리겠습니다.
class HTML2PDFSample
{
private static pdftron.PDFNetLoader pdfNetLoader = pdftron.PDFNetLoader.Instance();
static HTML2PDFSample() {}
static void Main(string[] args)
{
string output_path = "../../../../TestFiles/Output/html2pdf_example";
string host = "https://www.pdftron.com";
HTML2PDF.SetModulePath("../../../../../Lib");
if (!HTML2PDF.IsModuleAvailable())
{
Console.WriteLine();
Console.WriteLine("Unable to run HTML2PDFTest: PDFTron SDK HTML2PDF module not available.");
return;
}
try
{
using (PDFDoc doc = new PDFDoc())
{
if (HTML2PDF.Convert(doc, host + "/"))
doc.Save(output_path + "_01.pdf", SDFDoc.SaveOptions.e_linearized);
else
Console.WriteLine("Conversion failed.");
}
}
catch (PDFNetException e)
{
Console.WriteLine(e.Message);
}
}
}
class HTML2PDFSample
{
private static pdftron.PDFNetLoader pdfNetLoader = pdftron.PDFNetLoader.Instance();
static HTML2PDFSample() {}
static void Main(string[] args)
{
string output_path = "../../../../TestFiles/Output/html2pdf_example";
string host = "https://www.pdftron.com";
HTML2PDF.SetModulePath("../../../../../Lib");
if (!HTML2PDF.IsModuleAvailable())
{
Console.WriteLine();
Console.WriteLine("Unable to run HTML2PDFTest: PDFTron SDK HTML2PDF module not available.");
return;
}
try
{
using (PDFDoc doc = new PDFDoc())
{
if (HTML2PDF.Convert(doc, host + "/"))
doc.Save(output_path + "_01.pdf", SDFDoc.SaveOptions.e_linearized);
else
Console.WriteLine("Conversion failed.");
}
}
catch (PDFNetException e)
{
Console.WriteLine(e.Message);
}
}
}
Friend Class HTML2PDFSample
Private Shared pdfNetLoader As pdftron.PDFNetLoader = pdftron.PDFNetLoader.Instance()
Shared Sub New()
End Sub
Shared Sub Main(ByVal args() As String)
Dim output_path As String = "../../../../TestFiles/Output/html2pdf_example"
Dim host As String = "https://www.pdftron.com"
HTML2PDF.SetModulePath("../../../../../Lib")
If Not HTML2PDF.IsModuleAvailable() Then
Console.WriteLine()
Console.WriteLine("Unable to run HTML2PDFTest: PDFTron SDK HTML2PDF module not available.")
Return
End If
Try
Using doc As New PDFDoc()
If HTML2PDF.Convert(doc, host & "/") Then
doc.Save(output_path & "_01.pdf", SDFDoc.SaveOptions.e_linearized)
Else
Console.WriteLine("Conversion failed.")
End If
End Using
Catch e As PDFNetException
Console.WriteLine(e.Message)
End Try
End Sub
End Class
9. 라이센스
IronPDF는 무료 개발자 라이선스를 제공하는 라이브러리입니다. IronPDF는 특별한 가격 구조도 제공합니다: 라이트 패키지는 $799부터 시작하며 숨겨진 비용이 없습니다. SaaS 및 OEM 제품을 재배포하는 것도 가능합니다. 모든 라이선스는 30일 환불 보장, 1년 소프트웨어 지원 및 업그레이드, 개발/테스트/스테이징/생산 유효성, 그리고 영구적인 라이선스를 포함합니다(일회성 구매). IronPDF 라이선스는 사용자의 요구에 대한 최대 성능을 제공합니다. IronPDF의 전체 가격 구조와 라이선스를 확인하려면 이 IronPDF 라이선스 페이지를 방문하세요.
PDFTron PDFNet SDK는 귀사의 비즈니스 요구에 맞춘 여러 라이선스 선택지를 제공합니다. 세 가지 유형의 라이선스가 Enterprise 및 OEM 재배포와 함께 제공됩니다. Enterprise 라이선스는 조직 사용에만 국한되며 앱 배포에 사용할 수 없습니다. 파일 시스템 액세스를 요구하는 추가 API도 라이선스에 포함되어 있습니다. 모든 라이선스는 라이선스 키가 포함되어 있습니다. 세 가지 라이선스 유형은 다음과 같습니다:
- 뷰어
- 뷰어 & 주석
- 코어 SDK
라이선스 구조에 대한 자세한 정보를 원하시면 이 PDFTron 라이선스 정보 페이지를 방문하세요.
10. 결론
IronPDF는 PDF 파일을 처리하고 다른 형식으로 변환하기 위한 많은 기능과 성능을 제공합니다. HTML에서 PDF로의 변환은 고품질 상업 인쇄에 적합한 벡터 형식으로 제작됩니다. 결과적으로 선명하고 고품질의 PDF를 받게 됩니다. 라이선스와 가격 정보는 웹사이트에서 확인하실 수 있습니다.
IronPDF와 유사하게 PDFNet은 PDF 파일의 변환, 주석, 서명, 채우기, 변환 및 편집을 돕습니다. Windows, iOS, Android, WEB, Linux를 포함한 여러 플랫폼을 지원합니다. 생산용으로 사용하려면 PDFNet SDK에 제품 키가 필요합니다.
IronPDF의 라이선스는 개발자 중심으로, 제품을 사용할 개발자의 수에 따라 라이선스를 얻어야 합니다. 반면 PDFNet 라이선스는 같은 방식으로 작동하지 않으며, 기능 기반의 라이선스로 운영됩니다. 이 말은 필요한 기능을 지원하는 라이선스를 얻어야 한다는 것을 의미합니다. IronPDF 라이선스는 모든 기능을 기본적으로 포함합니다. PDFNet의 경우, 문서 변환과 같은 일부 기능은 추가 구매가 필요합니다.
IronPDF 라이브러리는 체계적으로 기능을 제공하여 몇 줄의 코드로 큰 작업을 수행할 수 있도록 합니다. Iron Software는 현재 두 개의 가격으로 다섯 개의 도구 패키지를 제공하고 있습니다. Iron Suite에 포함된 도구는 다음과 같습니다:
IronBarcode IronXL IronOCR IronPDF IronWebscraper
Iron Suite를 탐색하려면 이 Iron Suite 정보 페이지를 방문하세요.
자주 묻는 질문
기사에서 비교하는 주요 PDF 라이브러리는 무엇입니까?
이 기사에서는 Iron Software가 개발한 IronPDF와 PDFTron의 PDFNet을 비교하여 .NET Framework 내의 C# 개발자를 위한 기능에 중점을 둡니다.
C#에서 HTML을 PDF로 변환하는 방법은 무엇인가요?
RenderHtmlAsPdf 메서드를 사용하여 HTML 문자열을 PDF로 변환할 수 있습니다. 또한 IronPDF의 강력한 크로미엄 엔진을 사용하여 HTML 파일과 URL을 PDF로 변환할 수 있습니다.
IronPDF는 어떤 운영 체제를 지원합니까?
IronPDF는 Windows, Azure, Docker를 비롯한 여러 운영 체제를 지원하여 다양한 개발 환경에 원활한 통합을 제공합니다.
IronPDF는 PDF 데이터 추출을 어떻게 처리합니까?
IronPDF는 효과적인 PDF 데이터 추출을 허용하여 개발자가 PDF 문서에서 텍스트 및 이미지를 쉽게 가져와 추가로 처리할 수 있도록 합니다.
IronPDF의 설치 옵션은 무엇입니까?
IronPDF는 Visual Studio NuGet 패키지 관리자, Visual Studio 명령줄 또는 NuGet 갤러리에서 직접 설치할 수 있으며, 개발자가 쉽게 설정할 수 있도록 보장합니다.
IronPDF와 PDFNet 간의 라이센스 차이는 무엇입니까?
IronPDF는 모든 기능을 포함하는 개발자 중심 라이센스를 제공하며, PDFNet 라이센스는 기능 기반으로 특정 기능에 대해 추가 구매가 필요할 수 있습니다.
IronPDF는 대규모 PDF 작업에 적합합니까?
네, IronPDF는 사용 용이성과 최소한의 코드 요구 사항으로 칭찬받아 대규모 PDF 작업을 효율적으로 처리하는 데 적합합니다.
Iron Software 제품군에는 어떤 추가 도구가 포함되어 있습니까?
Iron Software 제품군에는 IronBarcode, IronXL, IronOCR, IronPDF, IronWebscraper가 패키지로 제공되어 개발자에게 매력을 더합니다.



