IRON SUITE 사용하기

2025 가이드: 최고의 C# PDF 라이브러리 (먼저 무료, 필요시 유료)

대부분의 사람들이 PDF(Portable Document Format)을 생각할 때, 정보를 가득 담고 있는 파일을 생각합니다. 그리고 현재 PDF는 정보를 공유하는 데 가장 많이 사용되는 파일 형식으로 표준이 되었기 때문에 그들은 옳습니다. 하지만 프로그래머가 PDF를 볼 때, 그들은 단지 정보를 보지 않습니다; 그들은 형식, 콘텐츠 타입 및 기타 기술적 측면을 분석합니다.

프로그래밍 방식으로 PDF 파일을 생성할 때, 콘텐츠의 구조를 유지하는 것이 가장 중요한 작업입니다. 그리고 그것은 보이는 것처럼 간단한 작업이 아닙니다. 우리가 콘텐츠라고 말할 때, 그것은 단지 텍스트만이 아닌 이미지, 그래프, 오디오 심지어 비디오를 포함합니다. 또한, 프로그래밍 방식으로 PDF를 편집하는 것은 이제 일반적인 요구 사항입니다.

AI 시대에 우리는 PDF에 대한 완전한 제어를 원합니다. 때때로 우리는 정책 때문에 텍스트를 삭제해야 하고, 기밀 파일을 보호하기 위해 PDF를 보호해야 하며, 처리할 데이터를 추출하거나 동적으로 보고서를 생성해야 합니다. 이러한 작업에는 많은 사용 사례가 있습니다. 이들은 프로그래머가 PDF 파일을 프로그래밍 방식으로 처리할 때 흔히 직면하는 문제입니다:

  1. 모든 유형의 미디어를 콘텐츠로 다룰 때 PDF 문서의 형식화된 레이아웃을 유지하는 방법

  2. 특히 텍스트가 열에 있는 경우 올바른 순서로 텍스트 추출

  3. 페이지가 많은 PDF 문서를 처리할 때 메모리 제약

  4. 양식 처리는 개발자가 직면하는 주요 문제입니다

  5. PDF 파일을 다른 적절한 문서 형식으로 변환

이 작업을 쉽게 하기 위해 PDF 라이브러리가 등장합니다. 이 기사에서는 여러 C# PDF 라이브러리IronPDF 및 Aspose.PDF, 그리고 그들의 가격 모델에 대해 논의할 것입니다. 우리는 실용적인 사용 사례를 깊이 살펴보고 이러한 라이브러리가 PDF 생성 및 조작을 프로그래밍 방식으로 얼마나 쉽게 만들고 몇 단계 내에서 생산 준비된 상태로 만드는지 이해할 것입니다.

1. IronPDF: C# PDF 라이브러리

IronPDF는 개발자가 PDF 문서를 생성, 편집하고 PDF 문서를 다른 형식으로 변환하는 등 다양한 PDF 작업을 수행하는 데 사용할 수 있는 종합적인 .NET PDF 라이브러리입니다. 대용량 PDF 파일을 처리할 때 매우 적은 메모리를 사용합니다. 이것은 완전히 로컬 머신에서 작동하기 때문에 서버 수준의 처리를 의존할 필요가 없습니다.

이 라이브러리는 최신 .NET Framework와도 호환 가능하며, .NET 프로젝트와의 통합은 매우 매끄럽습니다. NuGet 패키지 관리자의 다음 명령을 실행하기만 하면 IronPDF가 프로젝트에서 사용할 준비가 됩니다:

Install-Package IronPDF

다른 라이브러리를 설치할 필요가 없습니다. 외부 종속성에 전혀 의존하지 않기 때문입니다. 이 라이브러리를 설치하면 필요한 모든 종속성이 한 번에 자동으로 설치됩니다.

IronPDF의 가장 중요한 기능은 HTML을 PDF로 픽셀 단위로 정확하게 변환하는 능력입니다. IronPDF는 HTML 콘텐츠에서 PDF 문서를 만드는 여러 가지 방법을 제공합니다. HTML 문자열, HTML 파일 또는 URL을 직접 PDF로 변환할 수 있습니다. CSS 및 JavaScript도 지원하여 생성된 PDF 문서가 원본 HTML 렌더링을 정확하게 반영하도록 합니다.

기본 작업을 넘어 IronPDF는 PDF 양식, 모든 수준의 암호화 및 디지털 서명 추가를 지원합니다. PDF 파일에서 이미지와 텍스트를 추출할 수 있습니다. 또한 텍스트나 HTML 헤더 및 푸터를 추가하고, PDF를 병합 및 분할하며, 여러 텍스트 세그먼트를 수정하고, 텍스트를 찾고 바꿀 수 있습니다. IronPDF는 HTML에서 PDF 생성을 지원할 뿐만 아니라 DOCX, RTF, MD, 이미지 파일로부터의 PDF 변환도 지원합니다. 이 라이브러리는 매우 가볍고 메모리 관리에 매우 효율적입니다 (기본 작업에 필요한 메모리 10MB 미만). IronPDF는 여기서 접근할 수 있는 안정성 및 성능에 대한 이정표를 추적합니다.

IronPDF는 여러 수준의 지원을 제공합니다. 라이브 채팅, 티켓 생성 또는 이메일을 통해 엔지니어와 연락할 수 있습니다. 지원 팀은 24/7 이용 가능합니다. IronPDF에는 거의 모든 주제를 다루는 자세한 튜토리얼과 문서도 있습니다.

IronPDF는 테스트되고 최적화되었으며 많은 인기 있는 회사가 실시간 제품에 신뢰하는 프로덕션 준비 라이브러리입니다. 이것은 PDF 작업을 위한 프로젝트에서 사용할 수 있는 최고의 PDF 라이브러리 중 하나로 만듭니다. IronPDF 라이브러리의 코드 예제를 살펴보겠습니다.

예제 코드

HTML을 PDF로 변환

using IronPdf;
var renderer = new ChromePdfRenderer();

// 1. HTML String to PDF
var pdf1 = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf1.SaveAs("html-string.pdf");

// 2. HTML String with Assets (Images, CSS, JS)
var pdf2 = renderer.RenderHtmlAsPdf(
    "<img src='logo.png'><link rel='stylesheet' href='style.css'>",
    @"C:\assets\"
);
pdf2.SaveAs("html-with-assets.pdf");

// 3. HTML File to PDF
var pdf3 = renderer.RenderHtmlFileAsPdf("example.html");
pdf3.SaveAs("html-file.pdf");

// 4. URL to PDF
var pdf4 = renderer.RenderUrlAsPdf("https://ironpdf.com");
pdf4.SaveAs("url.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();

// 1. HTML String to PDF
var pdf1 = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf1.SaveAs("html-string.pdf");

// 2. HTML String with Assets (Images, CSS, JS)
var pdf2 = renderer.RenderHtmlAsPdf(
    "<img src='logo.png'><link rel='stylesheet' href='style.css'>",
    @"C:\assets\"
);
pdf2.SaveAs("html-with-assets.pdf");

// 3. HTML File to PDF
var pdf3 = renderer.RenderHtmlFileAsPdf("example.html");
pdf3.SaveAs("html-file.pdf");

// 4. URL to PDF
var pdf4 = renderer.RenderUrlAsPdf("https://ironpdf.com");
pdf4.SaveAs("url.pdf");
$vbLabelText   $csharpLabel

PDF에서 텍스트와 이미지 추출

using IronPdf;
using IronSoftware.Drawing;
using System.Collections.Generic;

// Load PDF document
var pdf = PdfDocument.FromFile("sample.pdf");

// 1. Extract All Text
string allText = pdf.ExtractAllText();

// 2. Extract Text from Specific Page
string pageText = pdf.ExtractTextFromPage(0); 

// 3. Extract Text from Multiple Pages
for (int i = 0; i < pdf.PageCount; i++)
{
    string text = pdf.ExtractTextFromPage(i);
    Console.WriteLine($"Page {i + 1}: {text}");
}

// 4. Extract All Images
var allImages = pdf.ExtractAllImages();
foreach (var image in allImages)
{
    image.SaveAs($"image_{allImages.IndexOf(image)}.png");
}

// 5. Extract Images from Specific Page
List<AnyBitmap> pageImages = pdf.ExtractBitmapsFromPage(0);

// 6. Extract Raw Images (as byte arrays)
var rawImages = pdf.ExtractAllRawImages();
for (int i = 0; i < rawImages.Count; i++)
{
    System.IO.File.WriteAllBytes($"raw_image_{i}.png", rawImages[i]);
}

// 7. Extract Both Text & Images from Each Page
for (int i = 0; i < pdf.PageCount; i++)
{
    string text = pdf.ExtractTextFromPage(i);
    List<AnyBitmap> images = pdf.ExtractBitmapsFromPage(i);

    Console.WriteLine($"Page {i + 1}: {text}");
    Console.WriteLine($"Found {images.Count} images");
}
using IronPdf;
using IronSoftware.Drawing;
using System.Collections.Generic;

// Load PDF document
var pdf = PdfDocument.FromFile("sample.pdf");

// 1. Extract All Text
string allText = pdf.ExtractAllText();

// 2. Extract Text from Specific Page
string pageText = pdf.ExtractTextFromPage(0); 

// 3. Extract Text from Multiple Pages
for (int i = 0; i < pdf.PageCount; i++)
{
    string text = pdf.ExtractTextFromPage(i);
    Console.WriteLine($"Page {i + 1}: {text}");
}

// 4. Extract All Images
var allImages = pdf.ExtractAllImages();
foreach (var image in allImages)
{
    image.SaveAs($"image_{allImages.IndexOf(image)}.png");
}

// 5. Extract Images from Specific Page
List<AnyBitmap> pageImages = pdf.ExtractBitmapsFromPage(0);

// 6. Extract Raw Images (as byte arrays)
var rawImages = pdf.ExtractAllRawImages();
for (int i = 0; i < rawImages.Count; i++)
{
    System.IO.File.WriteAllBytes($"raw_image_{i}.png", rawImages[i]);
}

// 7. Extract Both Text & Images from Each Page
for (int i = 0; i < pdf.PageCount; i++)
{
    string text = pdf.ExtractTextFromPage(i);
    List<AnyBitmap> images = pdf.ExtractBitmapsFromPage(i);

    Console.WriteLine($"Page {i + 1}: {text}");
    Console.WriteLine($"Found {images.Count} images");
}
$vbLabelText   $csharpLabel

PDF 문서 편집: 헤더 및 푸터

using IronPdf;
using System;
var renderer = new ChromePdfRenderer();

// 1. Add Footer with Page Numbers
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
    HtmlFragment = "<center><i>{page} of {total-pages}</i></center>",
    MaxHeight = 15, // mm
    DrawDividerLine = true
};
renderer.RenderingOptions.MarginBottom = 25;

// 2. Add Header with Logo
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = "<img src='logo.png'>",
    MaxHeight = 20, // mm
    BaseUrl = new Uri(@"C:\assets\images\").AbsoluteUri
};
renderer.RenderingOptions.MarginTop = 25;

// 3. Render HTML to PDF
var pdf = renderer.RenderHtmlAsPdf("<h1>Document Title</h1><p>Content...</p>");
pdf.SaveAs("output.pdf");
using IronPdf;
using System;
var renderer = new ChromePdfRenderer();

// 1. Add Footer with Page Numbers
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
    HtmlFragment = "<center><i>{page} of {total-pages}</i></center>",
    MaxHeight = 15, // mm
    DrawDividerLine = true
};
renderer.RenderingOptions.MarginBottom = 25;

// 2. Add Header with Logo
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = "<img src='logo.png'>",
    MaxHeight = 20, // mm
    BaseUrl = new Uri(@"C:\assets\images\").AbsoluteUri
};
renderer.RenderingOptions.MarginTop = 25;

// 3. Render HTML to PDF
var pdf = renderer.RenderHtmlAsPdf("<h1>Document Title</h1><p>Content...</p>");
pdf.SaveAs("output.pdf");
$vbLabelText   $csharpLabel

폼 처리

using IronPdf;

// Load existing PDF with form fields
var pdf = PdfDocument.FromFile("EditableForm.pdf");

// Fill text fields
pdf.Form.FindFormField("firstname").Value = "John";
pdf.Form.FindFormField("lastname").Value = "Smith";
pdf.Form.FindFormField("email").Value = "john.smith@example.com";

// Fill radio button
pdf.Form.FindFormField("gender").Value = "Male";

// Fill dropdown/combobox
pdf.Form.FindFormField("country").Value = "USA";

// Fill checkbox ("Yes" to check, "No" to uncheck)
pdf.Form.FindFormField("subscribe").Value = "Yes";

// Fill textarea (use \r\n for line breaks)
pdf.Form.FindFormField("comments").Value = "This is a comment.\r\nSecond line here.";

// Save filled form
pdf.SaveAs("FilledForm.pdf");
using IronPdf;

// Load existing PDF with form fields
var pdf = PdfDocument.FromFile("EditableForm.pdf");

// Fill text fields
pdf.Form.FindFormField("firstname").Value = "John";
pdf.Form.FindFormField("lastname").Value = "Smith";
pdf.Form.FindFormField("email").Value = "john.smith@example.com";

// Fill radio button
pdf.Form.FindFormField("gender").Value = "Male";

// Fill dropdown/combobox
pdf.Form.FindFormField("country").Value = "USA";

// Fill checkbox ("Yes" to check, "No" to uncheck)
pdf.Form.FindFormField("subscribe").Value = "Yes";

// Fill textarea (use \r\n for line breaks)
pdf.Form.FindFormField("comments").Value = "This is a comment.\r\nSecond line here.";

// Save filled form
pdf.SaveAs("FilledForm.pdf");
$vbLabelText   $csharpLabel

위의 예제에서 볼 수 있듯이 IronPDF를 사용하여 몇 줄만으로 PDF 파일에서 모든 작업을 수행할 수 있습니다. 매우 간단하고 직관적입니다. 메소드 이름은 이해하고 구현하기 쉽습니다.

특허

IronPDF는 개발 목적에 무료로 사용할 수 있으며, 무료 체험판도 다운로드할 수 있습니다. 그러나 프로덕션을 위해서는 IronPDF에 대한 라이센스를 구매해야 합니다. IronPDF의 라이선스 모델은 두 가지 유형의 라이선스를 제공하므로 유연합니다:

  1. 구독 라이선스

  2. 영구 라이선스

구독 라이선스는 1명의 개발자, 1개의 프로젝트 및 연 15,000개의 API 호출을 포함하여 연간 청구되는 월 $59의 비용이 듭니다. 쿼터를 초과한 후 추가 API 호출은 각각 $0.03의 비용이 듭니다.

영구 라이선스는 $1,999에서 시작하며, 필요에 따라 선택할 수 있는 여러 옵션이 있습니다. 이 라이선스의 가장 좋은 부분은 한 번의 결제라는 점입니다. IronPDF를 사용하기 위해 다시 지불할 필요가 없습니다.

Csharp Pdf Libraries Tool 1 related to 특허

2. Aspose.PDF for .NET

Aspose.PDF는 또한 Aspose에 의해 개발된 .NET 라이브러리 Suite의 일부인 C# PDF 라이브러리이며, 복잡한 보고서, 민감한 문서, PDF 문서 맞춤화 등과 같은 PDF 관련 작업에 널리 상업적으로 사용되고 있습니다. C#을 위한 가장 일반적으로 사용되는 PDF 라이브러리 중 하나입니다. 또한 최신 .NET Framework를 지원합니다.

Aspose.PDF는 HTML 콘텐츠뿐만 아니라 XML 파일에서 데이터를 추출하여 정적 파일 대신 실제 데이터를 충족할 수 있습니다. 이 기능은 복잡한 보고서를 만드는 데 매우 유용합니다. IronPDF와 유사하게 PDF 파일에 텍스트, 이미지, 그래프 및 다양한 유형의 콘텐츠를 추가할 수 있습니다. Aspose.PDF는 디지털 서명 삽입, 주석 처리, 헤더 및 푸터, PDF 파일에서 텍스트 추출 등을 제공합니다. PDF에서 구조화된 데이터를 추출할 수 있습니다. 이 라이브러리는 언급된 기능들을 사용하여 PDF 편집을 잘 처리합니다.

Aspose.PDF 라이브러리의 이러한 장점 외에도 여러 가지 단점이 있습니다. 이 라이브러리의 주요 단점은 매우 비싼 가격 ($1679부터 시작)이며 가격 모델이 이해하기 매우 복잡하다는 점입니다. IronPDF와 달리 개발 및 배포와 같은 각 프로세스를 위해 모델을 별도로 구매해야 합니다. 또한 이 라이브러리는 매우 많은 리소스를 요구합니다 (이미지 400개 이상을 포함하는 PDF를 생성할 때 2GB 초과). PDF 작업을 처리하는 데 많은 메모리가 필요하며 매우 좌절감이 듭니다. 이 라이브러리가 제 역할을 잘 한다는 것은 의심의 여지가 없지만 학습 곡선이 매우 가파릅니다. 코드는 이해하기 쉽지 않고 이해하기 위해 매우 상세한 학습 세션이 필요합니다.

코드 예제

텍스트, 이미지 및 테이블로 PDF 문서 생성

using Aspose.Pdf;
using Aspose.Pdf.Text;

using (var document = new Document())
{
    // Add page objects
    var page = document.Pages.Add();

    // Add image - requires Rectangle positioning (You can add tiff images as well)
    page.AddImage("logo.png", new Rectangle(20, 730, 120, 830));

    // Add text - requires manual positioning
    var header = new TextFragment("Company Report");
    header.TextState.Font = FontRepository.FindFont("Arial");
    header.TextState.FontSize = 24;
    header.HorizontalAlignment = HorizontalAlignment.Center;
    header.Position = new Position(130, 720);
    page.Paragraphs.Add(header);

    // Add table - extensive configuration required
    var table = new Table
    {
        ColumnWidths = "100 100 100",
        Border = new BorderInfo(BorderSide.Box, 1f, Color.Black),
        DefaultCellBorder = new BorderInfo(BorderSide.Box, 0.5f, Color.Gray),
        DefaultCellPadding = new MarginInfo(4.5, 4.5, 4.5, 4.5)
    };

    // Add header row
    var headerRow = table.Rows.Add();
    headerRow.Cells.Add("Name");
    headerRow.Cells.Add("Age");
    headerRow.Cells.Add("City");

    // Style each header cell individually
    foreach (Cell cell in headerRow.Cells)
    {
        cell.BackgroundColor = Color.LightGray;
        cell.DefaultCellTextState.FontSize = 12;
    }

    // Add data row
    var dataRow = table.Rows.Add();
    dataRow.Cells.Add("John Doe");
    dataRow.Cells.Add("30");
    dataRow.Cells.Add("New York");

    page.Paragraphs.Add(table);

    // Save document
    document.Save("Report.pdf");
}
using Aspose.Pdf;
using Aspose.Pdf.Text;

using (var document = new Document())
{
    // Add page objects
    var page = document.Pages.Add();

    // Add image - requires Rectangle positioning (You can add tiff images as well)
    page.AddImage("logo.png", new Rectangle(20, 730, 120, 830));

    // Add text - requires manual positioning
    var header = new TextFragment("Company Report");
    header.TextState.Font = FontRepository.FindFont("Arial");
    header.TextState.FontSize = 24;
    header.HorizontalAlignment = HorizontalAlignment.Center;
    header.Position = new Position(130, 720);
    page.Paragraphs.Add(header);

    // Add table - extensive configuration required
    var table = new Table
    {
        ColumnWidths = "100 100 100",
        Border = new BorderInfo(BorderSide.Box, 1f, Color.Black),
        DefaultCellBorder = new BorderInfo(BorderSide.Box, 0.5f, Color.Gray),
        DefaultCellPadding = new MarginInfo(4.5, 4.5, 4.5, 4.5)
    };

    // Add header row
    var headerRow = table.Rows.Add();
    headerRow.Cells.Add("Name");
    headerRow.Cells.Add("Age");
    headerRow.Cells.Add("City");

    // Style each header cell individually
    foreach (Cell cell in headerRow.Cells)
    {
        cell.BackgroundColor = Color.LightGray;
        cell.DefaultCellTextState.FontSize = 12;
    }

    // Add data row
    var dataRow = table.Rows.Add();
    dataRow.Cells.Add("John Doe");
    dataRow.Cells.Add("30");
    dataRow.Cells.Add("New York");

    page.Paragraphs.Add(table);

    // Save document
    document.Save("Report.pdf");
}
$vbLabelText   $csharpLabel

새로운 PDF 문서를 생성하는 데 필요한 Aspose.PDF의 코드는 매우 복잡함을 볼 수 있습니다. 코드 자체에서 모든 좌표를 수동으로 설정해야 합니다. 각 PDF 객체 요소를 수동으로 스타일링해야 하며 이는 매우 시간이 많이 소요되고 비효율적입니다. 그러나 PDF 문서에 대한 세밀한 제어를 제공합니다.

특허

Aspose.PDF는 여러 가지 라이선스 옵션이 있지만 대부분은 사용량에 따라 요금을 지불해야 합니다. 라이선스 가격은 $1679부터 시작합니다. IronPDF 라이선스 옵션($1,999에서 시작)과 비교하면 매우 비쌉니다.

Csharp Pdf Libraries Tool 2 related to 특허

3. iTextSuite for .NET

iTextSuite (일반적으로 iText7 및 iTextSharp으로 알려짐)는 Apryse에서 제공하는 PDF 개발용 SDK입니다. .NET 애플리케이션에서 PDF 작업을 수행하는 데 필요한 모든 도구가 포함된 종합적인 스위트입니다. 위의 라이브러리와 유사하게 PDF 문서를 생성, 편집, 수정, 암호화 및 다양한 작업을 수행할 수 있습니다.

iTextSuite는 간단한 청구서 생성을 비롯하여 금융 모듈의 복잡한 보고서 레이아웃에 대한 생성 및 편집 작업을 매우 잘 수행합니다. 사용하는 데 시스템에 무리를 주지 않으며, 대형 문서와도 원활하게 작동할 수 있습니다. 문서를 빠르게 처리하며, 중요한 지연 없이 출력을 제공합니다.

이러한 훌륭한 기능 외에도 iTextSuite에는 이 라이브러리를 고려하기 전에 알아야 할 몇 가지 단점도 있습니다. 이 라이브러리의 비용은 시장에 존재하는 대안에 비해 매우 높다고 알려져 있습니다. 원래 가격이 가격 페이지에 제공되지 않습니다. 견적을 얻으려면 고객 지원에 문의해야 합니다. AGPL 라이선스도 제공하지만, AGPL 라이선스가 적용된 iTextSuite를 사용할 때는 제품을 오픈 소스로 만들어야 합니다. Aspose와 유사하게 학습 곡선이 가파르고 초보자 친화적이지 않습니다. 고급 PDF 조작에는 PDF와 라이브러리의 구조에 대한 세부적인 이해가 필요합니다.

코드 예제

스타일링 및 색상으로 PDF 문서 테이블 생성

using iText.Kernel.Colors;
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.Layout.Properties;

public void CreateStyledTable(string dest)
{
    using var writer = new PdfWriter(dest);
    using var pdf = new PdfDocument(writer);
    var document = new Document(pdf);

    // Create a 2-column table
    Table table = new Table(2, false);

    // Header cells with gray background
    Cell cell11 = new Cell(1, 1)
        .SetBackgroundColor(ColorConstants.GRAY)
        .SetTextAlignment(TextAlignment.CENTER)
        .Add(new Paragraph("State"));

    Cell cell12 = new Cell(1, 1)
        .SetBackgroundColor(ColorConstants.GRAY)
        .SetTextAlignment(TextAlignment.CENTER)
        .Add(new Paragraph("Capital"));

    // Data cells
    Cell cell21 = new Cell(1, 1)
        .SetTextAlignment(TextAlignment.CENTER)
        .Add(new Paragraph("New York"));

    Cell cell22 = new Cell(1, 1)
        .SetTextAlignment(TextAlignment.CENTER)
        .Add(new Paragraph("Albany"));

    Cell cell31 = new Cell(1, 1)
        .SetTextAlignment(TextAlignment.CENTER)
        .Add(new Paragraph("New Jersey"));

    Cell cell32 = new Cell(1, 1)
        .SetTextAlignment(TextAlignment.CENTER)
        .Add(new Paragraph("Trenton"));

    // Add all cells to table
    table.AddCell(cell11);
    table.AddCell(cell12);
    table.AddCell(cell21);
    table.AddCell(cell22);
    table.AddCell(cell31);
    table.AddCell(cell32);

    document.Add(table);
    document.Close();
}
using iText.Kernel.Colors;
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.Layout.Properties;

public void CreateStyledTable(string dest)
{
    using var writer = new PdfWriter(dest);
    using var pdf = new PdfDocument(writer);
    var document = new Document(pdf);

    // Create a 2-column table
    Table table = new Table(2, false);

    // Header cells with gray background
    Cell cell11 = new Cell(1, 1)
        .SetBackgroundColor(ColorConstants.GRAY)
        .SetTextAlignment(TextAlignment.CENTER)
        .Add(new Paragraph("State"));

    Cell cell12 = new Cell(1, 1)
        .SetBackgroundColor(ColorConstants.GRAY)
        .SetTextAlignment(TextAlignment.CENTER)
        .Add(new Paragraph("Capital"));

    // Data cells
    Cell cell21 = new Cell(1, 1)
        .SetTextAlignment(TextAlignment.CENTER)
        .Add(new Paragraph("New York"));

    Cell cell22 = new Cell(1, 1)
        .SetTextAlignment(TextAlignment.CENTER)
        .Add(new Paragraph("Albany"));

    Cell cell31 = new Cell(1, 1)
        .SetTextAlignment(TextAlignment.CENTER)
        .Add(new Paragraph("New Jersey"));

    Cell cell32 = new Cell(1, 1)
        .SetTextAlignment(TextAlignment.CENTER)
        .Add(new Paragraph("Trenton"));

    // Add all cells to table
    table.AddCell(cell11);
    table.AddCell(cell12);
    table.AddCell(cell21);
    table.AddCell(cell22);
    table.AddCell(cell31);
    table.AddCell(cell32);

    document.Add(table);
    document.Close();
}
$vbLabelText   $csharpLabel

위의 예제에서 iTextSuite 코드의 복잡성을 이해할 수 있습니다. 이는 대형 애플리케이션을 구축하는 데 개발 시간과 복잡성을 증가시킵니다.

특허

iTextSuite는 두 가지 라이선스 모델을 제공합니다. 하나는 상업적이고 다른 하나는 AGPL 라이선스입니다. AGPL 라이선스 하에서는 무료로 iTextSuite를 생산 환경에서 사용할 수 있지만, 제품을 오픈 소스로 만들어야 합니다. 상업적 라이선스에 대해서는 라이선스 페이지에 가격이 명시되어 있지 않습니다. 견적을 요청하거나 고객 지원에 문의할 수 있습니다.

Csharp Pdf Libraries Tool 3 related to 특허

4. PDFSharp

PDFSharp는 개발자가 프로그래밍 방식으로 PDF 작업을 수행할 때 직면하는 문제를 해결하기 위한 C# 오픈 소스 솔루션입니다. .NET Core를 포함한 최신 .NET Framework를 지원합니다. 개발자의 PDF 관련 기본 요구 사항을 충족시키는 경량 솔루션입니다.

PDFSharp는 대부분의 일반적인 PDF 작업을 쉽게 처리할 수 있습니다. 문서를 생성하고, 이미지를 삽입하며, 도형을 그리며, 텍스트 글꼴과 크기를 편집할 수 있습니다. PDFSharp는 PDF에 대한 완전한 제어 권한을 제공하므로 원하는 위치에 원하는 내용을 배치할 수 있습니다.

그러나 PDFSharp에는 알아야 할 몇 가지 제한사항이 있습니다. HTML을 PDF로 변환하는 기능이 기본적으로 지원되지 않으며, 이는 개발자에게 큰 단점입니다. HTML은 PDF에서 스타일링 및 위치 지정이 매우 쉽습니다. 여러 개의 대형 파일을 처리해야 할 때 성능에 영향을 줍니다. 암호화 및 양식 작성 같은 복잡한 작업을 수행할 수 없습니다. 공식 지원 채널이 부족합니다. 이 라이브러리를 사용하면서 문제를 겪을 경우에는 커뮤니티나 자신의 문제 해결 능력에 의존해야 합니다.

코드 예제

다양한 텍스트 스타일로 PDF 생성

using PdfSharp.Pdf;
using PdfSharp.Drawing;

// Create document
PdfDocument document = new PdfDocument();
PdfPage page = document.AddPage();
XGraphics gfx = XGraphics.FromPdfPage(page);

// Example of different font styles
XFont regularFont = new XFont("Arial", 12, XFontStyleEx.Regular);
XFont boldFont = new XFont("Arial", 12, XFontStyleEx.Bold);
XFont italicFont = new XFont("Arial", 12, XFontStyleEx.Italic);
XFont boldItalicFont = new XFont("Arial", 12, XFontStyleEx.BoldItalic);

// Position for the first text
double y = 50;
double x = 50;
double lineHeight = 20;

// Draw text in different styles - REQUIRES manual positioning
gfx.DrawString("Regular text in Arial", regularFont, XBrushes.Black, x, y);
y += lineHeight;
gfx.DrawString("Bold text in Arial", boldFont, XBrushes.Black, x, y);
y += lineHeight;
gfx.DrawString("Italic text in Arial", italicFont, XBrushes.Black, x, y);
y += lineHeight;
gfx.DrawString("Bold and Italic text in Arial", boldItalicFont, XBrushes.Black, x, y);

// Save document
document.Save("FormattedText.pdf");
using PdfSharp.Pdf;
using PdfSharp.Drawing;

// Create document
PdfDocument document = new PdfDocument();
PdfPage page = document.AddPage();
XGraphics gfx = XGraphics.FromPdfPage(page);

// Example of different font styles
XFont regularFont = new XFont("Arial", 12, XFontStyleEx.Regular);
XFont boldFont = new XFont("Arial", 12, XFontStyleEx.Bold);
XFont italicFont = new XFont("Arial", 12, XFontStyleEx.Italic);
XFont boldItalicFont = new XFont("Arial", 12, XFontStyleEx.BoldItalic);

// Position for the first text
double y = 50;
double x = 50;
double lineHeight = 20;

// Draw text in different styles - REQUIRES manual positioning
gfx.DrawString("Regular text in Arial", regularFont, XBrushes.Black, x, y);
y += lineHeight;
gfx.DrawString("Bold text in Arial", boldFont, XBrushes.Black, x, y);
y += lineHeight;
gfx.DrawString("Italic text in Arial", italicFont, XBrushes.Black, x, y);
y += lineHeight;
gfx.DrawString("Bold and Italic text in Arial", boldItalicFont, XBrushes.Black, x, y);

// Save document
document.Save("FormattedText.pdf");
$vbLabelText   $csharpLabel

PDFSharp는 기본 PDF 생성에 필요하고 정밀한 위치 제어가 필요한 개발자에게 경량의 무료 솔루션으로 여전히 탄탄한 선택입니다. 단지 그 제한 사항을 극복하거나 더 고급 요구 사항을 위해 다른 도구와 결합하여 사용 준비를 해야 합니다.

특허

PDFSharp는 MIT 라이선스로 배포되며 완전히 무료로 사용할 수 있습니다. 단지 원래 저작권 공지를 포함하고 배포 시 라이선스를 언급해야 합니다.

5. PDFPig

PDFPig는 또 다른 .NET 개발자를 위한 오픈 소스 라이브러리로 PDF 파일에서 내용을 읽고 추출할 수 있습니다. 이 라이브러리는 PDF 문서에서 개별 문자의 위치와 크기를 추출합니다. 이미지를 가져오고, PDF 주석 및 양식을 읽으며, 하이퍼링크에 접근하고, 임베디드 문서를 노출합니다. 문서 메타데이터에 접근하고 PDF 내부 구조를 볼 수도 있습니다.

이 라이브러리는 유사한 .NET 도구에 비해 벤치마크에서 성능이 우수하며 메모리를 효율적으로 사용합니다. 상업적 옵션에 대한 비용 없는 대안을 제공합니다. 정기적으로 업데이트를 받으며 활성화된 GitHub 문서를 유지합니다.

이 라이브러리에는 알아야 할 명확한 제한 사항이 있습니다. HTML 또는 다른 형식을 PDF로 변환하지 않습니다. 그러나 PDF 페이지에서 이미지를 생성할 수 없으므로, docnet이나 PDFtoImage 같은 별도의 도구가 그 간격을 메울 수 있습니다. PDF 양식은 읽기 전용입니다; 양식 값을 수정하거나 추가할 수 없습니다. 테이블 추출을 위해서는 Tabula Sharp나 Camelot Sharp 같은 외부 도구가 필요합니다. 문서를 작성할 때 하이퍼링크를 추가하거나 수정할 수 없습니다. IronPDF 같은 더 포괄적인 라이브러리와 비교했을 때, PDFPig는 기능이 적고 문서가 덜 광범위합니다.

코드 예제

기본 텍스트 추출

using System;
using System.Collections.Generic;
using System.Linq;
using UglyToad.PdfPig;
using UglyToad.PdfPig.Content;

public static class Program
{
    public static void Main()
    {
        using (PdfDocument document = PdfDocument.Open(@"C:\path\to\file.pdf"))
        {
            foreach (Page page in document.GetPages())
            {
                // Extract all letters
                IReadOnlyList<Letter> letters = page.Letters;
                string text = string.Join(string.Empty, letters.Select(x => x.Value));

                // Extract words
                IEnumerable<Word> words = page.GetWords();

                // Extract images
                IEnumerable<IPdfImage> images = page.GetImages();
            }
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using UglyToad.PdfPig;
using UglyToad.PdfPig.Content;

public static class Program
{
    public static void Main()
    {
        using (PdfDocument document = PdfDocument.Open(@"C:\path\to\file.pdf"))
        {
            foreach (Page page in document.GetPages())
            {
                // Extract all letters
                IReadOnlyList<Letter> letters = page.Letters;
                string text = string.Join(string.Empty, letters.Select(x => x.Value));

                // Extract words
                IEnumerable<Word> words = page.GetWords();

                // Extract images
                IEnumerable<IPdfImage> images = page.GetImages();
            }
        }
    }
}
$vbLabelText   $csharpLabel

특허

PDFPig는 Apache 2.0 라이선스 하에 배포되며, 이 라이선스는 귀하의 배포에 원 저작권 고지 및 라이선스 텍스트를 포함하는 것만 요구합니다. 이 요구 이상으로, 이 라이브러리를 어떤 방식으로든 완전히 자유롭게 사용할 수 있습니다.

결론

요약하자면, 이 C# PDF 라이브러리의 가격 및 라이선스 모델을 비교해 봅시다.

IronPDF는 개인 및 기업 모두에게 적합한 유연한 가격 계획을 제공합니다. 개발 목적으로는 무료이며 무료 체험판을 포함합니다. 가격이 매우 합리적이며, $1,999에서 시작합니다. 포괄적인 기능 세트, 뛰어난 지원, 그리고 생산 준비된 안정성을 갖춘 IronPDF는 비용 대비 최고의 가치를 제공합니다.

Aspose.PDF는 사용한 만큼 지불하는 모델을 따르며 라이선스는 $1679에서 시작하며, 대안들에 비해 상당히 비쌉니다. 세밀한 제어를 제공하지만, 높은 학습 곡선과 높은 비용은 모든 예산에 적합하지 않을 수 있습니다.

iTextSuite는 웹사이트에서 투명한 가격을 공개하지 않습니다. 견적을 받으려면 지원 팀에 연락해야 하며 이는 가격이 경우에 따라 다름을 의미합니다. 그들은 무료 사용을 위한 AGPL 라이선스를 제공하지만, 이는 귀하의 제품 전체 소스를 공개하는 것을 요구합니다.

PDFSharpPDFPig는 각각 MIT 및 Apache 2.0 라이선스 하에서 완전히 무료입니다. 그러나 상용 옵션과 비교했을 때 기능이 제한적입니다. PDFSharp는 HTML을 PDF로 변환하는 기능이 없으며 큰 파일을 처리하는 데 어려움을 겪고, PDFPig는 주로 읽기 전용 라이브러리입니다.

올바른 PDF 라이브러리를 선택하는 것은 특정 요구사항과 예산에 따라 다릅니다. 기본 작업이 필요하고 기술 전문 지식을 갖춘 경우, 오픈 소스 옵션이 잘 작동합니다. 그러나 광범위한 기능이 있는 풍부한 기능의 응용 프로그램에 대해 고급 기능, 신뢰할 수 있는 지원 및 포괄적인 문서가 필요한 경우, IronPDF는 가장 비용 효율적이고 완벽한 기능 솔루션으로 두각을 나타냅니다.