在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
IronPDF 和 iText 7 (旧称 iTextSharp) 两者都提供生成、操作和 打印 PDF .NET和.NET Core。
其中 C# PDF 库 最适合您的 .NET 项目? 本文旨在帮助读者做出正确、明智的决定。
HtmlConverter.ConvertToPDF
将 HTML 文件转换为 PDF 文件的方法IronPDF 是:
iText (iTextSharp) 是:
iTextSharp 已经存在了至少 6 年,它基于名为 iText 的开放源码 Java 代码库,仍然带有一些 Java 的味道。 最初学习 Java 的开发人员可能会对这个库感到熟悉。
IronPDF 是一个.NET-first 库,其应用程序接口是围绕在 Visual Studio 中的易用性而设计的。.NET已经存在了近20年,不断发展壮大,开辟了许多可能性,而IronPDF正是为了利用这些可能性而设计的。它允许我们在.NET框架项目中创建和处理PDF文档。您可以将 IronPDF 下载为 iTextSharp 替代方案.
iText 和 IronPDF 的渲染 API 有很大不同。让我们比较一下为 PDF 文档添加页眉和页脚的各个代码段。
Renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 16
};
Renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 14
};
Renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 16
};
Renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 14
};
Renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
.CenterText = "{pdf-title}",
.DrawDividerLine = True,
.FontSize = 16
}
Renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
.LeftText = "{date} {time}",
.RightText = "Page {page} of {total-pages}",
.DrawDividerLine = True,
.FontSize = 14
}
Paragraph header = new Paragraph("HEADER")
.SetTextAlignment(TextAlignment.CENTER)
.SetFontSize(16);
document.Add(header);
for (int i = 1; i <= pdf.GetNumberOfPages(); i++)
{
Rectangle pageSize = pdf.GetPage(i).GetPageSize();
float x = pageSize.GetWidth() / 2;
float y = pageSize.GetTop() - 20;
document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0);
}
document.SetTopMargin(50);
document.SetBottomMargin(50);
Paragraph header = new Paragraph("HEADER")
.SetTextAlignment(TextAlignment.CENTER)
.SetFontSize(16);
document.Add(header);
for (int i = 1; i <= pdf.GetNumberOfPages(); i++)
{
Rectangle pageSize = pdf.GetPage(i).GetPageSize();
float x = pageSize.GetWidth() / 2;
float y = pageSize.GetTop() - 20;
document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0);
}
document.SetTopMargin(50);
document.SetBottomMargin(50);
Dim header As Paragraph = (New Paragraph("HEADER")).SetTextAlignment(TextAlignment.CENTER).SetFontSize(16)
document.Add(header)
Dim i As Integer = 1
Do While i <= pdf.GetNumberOfPages()
Dim pageSize As Rectangle = pdf.GetPage(i).GetPageSize()
'INSTANT VB WARNING: Instant VB cannot determine whether both operands of this division are integer types - if they are then you should use the VB integer division operator:
Dim x As Single = pageSize.GetWidth() / 2
Dim y As Single = pageSize.GetTop() - 20
document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0)
i += 1
Loop
document.SetTopMargin(50)
document.SetBottomMargin(50)
通过快速浏览代码,您可以发现 IronPDF 是基于普通最终用户需求的实用工具。
iText 是一个较低级的库,主要用于在页面中添加对象、形状和文本的绘图 API。
iTextSharp.dll 主要使用编程模型来渲染 PDF。使用 iTextSharp PDF 库时,PDF 中的每个文本、图形、表格或线条都会 "绘制 "或绘制到 PDF 上。应用程序接口(API)的级别较低,主要针对 PDF 文档标准。这种模式允许精确度,但可能需要开发人员学习一些有关 PDF 工作原理的知识。密切匹配现有的设计风格或网络资产可能需要反复迭代,并读取 iTextSharp 文档. 为了与传统保持一致,其方法和编程界面都带有明显的 Java 风格。
相比之下,IronPDF 使用完全嵌入式网络浏览器渲染器来 将 HTML 转换为 PDF. 以下是简短的 (单线和双线) C# 代码示例通过 iText,开发人员可以从现有的或新的 HTML、图像和 CSS 生成 PDF。 这样,开发人员就能与现有的网络资产紧密配合,并在项目中与设计人员并行工作。iText 确实包括用于 C# .NET 的 HTML 转 PDF 功能,但这显然不是该库的主要功能。
请继续阅读,了解有关 IronPDF 和 iTextSharp 帮助开发人员实现以下目标的不同方式的更多比较细节:
iTextSharp 是 AGPL 许可协议下的开源软件。在 AGLP 许可协议下,任何人使用包含 iTextSharp 的应用程序的任何部分,都必须遵守以下规定 (甚至跨越公司网络或互联网) 可能有权获得应用程序完整源代码的完整副本。这对于学术工作来说是极好的。如果我们希望在商业应用程序中使用 iTextSharp,最好的做法是联系 iText 和 向他们索取 iText 商业用途的报价.
IronPDF 是 免费开发,然后可以 获得商业部署许可 公开发布的合理价格,起价为 $749。
这就是两个图书馆的对比:
通过完整的内置网络浏览器将 HTML 转换为 PDF | 通过 pdfHTML 附加组件将基本 HTML 转换为 PDF |
渲染重点:嵌入式网络浏览器 | 渲染重点:程序化绘图模型 |
IronPDF 有明确的许可证和公布的价格 | AGPL!未公布商业用途定价。 |
采用 .NET First 设计,易于编码 | 基于 Java API |
不适合学术作业和课业 | 非常适合学术作业和研究 |
IronPDF 使 .NET 和 .NET Core 开发人员能够在 C#、F# 和 VB.NET 中轻松生成、合并、分割、编辑和提取 PDF 内容。 创建 PDF 来自 HTML、ASPX、CSS、JS 和图像文件。
它利用完全嵌入式网络浏览器将 HTML 转换为 PDF。这样,开发人员就能从 HTML、图像和 CSS 生成 PDF,并与现有的网络资产紧密合作,还能在项目期间与设计人员并行工作。
IronPDF 真正关注开发人员的工作效率。该库将许多常见的复杂 PDF 代码任务简化为方便的 C# 方法,用于提取文本和图像、签署 PDFS、使用新的 HTML 编辑 PDFS 等,开发人员无需研究 PDF 文档标准就能了解如何实现最佳效果。
"(《世界人权宣言》) iTextSharp.dll 主要使用编程模型来渲染 PDF,它拥有先进的 PDF 操作 API,功能强大且严格遵循 PDF 标准。
让我们利用这两个库创建一个示例项目进行比较:
使用以下步骤创建 ASP.NET 网站:
1.打开 Visual Studio
2.点击文件 > 新建项目
3.在项目类型列表框中选择 Visual C# 下的 Web
4.选择 ASP.NET Web 应用程序
现在我们有东西可以用了。让我们安装 IronPDF。
要使用 IronPDF,首先需要安装它 (免费的).有两种选择:
让我们仔细看看。
开始在您的项目中使用IronPDF,并立即获取免费试用。
查看 IronPDF 上 Nuget 用于快速安装和部署。它有超过800万次下载,正在使用C#改变PDF。
Install-Package IronPdf
考虑安装 IronPDF DLL 直接。下载并手动安装到您的项目或GAC表单中: IronPdf.zip
手动安装到你的项目中
下载DLL安装 IronPDF NuGet 软件包有三种方法:
1.Visual Studio
2.开发人员命令提示符
3.直接下载 NuGet 软件包
让我们逐一完成它们。
Visual Studio 提供了 NuGet 包管理器,供你在项目中安装 NuGet 包。你可以通过 "项目菜单 "或在 "解决方案资源管理器 "中右键单击你的项目来访问它。这两个选项如下图 3 和图 4 所示
单击任一选项中的 "管理 NuGet 包 "后,浏览 IronPDF 包并安装,如图 5 所示。
以下步骤将打开开发人员命令提示符并安装 IronPDF NuGet 软件包
1.搜索你的开发人员命令提示符 - 它通常在你的 Visual Studio 文件夹下
2.键入以下命令 PM > 安装软件包 IronPdf
3.按回车键
4.软件包将被安装
5.重新加载 Visual Studio 项目
为了下载 NuGet 软件包:
1.导航至 https://www.nuget.org/packages/IronPdf/
2.点击下载软件包
3.下载软件包后,双击
4.重新加载 Visual Studio 项目
安装 IronPDF 的第二种方法是 直接下载.
通过以下步骤在项目中引用库:
1.右键单击解决方案资源管理器中的解决方案
2.选择引用
3.浏览 IronPDF.dll 库
4.点击确定
设置完成后,我们就可以开始使用 iTextSharp 设置后 IronPDF 库中的超强功能了。
有三种方法 安装 iTextSharp NuGet 它们是
让我们逐一完成它们。
在 Visual Studio 中,搜索 iText 并安装相关软件包,如下图所示。
或者,在开发人员命令提示符中 (如前所示,输入以下命令)
或下载 iText 7 直接从其网站获取。
现在您已经创建了必要的项目,让我们在代码中比较一下这两个库。
以下代码下载网页并将其转换为 PDF 文档。
以下代码使用 IronPDF 直接从网站地址创建 PDF 文档。还包括自定义页眉和页脚。
/**
IronPDF URL to PDF
anchor-ironpdf-website-to-pdf
**/
private void ExistingWebURL()
{
// Create a PDF from any existing web page
var Renderer = new IronPdf.ChromePdfRenderer();
// Create a PDF from an existing HTML
Renderer.RenderingOptions.MarginTop = 50; //millimetres
Renderer.RenderingOptions.MarginBottom = 50;
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
Renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 16
};
Renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 14
};
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
Renderer.RenderingOptions.EnableJavaScript = true;
Renderer.RenderingOptions.RenderDelay = 500; //milliseconds
using var PDF = Renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Portable_Document_Format");
PDF.SaveAs("wikipedia.pdf");
}
/**
IronPDF URL to PDF
anchor-ironpdf-website-to-pdf
**/
private void ExistingWebURL()
{
// Create a PDF from any existing web page
var Renderer = new IronPdf.ChromePdfRenderer();
// Create a PDF from an existing HTML
Renderer.RenderingOptions.MarginTop = 50; //millimetres
Renderer.RenderingOptions.MarginBottom = 50;
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
Renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 16
};
Renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 14
};
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
Renderer.RenderingOptions.EnableJavaScript = true;
Renderer.RenderingOptions.RenderDelay = 500; //milliseconds
using var PDF = Renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Portable_Document_Format");
PDF.SaveAs("wikipedia.pdf");
}
'''
'''IronPDF URL to PDF
'''anchor-ironpdf-website-to-pdf
'''*
Private Sub ExistingWebURL()
' Create a PDF from any existing web page
Dim Renderer = New IronPdf.ChromePdfRenderer()
' Create a PDF from an existing HTML
Renderer.RenderingOptions.MarginTop = 50 'millimetres
Renderer.RenderingOptions.MarginBottom = 50
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
Renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
.CenterText = "{pdf-title}",
.DrawDividerLine = True,
.FontSize = 16
}
Renderer.RenderingOptions.TextFooter = New TextHeaderFooter() With {
.LeftText = "{date} {time}",
.RightText = "Page {page} of {total-pages}",
.DrawDividerLine = True,
.FontSize = 14
}
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
Renderer.RenderingOptions.EnableJavaScript = True
Renderer.RenderingOptions.RenderDelay = 500 'milliseconds
Dim PDF = Renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Portable_Document_Format")
PDF.SaveAs("wikipedia.pdf")
End Sub
以下代码使用 iText7 直接从网站地址创建 PDF 文档,并添加页眉和页脚。
/**
iText URL to PDF
anchor-itext-url-to-pdf
**/
private void ExistingWebURL()
{
//Initialize PDF writer
PdfWriter writer = new PdfWriter("wikipedia.pdf");
//Initialize PDF document
using PdfDocument pdf = new PdfDocument(writer);
ConverterProperties properties = new ConverterProperties();
properties.SetBaseUri("https://en.wikipedia.org/wiki/Portable_Document_Format");
Document document = HtmlConverter.ConvertToDocument(new FileStream("Test_iText7_1.pdf", FileMode.Open), pdf, properties);
Paragraph header = new Paragraph("HEADER")
.SetTextAlignment(TextAlignment.CENTER)
.SetFontSize(16);
document.Add(header);
for (int i = 1; i <= pdf.GetNumberOfPages(); i++)
{
Rectangle pageSize = pdf.GetPage(i).GetPageSize();
float x = pageSize.GetWidth() / 2;
float y = pageSize.GetTop() - 20;
document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0);
}
document.SetTopMargin(50);
document.SetBottomMargin(50);
document.Close();
}
/**
iText URL to PDF
anchor-itext-url-to-pdf
**/
private void ExistingWebURL()
{
//Initialize PDF writer
PdfWriter writer = new PdfWriter("wikipedia.pdf");
//Initialize PDF document
using PdfDocument pdf = new PdfDocument(writer);
ConverterProperties properties = new ConverterProperties();
properties.SetBaseUri("https://en.wikipedia.org/wiki/Portable_Document_Format");
Document document = HtmlConverter.ConvertToDocument(new FileStream("Test_iText7_1.pdf", FileMode.Open), pdf, properties);
Paragraph header = new Paragraph("HEADER")
.SetTextAlignment(TextAlignment.CENTER)
.SetFontSize(16);
document.Add(header);
for (int i = 1; i <= pdf.GetNumberOfPages(); i++)
{
Rectangle pageSize = pdf.GetPage(i).GetPageSize();
float x = pageSize.GetWidth() / 2;
float y = pageSize.GetTop() - 20;
document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0);
}
document.SetTopMargin(50);
document.SetBottomMargin(50);
document.Close();
}
'''
'''iText URL to PDF
'''anchor-itext-url-to-pdf
'''*
Private Sub ExistingWebURL()
'Initialize PDF writer
Dim writer As New PdfWriter("wikipedia.pdf")
'Initialize PDF document
Using pdf As New PdfDocument(writer)
Dim properties As New ConverterProperties()
properties.SetBaseUri("https://en.wikipedia.org/wiki/Portable_Document_Format")
Dim document As Document = HtmlConverter.ConvertToDocument(New FileStream("Test_iText7_1.pdf", FileMode.Open), pdf, properties)
Dim header As Paragraph = (New Paragraph("HEADER")).SetTextAlignment(TextAlignment.CENTER).SetFontSize(16)
document.Add(header)
Dim i As Integer = 1
Do While i <= pdf.GetNumberOfPages()
Dim pageSize As Rectangle = pdf.GetPage(i).GetPageSize()
'INSTANT VB WARNING: Instant VB cannot determine whether both operands of this division are integer types - if they are then you should use the VB integer division operator:
Dim x As Single = pageSize.GetWidth() / 2
Dim y As Single = pageSize.GetTop() - 20
document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0)
i += 1
Loop
document.SetTopMargin(50)
document.SetBottomMargin(50)
document.Close()
End Using
End Sub
使用 iText 7 时,作者需要花费更多时间编写代码,才能将给定 URL 上的文档转换为 PDF。需要两行代码:
MemoryStream wiki = GetStreamFromUrl("https://en.wikipedia.org/wiki/Tiger");
HtmlConverter.ConvertToPdf(wiki, new FileStream("wikipedia.pdf",FileMode.OpenOrCreate));
MemoryStream wiki = GetStreamFromUrl("https://en.wikipedia.org/wiki/Tiger");
HtmlConverter.ConvertToPdf(wiki, new FileStream("wikipedia.pdf",FileMode.OpenOrCreate));
Dim wiki As MemoryStream = GetStreamFromUrl("https://en.wikipedia.org/wiki/Tiger")
HtmlConverter.ConvertToPdf(wiki, New FileStream("wikipedia.pdf",FileMode.OpenOrCreate))
必须创建一个 MemoryStream 对象和一个 FileStream 对象,并设置属性。
让我们来看看IronPDF。
IronPDF 需要三行代码 (如果在代码段底部也包含SaveAs方法的话)除此之外,只需要两行:
var Renderer = new IronPdf.ChromePdfRenderer();
using var PDF = Renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Portable_Document_Format");
PDF.SaveAs("wikipedia.pdf")
var Renderer = new IronPdf.ChromePdfRenderer();
using var PDF = Renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Portable_Document_Format");
PDF.SaveAs("wikipedia.pdf")
Dim Renderer = New IronPdf.ChromePdfRenderer()
Dim PDF = Renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Portable_Document_Format")
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'PDF.SaveAs("wikipedia.pdf")
不需要 FileStream 或额外的 .NET 对象,因为所有功能似乎都内置于 IronPdf RenderUrlAsPdf 方法中。
我现在加入输出比较,因为它适用于本教程中的所有后续练习。
通过这段代码,我们将 Tiger Wikipedia 转变为 网页到 PDF 这两个图书馆。
使用 iText 库输出的文件有 49 页。它没有呈现 JavaScript 或 CSS。输出结果如下所示:
使用 IronPDF 库输出的文件有 12 页。它能很好地渲染 JavaScript 和 CSS。输出结果如下所示:
一图胜千言....IronPDF 在 HTML 到 PDF 的渲染方面大放异彩。
下一段代码将创建 PDF 文档并打印其中的 HTML 字符串。
以下代码利用 IronPDF 生成包含 HTML 输入内容的 PDF。
/**
IronPDF HTML to PDF
anchor-ironpdf-document-from-html
**/
private void HTMLString()
{
// Render any HTML fragment or document to HTML
var Renderer = new IronPdf.ChromePdfRenderer();
using var PDF = Renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");
Renderer.RenderingOptions.TextFooter = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>" };
var OutputPath = "ChromePdfRenderer.pdf";
PDF.SaveAs(OutputPath);
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen;
}
/**
IronPDF HTML to PDF
anchor-ironpdf-document-from-html
**/
private void HTMLString()
{
// Render any HTML fragment or document to HTML
var Renderer = new IronPdf.ChromePdfRenderer();
using var PDF = Renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");
Renderer.RenderingOptions.TextFooter = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>" };
var OutputPath = "ChromePdfRenderer.pdf";
PDF.SaveAs(OutputPath);
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen;
}
'''
'''IronPDF HTML to PDF
'''anchor-ironpdf-document-from-html
'''*
Private Sub HTMLString()
' Render any HTML fragment or document to HTML
Dim Renderer = New IronPdf.ChromePdfRenderer()
Dim PDF = Renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>")
Renderer.RenderingOptions.TextFooter = New HtmlHeaderFooter() With {.HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>"}
Dim OutputPath = "ChromePdfRenderer.pdf"
PDF.SaveAs(OutputPath)
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen
End Sub
以下代码使用 iText7 创建包含 HTML 文本的 PDF。
/**
iText HTML to PDF
anchor-itext-html-to-pdf
**/
private void HTMLString()
{
HtmlConverter.ConvertToPdf("< h1 > Hello iText7 </ h1 >", new FileStream("ChromePdfRenderer.pdf", FileMode.Create));
}
/**
iText HTML to PDF
anchor-itext-html-to-pdf
**/
private void HTMLString()
{
HtmlConverter.ConvertToPdf("< h1 > Hello iText7 </ h1 >", new FileStream("ChromePdfRenderer.pdf", FileMode.Create));
}
'''
'''iText HTML to PDF
'''anchor-itext-html-to-pdf
'''*
Private Sub HTMLString()
HtmlConverter.ConvertToPdf("< h1 > Hello iText7 </ h1 >", New FileStream("ChromePdfRenderer.pdf", FileMode.Create))
End Sub
iText 再次使用HtmlConverter.ConvertToPdf调用来发送 HTML 字符串,以输出 PDF 格式。
IronPDF 则使用专门用于处理 HTML 和 PDF 的 RenderHtmlAsPdf 方法。
这两种方法都非常快捷,但 IronPDF 允许对渲染过程进行大量控制,甚至可以使用 HTML 为 PDF 页面添加页眉和页脚。
下一段代码将从 ASPX 页面创建 PDF 文档。
以下代码利用 IronPDF 从 ASPX 文件创建包含 PDF 内容的文件。 只需在 Page_Load 事件中添加一行代码,Web 表单就会变成动态 PDF。 IronPdf.AspxToPdf.RenderThisPageAsPdf();`
/**
IronPDF ASPX to PDF
anchor-ironpdf-render-pdf-from-aspx
**/
protected void Page_Load(object sender, EventArgs e)
{
IronPdf.AspxToPdf.RenderThisPageAsPdf();
}
/**
IronPDF ASPX to PDF
anchor-ironpdf-render-pdf-from-aspx
**/
protected void Page_Load(object sender, EventArgs e)
{
IronPdf.AspxToPdf.RenderThisPageAsPdf();
}
'''
'''IronPDF ASPX to PDF
'''anchor-ironpdf-render-pdf-from-aspx
'''*
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
IronPdf.AspxToPdf.RenderThisPageAsPdf()
End Sub
iText7 的 pdfHTML 库似乎不支持从 ASPX 网页创建 PDF。这一功能需要根据项目的具体情况进行编码。
开发人员应从框架中获取 HTML,然后 pdfHTML 附加组件将接受 HTML 并将其转换为 PDF。
以下代码将 XML 转换为 PDF
/**
IronPDF XML to PDF
anchor-ironpdf-creates-pdf-from-xml
**/
private void XMLtoPDF(string XSLT, string XML)
{
XslCompiledTransform transform = new XslCompiledTransform();
using(XmlReader reader = XmlReader.Create(new StringReader(XSLT)))
{
transform.Load(reader);
}
StringWriter results = new StringWriter();
using(XmlReader reader = XmlReader.Create(new StringReader(XML)))
{
transform.Transform(reader, null, results);
}
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
// options, headers, and footers may be set there
// Render our XML as a PDF via XSLT
Renderer.RenderHtmlAsPdf(results.ToString()).SaveAs("XMLtoPDF.pdf");
}
/**
IronPDF XML to PDF
anchor-ironpdf-creates-pdf-from-xml
**/
private void XMLtoPDF(string XSLT, string XML)
{
XslCompiledTransform transform = new XslCompiledTransform();
using(XmlReader reader = XmlReader.Create(new StringReader(XSLT)))
{
transform.Load(reader);
}
StringWriter results = new StringWriter();
using(XmlReader reader = XmlReader.Create(new StringReader(XML)))
{
transform.Transform(reader, null, results);
}
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
// options, headers, and footers may be set there
// Render our XML as a PDF via XSLT
Renderer.RenderHtmlAsPdf(results.ToString()).SaveAs("XMLtoPDF.pdf");
}
'''
'''IronPDF XML to PDF
'''anchor-ironpdf-creates-pdf-from-xml
'''*
Private Sub XMLtoPDF(ByVal XSLT As String, ByVal XML As String)
Dim transform As New XslCompiledTransform()
Using reader As XmlReader = XmlReader.Create(New StringReader(XSLT))
transform.Load(reader)
End Using
Dim results As New StringWriter()
Using reader As XmlReader = XmlReader.Create(New StringReader(XML))
transform.Transform(reader, Nothing, results)
End Using
Dim Renderer As New IronPdf.ChromePdfRenderer()
' options, headers, and footers may be set there
' Render our XML as a PDF via XSLT
Renderer.RenderHtmlAsPdf(results.ToString()).SaveAs("XMLtoPDF.pdf")
End Sub
XSLT 文件的结构如下:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<p>Titles:
<xsl:for-each select="catalog/cd">
<xsl:value-of select="title"/>
<xsl:if test="position() < last()-1">
<xsl:text>, </xsl:text>
</xsl:if>
<xsl:if test="position()=last()-1">
<xsl:text>, and </xsl:text>
</xsl:if>
<xsl:if test="position()=last()">
<xsl:text>!</xsl:text>
</xsl:if>
</xsl:for-each>
</p>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<p>Titles:
<xsl:for-each select="catalog/cd">
<xsl:value-of select="title"/>
<xsl:if test="position() < last()-1">
<xsl:text>, </xsl:text>
</xsl:if>
<xsl:if test="position()=last()-1">
<xsl:text>, and </xsl:text>
</xsl:if>
<xsl:if test="position()=last()">
<xsl:text>!</xsl:text>
</xsl:if>
</xsl:for-each>
</p>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
iText 的支持处理 XML 至 PDF 可能需要定制开发工作。
下一段代码将从外部来源获取数据并创建相应的图表。
以下代码使用 IronPDF 快速创建图表,并使用 HTML to PDF 设置页面属性。
/**
IronPDF Create Chart
anchor-ironpdf-chart-creation
**/
private void Chart()
{
var Renderer = new ChromePdfRenderer();
using var PDF = Renderer.RenderUrlAsPdf("https://bl.ocks.org/mbostock/4062006");
Renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
Renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Landscape;
PDF.SaveAs("chart.pdf");
}
/**
IronPDF Create Chart
anchor-ironpdf-chart-creation
**/
private void Chart()
{
var Renderer = new ChromePdfRenderer();
using var PDF = Renderer.RenderUrlAsPdf("https://bl.ocks.org/mbostock/4062006");
Renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
Renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Landscape;
PDF.SaveAs("chart.pdf");
}
'''
'''IronPDF Create Chart
'''anchor-ironpdf-chart-creation
'''*
Private Sub Chart()
Dim Renderer = New ChromePdfRenderer()
Dim PDF = Renderer.RenderUrlAsPdf("https://bl.ocks.org/mbostock/4062006")
Renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4
Renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Landscape
PDF.SaveAs("chart.pdf")
End Sub
以下代码使用 iText7 创建图表并设置属性。我们可以看到程序化的绘图-api 风格。
/**
iText Create Chart
anchor-itext-c-charts
**/
private void Chart()
{
//Initialize PDF writer
PdfWriter writer = new PdfWriter("chart.pdf");
//Initialize PDF document
using PdfDocument pdf = new PdfDocument(writer);
ConverterProperties properties = new ConverterProperties();
properties.SetBaseUri("https://bl.ocks.org/mbostock/4062006");
Document document = HtmlConverter.ConvertToDocument(new FileStream("Test_iText7_1.pdf", FileMode.Open), pdf, properties);
Paragraph header = new Paragraph("HEADER")
.SetTextAlignment(TextAlignment.CENTER)
.SetFontSize(16);
document.Add(header);
for (int i = 1; i <= pdf.GetNumberOfPages(); i++)
{
Rectangle pageSize = pdf.GetPage(i).GetPageSize();
float x = pageSize.GetWidth() / 2;
float y = pageSize.GetTop() - 20;
document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0);
}
document.Close();
}
/**
iText Create Chart
anchor-itext-c-charts
**/
private void Chart()
{
//Initialize PDF writer
PdfWriter writer = new PdfWriter("chart.pdf");
//Initialize PDF document
using PdfDocument pdf = new PdfDocument(writer);
ConverterProperties properties = new ConverterProperties();
properties.SetBaseUri("https://bl.ocks.org/mbostock/4062006");
Document document = HtmlConverter.ConvertToDocument(new FileStream("Test_iText7_1.pdf", FileMode.Open), pdf, properties);
Paragraph header = new Paragraph("HEADER")
.SetTextAlignment(TextAlignment.CENTER)
.SetFontSize(16);
document.Add(header);
for (int i = 1; i <= pdf.GetNumberOfPages(); i++)
{
Rectangle pageSize = pdf.GetPage(i).GetPageSize();
float x = pageSize.GetWidth() / 2;
float y = pageSize.GetTop() - 20;
document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0);
}
document.Close();
}
'''
'''iText Create Chart
'''anchor-itext-c-charts
'''*
Private Sub Chart()
'Initialize PDF writer
Dim writer As New PdfWriter("chart.pdf")
'Initialize PDF document
Using pdf As New PdfDocument(writer)
Dim properties As New ConverterProperties()
properties.SetBaseUri("https://bl.ocks.org/mbostock/4062006")
Dim document As Document = HtmlConverter.ConvertToDocument(New FileStream("Test_iText7_1.pdf", FileMode.Open), pdf, properties)
Dim header As Paragraph = (New Paragraph("HEADER")).SetTextAlignment(TextAlignment.CENTER).SetFontSize(16)
document.Add(header)
Dim i As Integer = 1
Do While i <= pdf.GetNumberOfPages()
Dim pageSize As Rectangle = pdf.GetPage(i).GetPageSize()
'INSTANT VB WARNING: Instant VB cannot determine whether both operands of this division are integer types - if they are then you should use the VB integer division operator:
Dim x As Single = pageSize.GetWidth() / 2
Dim y As Single = pageSize.GetTop() - 20
document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0)
i += 1
Loop
document.Close()
End Using
End Sub
IronPDF 与 iText 许可选项的最大区别在于,iTextSharp 是根据 AGPL 许可协议开源的。简而言之 (引述, "AGPL 许可证与其他 GNU 许可证的不同之处在于,它是为网络软件而设计的。您可以发布修改后的版本,但必须记录修改内容和日期。按照 GNU 许可证的惯例,您必须根据 AGPL 许可证发布衍生版本。它提供了与 GPLv3 相同的限制和自由,但附加了一个条款,规定源代码必须与网络出版物一起发布。由于网站和服务从来不是传统意义上的发布,因此 AGPL 就是网络的 GPL"。
这意味着,如果应用程序以任何方式使用 iTextSharp,即使是通过本地网络或互联网,那么应用程序的全部源代码都必须免费提供给每个用户。这并不总是符合项目的最佳利益。
这种许可证通常用于学术性很强的作品,目的是保持学术性,也用于打算在学术环境之外部署软件的付费使用的开源项目。AGPL 许可证协议的性质使开放源代码 iTextSharp 对于许多商业用途来说,除非能与开发者安排和合法协商私人许可证,否则很难获得许可证。
另一方面,IronPDF 是一种公开的商业软件。 C# PDF 库.它可以免费用于开发,也可以随时授权用于商业部署。这种清晰的许可模式无需开发人员学习 GNU / AGPL 许可模式的来龙去脉,他们可以专注于自己的项目。 提供许可证 适用于单个项目使用、单个开发人员、代理机构和跨国公司,以及 SaaS 和 OEM 再分发。无需协商法律费用,只需直接授权。
IronPdf是:
iText (iTextSharp) 是:
我们创建了一个免费的 PDF 资源指南,以帮助您更轻松地为 .NET 开发 PDF,其中包括常用函数的演练以及在 C# 和 VB.NET 项目中操作、编辑、生成和保存 PDFS 的示例。
下载指南