产品比较

IronPDF与ITextPDF的比较

发布 2024年十二月16日
分享:

介绍

PDF 是 "便携式文档格式 "的缩写,是 Adobe 开发的一种文件格式。 PDF 对于展示需要格式化其中包含的文本和图像的文件非常有用。 PDF 文件在现代社会中发挥着重要作用,被用于各类商业部门,如开具发票和生成文件。 如今,得益于市场上现有的 PDF 库,PDF 生成几乎变得直观。 在决定为您的项目使用 PDF 库时,重要的是要考虑每个库的功能和优势,以便能够选择最适合您的库。

在本文中,我们将比较两个最流行的 .NET PDF 库,它们是

  • IronPDF
  • iText PDF

    IronPDF 和 iText PDF 库都用于在 Microsoft .NET 应用程序或项目中创建、读取和修改 PDF 文件。 为了确定哪个库最适合您的应用程序,我们将先比较这两个库的功能,然后再比较转换和处理 PDF 的性能成本。 这两个库都受 Microsoft .NET Framework 的支持。 我们还将记录每个图书馆的持续时间,以便进行分析。

1.IronPDF 功能

IronPDF for .NET 是一个功能强大的 PDF .NET 库,开发人员使用它可以轻松创建、阅读和修改 PDF。 在内部,IronPDF 使用 Chromium 引擎,包含许多实用而强大的功能,例如将 HTML5、JavaScript、CSS 和图像文件转换为 PDF,添加自定义页眉和页脚,以及完全按照浏览器中的显示方式呈现 PDF。 IronPDF 支持各种网络和 NET 格式,如 HTML、ASPX、Razor View 和 MVC。 IronPDF 的主要功能包括

  • 在 .NET C# 代码中直观地创建、读取和修改 PDF 文件。
  • 通过网站 URL 链接生成 PDF 文件,设置可处理自定义网络登录凭证、用户代理、代理、Cookie、HTTP 标头和表单变量,以便在 HTML 登录表单后登录。
  • 从现有的 PDF 文档中提取图像。
  • 为 PDF 文档添加页眉、页脚、文本、图像、书签、水印等。
  • 轻松合并和分割多个 PDF 文档页面的功能。
  • 将 CSS 文件和媒体类型文件转换为文档的能力。

2. iText PDF 功能

iText PDF 是一个开源 Java 库,可以将文本转换成 PDF 文档。 iText 遵循 AGPL 许可软件方案。 APGL 是一种免费开源软件许可证。

  • iText 库提供了创建 PDF 文档的 API。
  • iText 软件能将 HTML 和 XML 字符串解析为 PDF 格式。
  • 使用 iText 库,我们可以在 PDF 文档中添加书签、页码和标记。
  • 使用 iText 库,我们还可以将 PDF 文档拆分为多个 PDF,或将多个 PDF 文档合并为一个 PDF。
  • 使用 iText,我们可以编辑 PDF 中的表格。
  • iText 还可用于使用 png、jpeg 和其他图像格式的图像创建 PDF。
  • iText 库提供了一个画布类,可用于在现有文档上绘制各种几何图形。
  • iText 具有在 PDF 文档中添加和更改字体和图像的功能。

3.在 Visual Studio 中创建新项目

在本文中,我们将使用控制台应用程序生成 PDF 文档。 首先,打开 Microsoft Visual Studio 应用程序,从文件菜单中选择 "新建项目",然后选择 "控制台应用程序"。

Itextpdf Alternative Html To Pdf Csharp 1 related to 3.在 Visual Studio 中创建新项目

输入项目名称并选择文件路径。 然后,单击 "创建 "按钮。 同时,选择所需的 .NET Framework,如下图所示:

Itextpdf Alternative Html To Pdf Csharp 2 related to 3.在 Visual Studio 中创建新项目

现在,Microsoft Visual Studio 将为所选应用程序生成结构。 如果您选择了控制台、Windows 和网络应用程序,现在就会打开 program.cs 文件,您可以在其中输入代码并构建/运行应用程序。

Itextpdf Alternative Html To Pdf Csharp 3 related to 3.在 Visual Studio 中创建新项目

选择 .NET Framework 版本。 在本例中,我们将使用 .NET 5.0

Itextpdf Alternative Html To Pdf Csharp 4 related to 3.在 Visual Studio 中创建新项目

接下来,我们可以添加库来测试代码。

4.安装 IronPDF 库

IronPDF 库可以通过四种方式下载和安装:

4.1 使用 Visual Studio 的 NuGet 软件包管理器

Visual Studio 提供了 NuGet 包管理器选项,可直接将软件包安装到解决方案中。 下面的截图显示了如何打开 NuGet 包管理器。

Itextpdf Alternative Html To Pdf Csharp 5 related to 4.1 使用 Visual Studio 的 NuGet 软件包管理器

它提供了一个从 NuGet 网站查找软件包的搜索框。在软件包管理器中,我们只需搜索 "IronPDF "即可,如下图所示:

Itextpdf Alternative Html To Pdf Csharp 6 related to 4.1 使用 Visual Studio 的 NuGet 软件包管理器

在上图中,我们可以看到相关搜索结果的列表。 请选择所需的选项,以便将软件包安装到系统中。

4.2 使用 Visual Studio 命令行

在 Visual Studio 工具中,转到工具-> NuGet 包管理器-> 包管理器控制台

在软件包管理器控制台选项卡中输入以下一行:

Install-Package IronPdf

现在,软件包将下载并安装到当前项目中,随时可以使用。

Itextpdf Alternative Html To Pdf Csharp 7 related to 4.2 使用 Visual Studio 命令行

4.3 直接从 NuGet 网站下载

第三种方法是直接从网站上下载 NuGet 软件包。

  • 导航至IronPDF NuGet 页面
  • 从右侧菜单中选择 "下载软件包 "选项。
  • 打开下载的软件包。 它将自动安装。
  • 重新加载解决方案并开始在项目中使用。

4.4 直接从 IronPDF 网站下载

访问IronPDF 官方下载页面直接从网站下载最新软件包。下载后,请按照以下步骤将软件包添加到您的项目中:

  • 右键单击解决方案窗口中的项目。
  • 选择 "参考文献 "选项,然后浏览下载参考文献的位置。
  • 单击 "确定 "添加引用。

5.安装 iText 库

iText 库可以通过四种方式下载和安装:

  • 使用 Visual Studio 的 NuGet 软件包管理器。
  • 使用 Visual Studio 的命令行。
  • 直接从 NuGet 网站下载。
  • 直接从 iText Source 网站下载。

    前三种方法对于 IronPDF 和 iText 库都是一样的。 唯一不同的方法。 需要注意的是,通过 Visual Studio 添加 iText 时,必须安装两个软件包。

    首先,在 NuGet 软件包管理器中搜索 iText。 我们需要同时安装 itext7 和 iText.pdfhtml,因为这些软件包的功能被分成多个软件包。

    Itextpdf Alternative Html To Pdf Csharp 8 related to 5.安装 iText 库

    如果您喜欢使用 Visual Command-Line,则需要安装以下软件包:

Install-Package itext7
Install-Package itext7.pdfhtml

iText 7 是最新版本,因此我们在解决方案中使用该版本。

5.1 直接从 iText Source 网站下载

源代码将发布在 GitHub 上,供iText 7.

我们可以从以下网站获取 iText 7 PDFHtml 模块i7n-pdfhtml GitHub 代码库.

您可以获取包含与 iText 7 相关的所有类文件的源代码,并将其作为解决方案中的参考。

Itextpdf Alternative Html To Pdf Csharp 9 related to 5.1 直接从 iText Source 网站下载

6.从 URL 创建 PDF

PDF 库和网页源文件到 PDF 的转换器都很有用。 让我们看看如何从网页 URL 制作 PDF 文件。

6.1 使用 IronPDF

我们可以使用 IronPDF 轻松创建 PDF。 它将从 URL 生成网页源文件,并将其转换为新文档。

以下步骤可轻松创建 PDF 文档。

using System.Diagnostics;
using System.IO;
using System.Net;
using System.Text;
namespace PdfConsoleApp
{
    internal class Program
    {
        public static void Main(string [] args)
        {
        IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
        var Pdf = Renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/%22Hello,_World!%22_program");
        Pdf.SaveAs("result.pdf");

        // or optionally:

        var Renderer = new IronPdf.ChromePdfRenderer().
        RenderUrlAsPdf("https://en.wikipedia.org/wiki/%22Hello,_World!%22_program").SaveAs("result.pdf");
        }
    }
}
using System.Diagnostics;
using System.IO;
using System.Net;
using System.Text;
namespace PdfConsoleApp
{
    internal class Program
    {
        public static void Main(string [] args)
        {
        IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
        var Pdf = Renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/%22Hello,_World!%22_program");
        Pdf.SaveAs("result.pdf");

        // or optionally:

        var Renderer = new IronPdf.ChromePdfRenderer().
        RenderUrlAsPdf("https://en.wikipedia.org/wiki/%22Hello,_World!%22_program").SaveAs("result.pdf");
        }
    }
}
Imports System.Diagnostics
Imports System.IO
Imports System.Net
Imports System.Text
Namespace PdfConsoleApp
	Friend Class Program
		Public Shared Sub Main(ByVal args() As String)
		Dim Renderer As New IronPdf.ChromePdfRenderer()
		Dim Pdf = Renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/%22Hello,_World!%22_program")
		Pdf.SaveAs("result.pdf")

		' or optionally:

		Dim Renderer = (New IronPdf.ChromePdfRenderer()).RenderUrlAsPdf("https://en.wikipedia.org/wiki/%22Hello,_World!%22_program").SaveAs("result.pdf")
		End Sub
	End Class
End Namespace
VB   C#

上面有两种方法可以将网页 URL 转换成 PDF 文档并保存,如上例所示。 第一种方法是通过构建 IronPDF PDF 文档来创建文档,而另一种方法是在同一行中渲染 URL 并将其保存为 PDF。这样可以将页面源下载成一大块,并将其转换成文档,从而加快处理速度。

在上面的示例中,我们使用 RenderUrlAsPdf 将网页转换为文档。 只需提供链接和保存位置。 PDF 转换只需 7.3 秒即可完成。

6.2 使用 iText

iText PDF 还允许我们创建 PDF 文档。 在 iText 上,我们需要一个 WebClient 函数,同时需要从 URL 生成 PDF。 客户端功能允许我们将 URL 下载为字符串,然后将字符串转换为 PDF 文件。

在 iText 中,我们需要不同的类来生成 PDF 文档。 PdfWriter 是一个允许我们在指定位置创建空文件并为该类创建对象的类。 PdfDocument 也是一个可以帮助我们读取 PDF 并将其写入 PDF 文档对象的类。 PageSize 也是一个帮助我们处理文档页面设置的类。

ConverterProperties 是一个用于在 PDF 文档中格式化网页字符串的类。 有不同的属性可以设置页面宽度等。

HtmlConverter 是命名空间 iText.Html2pdf.HtmlConverter 中的一个类。 HTML 转换器是一个具有 "ConvertToPdf "功能的类。 这是一个静态函数,允许我们将下载的网页写入 PDF 文件。但是,我们需要将 PdfWriter 和 ConverterProperties 对象作为参数传递给 HTML 转换器。

using iText.Html2pdf;
using iText.Kernel.Geom;
using iText.Kernel.Pdf;
using iText.StyledXmlParser.Css.Media;
namespace PdfConsoleApp
{
    internal class Program
    {
        public static void Main(string [] args)
        {            
    PdfWriter writer = new PdfWriter("itext.pdf");
            PdfDocument pdf = new PdfDocument(writer);
            PageSize pageSize = new PageSize(850, 1700);
            pdf.SetDefaultPageSize(pageSize);
            ConverterProperties properties = new ConverterProperties();
            MediaDeviceDescription mediaDeviceDescription =
                new MediaDeviceDescription(MediaType.SCREEN);
            mediaDeviceDescription.SetWidth(pageSize.GetWidth());
            properties.SetMediaDeviceDescription(mediaDeviceDescription);
            string strdownload = new WebClient().DownloadString("https://en.wikipedia.org/wiki/%22Hello,_World!%22_program");
            HtmlConverter.ConvertToPdf(strdownload, pdf, properties);
}
}
}
using iText.Html2pdf;
using iText.Kernel.Geom;
using iText.Kernel.Pdf;
using iText.StyledXmlParser.Css.Media;
namespace PdfConsoleApp
{
    internal class Program
    {
        public static void Main(string [] args)
        {            
    PdfWriter writer = new PdfWriter("itext.pdf");
            PdfDocument pdf = new PdfDocument(writer);
            PageSize pageSize = new PageSize(850, 1700);
            pdf.SetDefaultPageSize(pageSize);
            ConverterProperties properties = new ConverterProperties();
            MediaDeviceDescription mediaDeviceDescription =
                new MediaDeviceDescription(MediaType.SCREEN);
            mediaDeviceDescription.SetWidth(pageSize.GetWidth());
            properties.SetMediaDeviceDescription(mediaDeviceDescription);
            string strdownload = new WebClient().DownloadString("https://en.wikipedia.org/wiki/%22Hello,_World!%22_program");
            HtmlConverter.ConvertToPdf(strdownload, pdf, properties);
}
}
}
Imports iText.Html2pdf
Imports iText.Kernel.Geom
Imports iText.Kernel.Pdf
Imports iText.StyledXmlParser.Css.Media
Namespace PdfConsoleApp
	Friend Class Program
		Public Shared Sub Main(ByVal args() As String)
	Dim writer As New PdfWriter("itext.pdf")
			Dim pdf As New PdfDocument(writer)
			Dim pageSize As New PageSize(850, 1700)
			pdf.SetDefaultPageSize(pageSize)
			Dim properties As New ConverterProperties()
			Dim mediaDeviceDescription As New MediaDeviceDescription(MediaType.SCREEN)
			mediaDeviceDescription.SetWidth(pageSize.GetWidth())
			properties.SetMediaDeviceDescription(mediaDeviceDescription)
			Dim strdownload As String = (New WebClient()).DownloadString("https://en.wikipedia.org/wiki/%22Hello,_World!%22_program")
			HtmlConverter.ConvertToPdf(strdownload, pdf, properties)
		End Sub
	End Class
End Namespace
VB   C#

结果

Itextpdf Alternative Html To Pdf Csharp 10 related to 6.2 使用 iText

下面是 IronPDF 和 iText 生成的 PDF。 左边的 PDF 由 IronPDF 生成,右边的 PDF 文件由 iText 生成。 以下是生成 PDF 所需的时间。

Itextpdf Alternative Html To Pdf Csharp 11 related to 6.2 使用 iText

结果会因网络带宽而变化。

7.使用 HTML 创建 PDF

IronPDF 和 iText 都提供了将 HTML 字符串转换为 PDF 的方法。 这两个库都提供了一种简单的方法。

7.1 使用 IronPDF

我们可以借助 IronPDF 将网页源转化为文档。 下面是一个如何将 HTML 字符串转化为文档的示例。 它还能将任何标签元素转化为 PDF 文档。

var Renderer = new IronPdf.ChromePdfRenderer().RenderHtmlAsPdf("<h1>Hello world!!</h1>").SaveAs("result.pdf");
var Renderer = new IronPdf.ChromePdfRenderer().RenderHtmlAsPdf("<h1>Hello world!!</h1>").SaveAs("result.pdf");
Dim Renderer = (New IronPdf.ChromePdfRenderer()).RenderHtmlAsPdf("<h1>Hello world!!</h1>").SaveAs("result.pdf")
VB   C#

上例演示了如何使用 RenderHtmlAsPdf 转换 HTML 字符串。 此外,我们还可以向将网页源代码转换为字符串的函数提供任意数量的 HTML 字符串。 在获取字符串后,我们可以使用另存为函数保存文档。 完成这一过程需要 2.7 秒。

7.2 使用 iText

借助 iText PDF,我们可以将网页源字符串转换成 PDF。 下面是一个如何从网页源字符串创建文档的示例。 它还能将任何标签元素转换成新文档。

PdfWriter writer = new PdfWriter("itext.pdf");
PdfDocument pdf = new PdfDocument(writer);
PageSize pageSize = new PageSize(850, 1700);
pdf.SetDefaultPageSize(pageSize);
ConverterProperties properties = new ConverterProperties();
MediaDeviceDescription mediaDeviceDescription =
    new MediaDeviceDescription(MediaType.SCREEN);
mediaDeviceDescription.SetWidth(pageSize.GetWidth());
properties.SetMediaDeviceDescription(mediaDeviceDescription);
HtmlConverter.ConvertToPdf("<h1>Hello world!!</h1>", pdf, properties);
PdfWriter writer = new PdfWriter("itext.pdf");
PdfDocument pdf = new PdfDocument(writer);
PageSize pageSize = new PageSize(850, 1700);
pdf.SetDefaultPageSize(pageSize);
ConverterProperties properties = new ConverterProperties();
MediaDeviceDescription mediaDeviceDescription =
    new MediaDeviceDescription(MediaType.SCREEN);
mediaDeviceDescription.SetWidth(pageSize.GetWidth());
properties.SetMediaDeviceDescription(mediaDeviceDescription);
HtmlConverter.ConvertToPdf("<h1>Hello world!!</h1>", pdf, properties);
Dim writer As New PdfWriter("itext.pdf")
Dim pdf As New PdfDocument(writer)
Dim pageSize As New PageSize(850, 1700)
pdf.SetDefaultPageSize(pageSize)
Dim properties As New ConverterProperties()
Dim mediaDeviceDescription As New MediaDeviceDescription(MediaType.SCREEN)
mediaDeviceDescription.SetWidth(pageSize.GetWidth())
properties.SetMediaDeviceDescription(mediaDeviceDescription)
HtmlConverter.ConvertToPdf("<h1>Hello world!!</h1>", pdf, properties)
VB   C#

这与 URL 到 PDF 的转换类似。 我们唯一需要删除的步骤是 WebClient,取而代之的是在参数中使用网页源代码字符串。 这将获取给定字符串并将其转换为新文档。

结果

Itextpdf Alternative Html To Pdf Csharp 12 related to 7.2 使用 iText

8.阅读 PDF 文档

我们可以阅读 PDF 文档使用 IronPDF 和 EO.pdf。

8.1 使用 IronPDF

IronPDF 可帮助我们读取现有的 PDF 文件。 以下是使用 IronPDF 读取 PDF 的示例。

var pdfDocument = IronPdf.PdfDocument.FromFile("result.pdf");
string AllText = pdfDocument.ExtractAllText();
var pdfDocument = IronPdf.PdfDocument.FromFile("result.pdf");
string AllText = pdfDocument.ExtractAllText();
Dim pdfDocument = IronPdf.PdfDocument.FromFile("result.pdf")
Dim AllText As String = pdfDocument.ExtractAllText()
VB   C#

如上代码所示,FromFile 方法用于从现有文件读取 PDF 并将其转换为 PDF 文档对象。 通过该对象,我们可以阅读 PDF 页面上可访问的文本和图像。 完成这一过程只需几毫秒。

8.2 使用 iText PDF

iText 软件还能让我们在不借助外部阅读器的情况下阅读文件。

using (PdfReader reader = new PdfReader("result.pdf"))
            {
                 text = new StringBuilder();
                PdfDocument pdf = new PdfDocument(reader);
                var strategy = new LocationTextExtractionStrategy();
                for (int i = 1; i <= pdf.GetNumberOfPages(); i++)
                {
                    var pdfpage = pdf.GetPage(i);
                    text.Append(PdfTextExtractor.GetTextFromPage(pdfpage, strategy));
                }
            }
using (PdfReader reader = new PdfReader("result.pdf"))
            {
                 text = new StringBuilder();
                PdfDocument pdf = new PdfDocument(reader);
                var strategy = new LocationTextExtractionStrategy();
                for (int i = 1; i <= pdf.GetNumberOfPages(); i++)
                {
                    var pdfpage = pdf.GetPage(i);
                    text.Append(PdfTextExtractor.GetTextFromPage(pdfpage, strategy));
                }
            }
Using reader As New PdfReader("result.pdf")
				 text = New StringBuilder()
				Dim pdf As New PdfDocument(reader)
				Dim strategy = New LocationTextExtractionStrategy()
				Dim i As Integer = 1
				Do While i <= pdf.GetNumberOfPages()
					Dim pdfpage = pdf.GetPage(i)
					text.Append(PdfTextExtractor.GetTextFromPage(pdfpage, strategy))
					i += 1
				Loop
End Using
VB   C#

上面的代码显示,我们可以使用 PDF 阅读器阅读文档。 我们唯一需要做的就是将文件位置作为参数传递。 PDF 阅读器读取文档并将其转换为一个对象,使用该对象我们可以读取所有页面的文本,为此我们需要将它们用于循环。

结果

Itextpdf Alternative Html To Pdf Csharp 13 related to 8.2 使用 iText PDF

9.分割 PDF 文档

IronPDF 和 iText PDF 库都允许用户将页面分割成单独的文档。 两者还提供了实现这一目标的简单方法。

9.1 使用 IronPDF

IronPDF 允许我们将文档页面拆分成单独的文档。 下面举例说明如何将页面分割成不同的文档。

var Splitdocument = IronPdf.PdfDocument.FromFile("result.pdf");
for (int i = 0; i < Splitdocument.PageCount; i++)
{
     Splitdocument.CopyPage(i).SaveAs("Ironpdfsplit"+i.ToString()+".pdf");
}
var Splitdocument = IronPdf.PdfDocument.FromFile("result.pdf");
for (int i = 0; i < Splitdocument.PageCount; i++)
{
     Splitdocument.CopyPage(i).SaveAs("Ironpdfsplit"+i.ToString()+".pdf");
}
Dim Splitdocument = IronPdf.PdfDocument.FromFile("result.pdf")
For i As Integer = 0 To Splitdocument.PageCount - 1
	 Splitdocument.CopyPage(i).SaveAs("Ironpdfsplit" & i.ToString() & ".pdf")
Next i
VB   C#

在前面的示例中,我们首先使用 pdf-document 类的 fromfile 方法加载一个现有文档。 通过 copypage 方法,我们可以从现有文档中复制页面;通过 SaveAs 方法,我们可以将文档保存为一个单独的文件。页码均以 0 开头。 因此,我们必须提供以 0 开头的页码。

9.2 使用 iText PDF

我们还可以使用 iText 7 分割 PDF 文档中的页面。不过,我们需要先编写一个单独的类文件,从 itext.kernel.Utils 命名空间继承 PdfSplitter。这将创建一个实例来分割 PDF 数据。 下面是一个代码示例:

using System;
using System.Diagnostics;
using System.IO;
using System.Net;
using System.Text;
using iText.Html2pdf;
using iText.Kernel.Geom;
using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Canvas.Parser;
using iText.Kernel.Pdf.Canvas.Parser.Listener;
using iText.Kernel.Utils;
using iText.StyledXmlParser.Css.Media;

namespace PdfConsoleApp
{
    internal class Program
    {
        static void Main(string [] args)
        {
            using (var pdfDoc = new PdfDocument(new PdfReader("result.pdf")))
            {
                var outputDir = @"Itext_{0}.pdf";
                var splitter = new CustomPdfSplitter(pdfDoc, outputDir);
                var splittedDocs = splitter.SplitByPageCount(1);
                foreach (var splittedDoc in splittedDocs)
                {
                    splittedDoc.Close();
                }
            }
            Console.ReadKey();
        }
    }
    public class CustomPdfSplitter : PdfSplitter
    {
        private String dest;
        private int partNumber = 1;

        public CustomPdfSplitter(PdfDocument pdfDocument, String dest) : base(pdfDocument)
        {
            this.dest = dest;
        }

        protected override PdfWriter GetNextPdfWriter(PageRange documentPageRange)
        {
            return new PdfWriter(String.Format(dest, partNumber++));
        }
    }
}
using System;
using System.Diagnostics;
using System.IO;
using System.Net;
using System.Text;
using iText.Html2pdf;
using iText.Kernel.Geom;
using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Canvas.Parser;
using iText.Kernel.Pdf.Canvas.Parser.Listener;
using iText.Kernel.Utils;
using iText.StyledXmlParser.Css.Media;

namespace PdfConsoleApp
{
    internal class Program
    {
        static void Main(string [] args)
        {
            using (var pdfDoc = new PdfDocument(new PdfReader("result.pdf")))
            {
                var outputDir = @"Itext_{0}.pdf";
                var splitter = new CustomPdfSplitter(pdfDoc, outputDir);
                var splittedDocs = splitter.SplitByPageCount(1);
                foreach (var splittedDoc in splittedDocs)
                {
                    splittedDoc.Close();
                }
            }
            Console.ReadKey();
        }
    }
    public class CustomPdfSplitter : PdfSplitter
    {
        private String dest;
        private int partNumber = 1;

        public CustomPdfSplitter(PdfDocument pdfDocument, String dest) : base(pdfDocument)
        {
            this.dest = dest;
        }

        protected override PdfWriter GetNextPdfWriter(PageRange documentPageRange)
        {
            return new PdfWriter(String.Format(dest, partNumber++));
        }
    }
}
Imports System
Imports System.Diagnostics
Imports System.IO
Imports System.Net
Imports System.Text
Imports iText.Html2pdf
Imports iText.Kernel.Geom
Imports iText.Kernel.Pdf
Imports iText.Kernel.Pdf.Canvas.Parser
Imports iText.Kernel.Pdf.Canvas.Parser.Listener
Imports iText.Kernel.Utils
Imports iText.StyledXmlParser.Css.Media

Namespace PdfConsoleApp
	Friend Class Program
		Shared Sub Main(ByVal args() As String)
			Using pdfDoc = New PdfDocument(New PdfReader("result.pdf"))
				Dim outputDir = "Itext_{0}.pdf"
				Dim splitter = New CustomPdfSplitter(pdfDoc, outputDir)
				Dim splittedDocs = splitter.SplitByPageCount(1)
				For Each splittedDoc In splittedDocs
					splittedDoc.Close()
				Next splittedDoc
			End Using
			Console.ReadKey()
		End Sub
	End Class
	Public Class CustomPdfSplitter
		Inherits PdfSplitter

		Private dest As String
		Private partNumber As Integer = 1

		Public Sub New(ByVal pdfDocument As PdfDocument, ByVal dest As String)
			MyBase.New(pdfDocument)
			Me.dest = dest
		End Sub

		Protected Overrides Function GetNextPdfWriter(ByVal documentPageRange As PageRange) As PdfWriter
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: return new PdfWriter(String.Format(dest, partNumber++));
			Dim tempVar = New PdfWriter(String.Format(dest, partNumber))
			partNumber += 1
			Return tempVar
		End Function
	End Class
End Namespace
VB   C#

我们创建了一个覆盖 pdfwriter 的自定义类,允许我们使用原始文件名以自定义名称重命名分割文件。 它稍后会将 PDF 页面返回到一个新的列表项中,然后可将其保存到一个单独的文档中。

结果

Itextpdf Alternative Html To Pdf Csharp 14 related to 9.2 使用 iText PDF

结论

IronPDF 不呈现HTML 转 PDF从远程服务器翻译。 在翻译过程中,翻译人员不能使用.NET、Java、Python 或 Node.js 浏览器,而是在幕后创建一个真正符合标准的网络浏览器实例(无需安装任何其他软件). HTML 的渲染是完全准确的,而且是矢量格式,适合最高标准的商业印刷。 输出的 PDF 文件干净整洁,质量上乘。 因此,IronPDF 比 iText PDF 更有优势。 强烈推荐务实的编码人员使用 IronPDF,以提高工作效率和成效。 它是公开的商业软件,其许可和定价详情都公布在其网站上。定价页.

iText PDF 支持多种字体,而我们只能使用内联样式表。 它不允许我们添加外部样式表,因为它没有将 HTML 转换为 PDF 文件的引擎或浏览器。 iText 可以正确、准确地渲染 HTML,但生成的 PDF 文件非常大。 iText 附带商业许可证和免费开发人员许可证。 要了解有关 iText 许可证的更多信息,请访问他们的iText Community 和 iText 7 许可证页面.

IronPDF 是希望快速高效工作的务实编码人员的必备工具。 最重要的是,它能为您节省时间。IronPDF 许可套餐提供终身许可,而且没有持续成本。

您可以从此处下载 IronPDF下载链接.

< 前一页
IronPDF与PDFreactor的比较
下一步 >
IronPDF与GemBox.Pdf的比较

准备开始了吗? 版本: 2024.12 刚刚发布

免费NuGet下载 总下载量: 11,781,565 查看许可证 >