.NET 용 Iron Suite

10개의 .NET 라이브러리. 완전한 문서 슈트

비교

Adobe PDF Library SDK vs IronPDF: 기술 비교 가이드

Curtis Chau
Curtis Chau
Updated: 2026년 6월 28일

.NET 개발자들이 PDF 생성 솔루션을 검토할 때, FO.NET은 XSL-FO 문서를 PDF로 변환하는 전문 도구로 눈에 띕니다. 그러나 오래된 XSL-FO 언어에 의존하고 HTML/CSS 지원이 없으며 유지보수가 중단된 상태는 많은 팀이 대안을 고려하게 만듭니다. IronPDF는 대부분의 개발자들이 이미 익숙한 HTML/CSS 웹 표준을 사용하여 크로미엄 렌더링 엔진과 정기적인 월간 업데이트를 특징으로 현대적인 솔루션을 제공합니다.

이 비교는 전문가 개발자와 아키텍트가 그들의 .NET PDF 필요에 대해 정보에 기초한 결정을 내릴 수 있도록 관련 기술적 측면에 대해 두 개의 라이브러리를 검토합니다.

FO.NET 이해하기

FO.NET (FoNet으로 알려짐)은 C#을 사용하여 XSL 포매팅 오브젝트(XSL-FO) 문서를 PDF로 변환하기 위해 설계된 오픈 소스 라이브러리입니다. 이 라이브러리는 Apache 2.0 라이선스 하에 작동하며 XSL-FO 언어를 PDF 형식으로 직접 매핑합니다.

FO.NET은 FonetDriver을(를) 기본 클래스으로 사용하며 Make() 팩토리 메서드가 드라이버 인스턴스를 생성하고 Render() 메서드가 XSL-FO 입력 스트림을 처리하여 PDF 출력 스트림을 생성합니다. 구성은 fo:simple-page-master, fo:layout-master-set와 같은 요소 및 여백, 페이지 크기, 글꼴에 필요한 서식 속성을 사용하여 XSL-FO 마크업 내에서 이루어집니다.

주요 제한 사항으로 FO.NET은 XSL-FO 지식이 필요합니다. 이는 XML 기반 언어로 2001년에 발표된 W3C 규격이며 2006년 이후로 업데이트가 없습니다. 이 라이브러리는 HTML이나 CSS를 지원하지 않으며 웹 페이지를 직접 렌더링할 수 없습니다. XSL-FO는 오늘날의 기술 분야에서 대체로 구식으로 여겨지며, HTML/CSS를 아는 개발자가 98% 넘는 것에 비해 XSL-FO에 능통한 개발자는 1%도 안 됩니다.

오리지널 CodePlex 저장소는 소멸 상태이며, GitHub 포크도 더 이상 활발히 유지되지 않습니다. FO.NET은 System.Drawing의 내부 의존성으로 인해 Linux/macOS에서는 작동할 수 없고 Windows에만 배포가 제한됩니다.

IronPDF대하여 PDF

IronPDF는 일반적인 개발 웹 표준을 사용하는 HTML/CSS로 문서 스타일링과 레이아웃을 수행하는 .NET PDF 라이브러리입니다. 이 라이브러리는 크로미엄 렌더링 엔진을 사용하여 Flexbox 및 Grid 레이아웃을 포함한 완전한 CSS3 지원을 제공하며JavaScript실행도 지원합니다.

IronPDF는 ChromePdfRenderer을(를) 기본 렌더링 클래스로 사용하며 RenderingOptions가 페이지 크기, 여백, 헤더, 푸터 및 기타 PDF 설정에 대해 프로그래밍 방식의 구성을 제공합니다. 라이브러리는 직접 URL 렌더링, HTML 문자열 렌더링 및 HTML 파일 렌더링을 지원하며, 저장, 병합, 보안 또는 추가로 조작될 수 있는 PdfDocument 객체를 생성합니다.

IronPDF는 월간 릴리스와 함께 활발히 유지 관리되며 진정한 크로스 플랫폼 배포(Windows, Linux, macOS)를 지원하고 철저한 문서화 및 튜토리얼을 제공합니다.

아키텍처 및 기술 비교

이 .NET PDF 라이브러리들 간의 근본적인 차이는 입력 형식과 기술적 기반에 있습니다.

측면FO.NETIronPDF
입력 형식XSL-FO (구식 XML)HTML/CSS (현대 웹 표준)
학습 곡선급진적인 (XSL-FO 전문성)부드러움 (HTML/CSS 지식)
유지보수버려짐활발히 매월 유지보수됨
플랫폼 지원Windows 전용진정한 크로스 플랫폼
CSS 지원None전체 CSS3 (Flexbox, Grid)
JavaScriptNone전체JavaScript지원
URL 렌더링지원되지 않음내장형
현대 기능들제한적머리글, 바닥글, 워터마크, 보안
문서화구식포괄적인 튜토리얼

FO.NET은 XSL-FO가 문서 포매팅의 표준이 될 것으로 예상되던 시기에 설계되었습니다. 그것이 일어나지 않았고, HTML/CSS가 보편적인 문서 형식이 되었습니다. 대부분의 XSL-FO 리소스는 2005-2010년 사이에 있으며, 현재 정보나 커뮤니티 지원을 찾기가 점점 더 어려워지고 있습니다.

코드 비교: 일반적인 PDF 작업

HTML을 PDF로 변환

가장 기본적인 작업은 XSL-FO와 HTML 접근법 간의 모델 차이를 보여줍니다.

FO.NET:

// NuGet: Install-Package Fonet
using Fonet;
using Fonet.Render.Pdf;
using System.IO;
using System.Xml;

class Program
{
    static void Main()
    {
        // FoNet requires XSL-FO format, not HTML
        // First convert HTML to XSL-FO (manual process)
        string xslFo = @"<?xml version='1.0' encoding='utf-8'?>
            <fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format'>
                <fo:layout-master-set>
                    <fo:simple-page-master master-name='page'>
                        <fo:region-body/>
                    </fo:simple-page-master>
                </fo:layout-master-set>
                <fo:page-sequence master-reference='page'>
                    <fo:flow flow-name='xsl-region-body'>
                        <fo:block>Hello World</fo:block>
                    </fo:flow>
                </fo:page-sequence>
            </fo:root>";
        
        FonetDriver driver = FonetDriver.Make();
        driver.Render(new StringReader(xslFo), 
            new FileStream("output.pdf", FileMode.Create));
    }
}

IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        string html = "<h1>Hello World</h1><p>This is HTML content.</p>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}

대조는 명확합니다. FO.NET은 XML 네임스페이스 선언, fo:root, fo:layout-master-set, fo:simple-page-master, fo:page-sequence, fo:flow 및 fo:block 요소가 포함된 상세 XSL-FO 마크업을 필요로 하며, 이는 간단한 "Hello World" 텍스트를 생성 하기 전까지 필요합니다. 코드 주석은 명시적으로 'FoNet는 HTML이 아닌 XSL-FO 형식을 필요로 합니다.'라고 명기되어 있습니다.

IronPDF는 렌더러를 생성하고 표준 HTML을 전달하며 PDF로 렌더링하고 저장합니다. 이미 개발자들이 알고 있는 문법을 사용하여 네 줄의 간단한 라인입니다.

고급 HTML 렌더링 옵션을 보려면 HTML to PDF 변환 가이드를 탐색하세요.

URL을 PDF로 변환

웹 페이지를 PDF로 변환하는 것은 중요한 기능 차이를 드러냅니다.

FO.NET:

// NuGet: Install-Package Fonet
using Fonet;
using System.IO;
using System.Net;

class Program
{
    static void Main()
    {
        // FoNet does not support URL rendering directly
        // Must manually download, convert HTML to XSL-FO, then render
        string url = "https://example.com";
        string html = new WebClient().DownloadString(url);
        
        // Manual conversion from HTML to XSL-FO required (complex)
        string xslFo = ConvertHtmlToXslFo(html); // Not built-in
        
        FonetDriver driver = FonetDriver.Make();
        driver.Render(new StringReader(xslFo), 
            new FileStream("webpage.pdf", FileMode.Create));
    }
    
    static string ConvertHtmlToXslFo(string html)
    {
        // Custom implementation required
        throw new System.NotImplementedException();
    }
}

IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("webpage.pdf");
    }
}

FO.NET은 URL 렌더링을 명시적으로 지원하지 않습니다. 코드 주석은 다음과 같이 명시합니다: "FoNet은 URL 렌더링을 직접 지원하지 않습니다" 및 "HTML에서 XSL-FO로의 수동 변환 필요 (복잡함)." ConvertHtmlToXslFo() 메서드는 이 변환이 내장되어 있지 않으며 사용자 정의 구현이 필요하기 때문에 NotImplementedException를(을) 던집니다.

IronPDF는 URL 가져오기,JavaScript실행 및 렌더링을 하나의 메서드 호출로 처리하는 네이티브 RenderUrlAsPdf() 기능을 제공하며, 이는 복잡하고 구현되지 않은 워크플로우에 비해 세 줄의 코드로 구성됩니다.

URL to PDF documentation에서 URL 렌더링에 대해 자세히 알아보세요.

사용자 설정이 있는 PDF

페이지 차원과 여백 설정은 구성 접근 방식의 차이를 보여줍니다.

FO.NET:

// NuGet: Install-Package Fonet
using Fonet;
using Fonet.Render.Pdf;
using System.IO;

class Program
{
    static void Main()
    {
        // FoNet settings are configured in XSL-FO markup
        string xslFo = @"<?xml version='1.0' encoding='utf-8'?>
            <fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format'>
                <fo:layout-master-set>
                    <fo:simple-page-master master-name='A4' 
                        page-height='297mm' page-width='210mm'
                        margin-top='20mm' margin-bottom='20mm'
                        margin-left='25mm' margin-right='25mm'>
                        <fo:region-body/>
                    </fo:simple-page-master>
                </fo:layout-master-set>
                <fo:page-sequence master-reference='A4'>
                    <fo:flow flow-name='xsl-region-body'>
                        <fo:block font-size='14pt'>Custom PDF</fo:block>
                    </fo:flow>
                </fo:page-sequence>
            </fo:root>";
        
        FonetDriver driver = FonetDriver.Make();
        driver.Render(new StringReader(xslFo), 
            new FileStream("custom.pdf", FileMode.Create));
    }
}

IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Engines.Chrome;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.MarginTop = 20;
        renderer.RenderingOptions.MarginBottom = 20;
        renderer.RenderingOptions.MarginLeft = 25;
        renderer.RenderingOptions.MarginRight = 25;
        
        string html = "<h1 style='font-size:14pt'>Custom PDF</h1>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("custom.pdf");
    }
}

FO.NET의 코드 주석은 명시적으로 "FoNet 설정은 XSL-FO 마크업에서 구성된다"고 명시합니다. 페이지 크기, 여백 및 서식 설정은 XML 구조 내의 fo:simple-page-master의 속성으로 포함됩니다. 이것은 구성 내용이 장황한 XML 형식으로 얽혀 있음을 의미합니다.

IronPDF는 프로그래밍 RenderingOptions 속성을 사용하여 콘텐츠에서 구성을 분리합니다. PaperSize, MarginTop, MarginBottom, MarginLeft 및 MarginRight와 같은 설정은 렌더러 객체에 설정되며, 콘텐츠는 깨끗한 HTML로 유지됩니다.

API 매핑 참조

FO.NET 마이그레이션을 평가하거나 기능을 비교하는 개발자를 위해, 이 매핑은 동등한 작업을 보여줍니다:

핵심 클래스 매핑

FO.NETIronPDF
FonetDriver.Make()new ChromePdfRenderer()
driver.Render(inputStream, outputStream)renderer.RenderHtmlAsPdf(html)
driver.Render(inputFile, outputStream)renderer.RenderHtmlFileAsPdf(path)
driver.BaseDirectoryRenderingOptions.BaseUrl
driver.OnError += handler렌더 시도/캐치

XSL-FO에서 RenderingOptions 매핑

XSL-FO 속성IronPDF RenderingOptions
page-height/page-widthPaperSize
margin-topMarginTop
margin-bottomMarginBottom
margin-leftMarginLeft
margin-rightMarginRight
reference-orientationPaperOrientation

XSL-FO 요소에서 HTML 매핑

XSL-FO 요소동등한 HTML
<fo:root><html>
<fo:layout-master-set>CSS @page 규칙
<fo:simple-page-master>CSS @page
<fo:page-sequence><body> 또는 <div>
<fo:flow><main> 또는 <div>
<fo:static-content>HtmlHeaderFooter
<fo:block><p>, <div>, <h1>-<h6>
<fo:table><table>
<fo:list-block><ul>, <ol>
<fo:external-graphic><img>
<fo:page-number/>{page} 자리 표시자

기능 비교 요약

기능FO.NETIronPDF
HTML to PDF아니요 (수동 XSL-FO 변환 필요)예
URL을 PDF로 변환아니요 (지원되지 않음)예
XSL-FO에서 PDF로예해당 없음
CSS3 지원아니요예 (Flexbox, Grid)
JavaScript아니요예
헤더/푸터XSL-FO 정적 콘텐츠HTML 기반
페이지 번호 매기기fo:page-number{page} 자리 표시자
크로스 플랫폼아니요 (Windows 전용)예
활성 유지관리아니요 (폐기됨)예 (매월)

팀이 FO.NET에서 IronPDF로 전환을 고려할 때

개발 팀은 여러 가지 이유로 FO.NET에서 IronPDF로의 전환을 평가합니다:

구식 기술: XSL-FO는 2001년의 W3C 사양으로, 2006년 이후로 업데이트가 없으며 대체로 구식으로 간주됩니다. 대부분의 리소스와 문서는 2005-2010년 사이에 작성되었으며, 최신 정보를 찾거나 XSL-FO 전문성을 가진 개발자를 고용하는 것이 점점 더 어려워지고 있습니다.

학습 곡선이 급격함: XSL-FO는 특수 서식 개체 (fo:block, fo:table, fo:page-sequence 등)가 포함된 복잡한 XML 기반 마크업을 학습 해야 합니다. XSL-FO를 아는 개발자는 1% 미만인 반면, HTML/CSS를 아는 개발자는 98% 이상입니다.

HTML/CSS 지원 없음: FO.NET은 HTML 또는 CSS를 렌더링할 수 없으며, HTML을 XSL-FO 마크업으로 수동 변환해야 하며, 이는 라이브러리에 내장되어 있지 않습니다. 웹 콘텐츠나 HTML 템플릿을 가진 팀은 사용자 정의 변환 로직을 구현해야 합니다.

포기된 유지관리: 기존의 CodePlex 리포지토리는 중단되었으며, GitHub 포크는 더 이상 적극적으로 유지되지 않고 있습니다. 보안 패치, 버그 수정, 새로운 기능이 개발되지 않고 있습니다.

플랫폼 제한: FO.NET은 System.Drawing에 대한 내부 의존성이 있어 Linux/macOS에서 작동할 수 없어 Windows 전용 환경에 배포가 제한됩니다. 현대 애플리케이션은 점점 더 크로스 플랫폼 배포를 요구합니다.

**현대적인 기능 부족:**JavaScript지원 없음, CSS3 기능 (Flexbox, Grid) 없음, 현대적인 웹 글꼴 없음, 직접 URL 렌더링 기능 없음.

강점과 고려사항

FO.NET의 장점

  • 직접 XSL-FO 변환: PDF 변환을 위해 최적화
  • 오픈 소스: Apache 2.0 라이센스 - 사용, 수정 및 배포 무료
  • 정밀한 제어: XSL-FO는 문서 레이아웃에 대한 세부 제어 제공

FO.NET 고려사항

  • 구식 기술: XSL-FO 사양은 2006년 이후로 업데이트가 없습니다.
  • XSL-FO 지식 필요: 개발자의 1% 미만이 전문성을 가지고 있습니다.
  • HTML 지원 없음: HTML 또는 CSS 콘텐츠를 렌더링할 수 없습니다.
  • 포기된: 활성 유지보수나 보안 업데이트 없음
  • 윈도우 전용: System.Drawing 종속성으로 인해 크로스 플랫폼 사용 불가
  • URL 렌더링 없음: 웹 페이지를 직접 변환할 수 없음
  • 제한된 문서화: 리소스가 오래됨

IronPDF강점

  • HTML/CSS 표준: 이미 98%의 개발자가 알고 있는 웹 기술 사용
  • 최신 렌더링: 모든 CSS3 및 JavaScript 지원하는 Chromium 엔진
  • 활발한 개발: 새로운 기능과 보안 패치가 포함된 월간 릴리스
  • 크로스 플랫폼: Windows, Linux, macOS를 위한 진정한 지원
  • 직접 URL 렌더링: 네이티브 RenderUrlAsPdf() 기능
  • 전문적인 기능: 헤더, 푸터, 워터마크, 보안 - 모두 내장
  • 포괄적인 리소스: 광범위한 튜토리얼 및 문서

IronPDF고려 사항

  • 상업적 라이선스: 프로덕션 사용을 위한 라이선스 필요
  • 다른 패러다임: XSL-FO 템플릿은 HTML로 변환 필요

결론

FO.NET과 IronPDF는 .NET에서 PDF 생성에 대한 근본적으로 다른 접근 방식을 나타냅니다. FO.NET은 XSL-FO에서 PDF로의 변환이라는 틈새 용도를 제공하나, 구식 기술에의 의존, 포기된 유지보수, 윈도우 전용 제한, HTML 지원 부족으로 인해 새로운 프로젝트에 대한 타당성을 점점 더 정당화하기 어려워집니다.

IronPDF는 현재 개발자 기술과 기술에 맞춰 HTML/CSS 웹 표준을 사용하는 현대적인 접근 방식을 제공합니다. HTML, URL을 직접 렌더링하고 Chromium 엔진을 사용해 완전한 CSS3를 사용할 수 있는 기능은 현대적인 PDF 생성 요구 사항에 적합합니다.

조직들이 .NET 10, C# 14, 2026년까지의 애플리케이션 개발을 계획하면서 기술 기반은 중요합니다. 기존의 XSL-FO 시스템을 유지하는 팀들은 FO.NET을 계속 사용할 수 있으나, 현대적인 PDF 생성의 진로는 기존 웹 개발 전문 지식을 활용하는 IronPDF와 같은 HTML 기반 솔루션으로 명확히 향하고 있습니다.

IronPDF 평가를 무료 체험판으로 시작하고 포괄적인 문서를 탐색하여 특정 요구 사항에 적합한지 평가하세요.

참고해 주세요: FONET는 각 소유자의 등록 상표입니다. 이 사이트는 FONET와 관련이 없으며, FONET의 인정이나 후원을 받지 않습니다. 모든 제품명, 로고 및 브랜드는 해당 소유자의 자산입니다. 비교는 정보 제공 목적으로만 사용되며, 작성 시점에 공개적으로 이용 가능한 정보를 반영합니다.