在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
IronPDF 和 iText 7 (旧称 iTextSharp) 两者都提供生成、操作和 打印 PDF 在 .NET 和 .NET Core 中。
其中 C# PDF 库 最适合您的 .NET 项目? 本文旨在帮助读者做出正确、明智的决定。
HtmlConverter.ConvertToPDF
将 HTML 文件转换为 PDF 文件的方法IronPDF是:
对于想完成工作的务实型编码员来说,这是一个不错的选择。
文本 (iTextSharp) 是:
iTextSharp 已经存在了至少 6 年,它基于名为 iText 的开放源码 Java 代码库,仍然带有一些 Java 的味道。 初次学习 Java 的开发人员可能会对这个库感到熟悉。
IronPDF 是一个.NET-first 库,其应用程序接口是围绕在 Visual Studio 中的易用性而设计的。 .NET 已经存在了近 20 年,不断发展壮大,开辟了许多可能性,而 IronPDF 正是为了利用这些可能性而设计的。 它允许我们在 .NET Framework 项目中创建和处理 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 上。 应用程序接口的级别较低,主要针对 PDF 文档标准。 这种模式允许精确性,但可能需要开发人员学习一些有关 PDF 工作原理的知识。 密切匹配现有的设计风格或网络资产可能需要反复斟酌,并读取 iTextSharp 文档. 为了与传统保持一致,该方法和程序界面具有鲜明的 Java 风格。
相比之下,IronPDF 使用完全嵌入式网络浏览器渲染器来 将 HTML 转换为 PDF. 以下是简短的 (单线和双线) C# 代码示例此外,开发人员还可以根据现有或新的 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 文档标准就能了解如何实现最佳效果。
操作 PDF
"(《世界人权宣言》) iTextSharp.dll 主要使用编程模型来渲染 PDF,它拥有先进的 PDF 操作 API,功能强大且严格遵循 PDF 标准。
基于 Java 库
让我们利用这两个库创建一个示例项目进行比较:
在下一个屏幕中,选择 Web 表单,如图 2 下方所示
点击确定
现在我们有办法了。 让我们安装 IronPDF。
要使用 IronPDF,首先需要安装它 (免费的). 有两种选择:
下载图书馆
让我们仔细看看。
开始在您的项目中使用IronPDF,并立即获取免费试用。
查看 IronPDF 上 Nuget 用于快速安装和部署。它有超过800万次下载,正在使用C#改变PDF。
Install-Package IronPdf
考虑安装 IronPDF DLL 直接。下载并手动安装到您的项目或GAC表单中: IronPdf.zip
手动安装到你的项目中
下载DLL安装 IronPDF NuGet 软件包有三种方法:
1.Visual Studio
直接下载 NuGet 软件包
让我们一个一个来。
Visual Studio 提供了 NuGet 包管理器,供你在项目中安装 NuGet 包。 您可以通过项目菜单或右键单击解决方案资源管理器中的项目来访问它。 图 3 和图 4 显示了这两种方案
单击任一选项中的 "管理 NuGet 包 "后,浏览 IronPDF 包并安装,如图 5 所示。
以下步骤将打开开发人员命令提示符并安装 IronPDF NuGet 软件包
为了下载 NuGet 软件包:
安装 IronPDF 的第二种方法是 直接下载.
通过以下步骤在项目中引用库:
点击确定
设置完成后,我们就可以开始使用 IronPDF 库中的超强功能了。
有三种方法 安装 iTextSharp NuGet 它们是
直接下载 NuGet 软件包
让我们一个一个来。
对于 Visual Studio,请搜索 iText 并安装相关软件包,如下图所示。
或者,在开发人员命令提示符中 (如前所示,输入以下命令)
PM > 安装软件包 itext7
或下载 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");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
以下代码使用 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));
IRON VB CONVERTER ERROR developers@ironsoftware.com
必须创建一个 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 方法中。
我现在加入输出比较,因为它适用于本教程中的所有后续练习。
通过这个代码段,我们改变了老虎维基百科 网页到 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;
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
以下代码使用 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 使用其RenderHtmlAsPdf方法,该方法专门用于处理 HTML 和 PDF。
这两个选项都相当快捷,直奔主题,但 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");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
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 转 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 创建图表并设置属性。 我们可以看到一种程序化的绘图应用程序风格。
/**
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 相同的限制和自由,但增加了一个条款,规定源代码必须与网络出版物一起发布。 Since websites and services are never distributed in the traditional sense, the AGPL is the GPL of the web."
这意味着,如果应用程序以任何方式使用 iTextSharp,即使是通过本地网络或互联网,那么应用程序的全部源代码都必须免费提供给每个用户。 这并不总是对项目最有利的。
这种许可证通常用于学术性很强的作品,目的是保持学术性,也用于打算在学术环境之外部署软件的付费使用的开源项目。 AGPL 许可证协议的性质使开放源代码 iTextSharp 对于许多商业用途来说,除非能与开发者安排和合法协商私人许可证,否则很难获得许可证。
而 IronPDF 则是一款公开的商业软件。 C# PDF 库. 它可免费用于开发,也可随时授权用于商业部署。 这种清晰的许可证模式无需开发人员学习 GNU / AGPL 许可证模式的来龙去脉,他们可以专注于自己的项目。 提供许可证 适用于单个项目使用、单个开发人员、机构和跨国公司,以及 SaaS 和 OEM 再分发。 无需协商法律费用,只需直接颁发许可证。
IronPDF是:
对于想高效完成工作的务实编码员来说,这是一个不错的选择。
文本 (iTextSharp) 是:
我们创建了一个免费的 PDF 资源指南,以帮助您更轻松地为 .NET 开发 PDF,其中包括常用函数的演练以及在 C# 和 VB.NET 项目中操作、编辑、生成和保存 PDFS 的示例。
下载指南