跳至页脚内容
产品比较

Windows上的Wkhtmltopdf与IronPDF之间的比较

IronPDF与 wkhtmltopdf:功能、渲染和架构对比

IronPDF 和 wkhtmltopdf - 比较其他组件 都是可以用于将 HTML 页面或完整网站(包括图像)转换为 PDF 格式的工具。 然而,两种工具在功能、性能和易用性方面有几个区别。

wkhtmltopdf是什么?

wkhtmltopdf 是一个开源的命令行工具,可以将HTML 页面或网站转换为 PDF 格式。 它可用于 Windows、Linux 和 macOS X 操作系统,并且可以与多种编程语言一起使用,包括 C# 和 Java。

wkhtmltopdf

How to Installwkhtmltopdfon Java and C#

以下是在 Windows 服务器上同时安装 C# 和 Java 版wkhtmltopdf的步骤:

Installingwkhtmltopdffor C#

  1. 从官方网站 URL 下载 Windows 的当前版本:wkhtmltopdf 下载
  2. 双击下载的安装程序,并按照安装向导中的说明安装 wkhtmltopdf。
  3. 安装完成后,通过将wkhtmltopdf可执行文件添加到系统的 PATH 环境变量中来修改路径。 这可以通过命令提示符使用以下命令完成:

    set PATH=%PATH%;C:\Program Files\wkhtmltopdf\bin
    set PATH=%PATH%;C:\Program Files\wkhtmltopdf\bin
    SHELL

为 Java 安装 wkhtmltopdf

  1. 从官方网站下载适用于 Windows 的最新版本 wkhtmltopdf:wkhtmltopdf 下载
  2. 将下载的归档内容提取到系统上的目标文件夹中。

在 C# 和 Java 中,wkhtmltopdf 的安装和使用都涉及通过命令提示符执行wkhtmltopdf命令,或者使用 ProcessBuilder 类以编程方式执行命令。 务必确保将wkhtmltopdf可执行文件添加到系统的 PATH 环境变量中,并提供生成所需 PDF 输出文件所需的必要开关和选项。对于希望从wkhtmltopdf迁移到IronPDF的团队,分步迁移指南详细介绍了整个过程。

什么是IronPDF以及如何为 C# 和 Java 安装它

探索IronPDF特性和安装 是一个库,允许开发人员使用 C# 和 Java 创建、操作和转换 PDF。 它提供了广泛的功能,包括 HTML 到 PDF 转换、从头开始的 PDF 生成和 PDF 操作。

IronPDF

To installIronPDFfor C#

  1. 使用包管理器控制台或通过 Visual Studio UI 安装IronPDFNuGet 包。
  2. 在代码中添加以下 using 语句以导入IronPDF命名空间:

    using IronPdf;
    using IronPdf;
    Imports IronPdf
    $vbLabelText   $csharpLabel

3.要从 HTML 字符串生成 PDF ,请使用以下代码:

   var Renderer = new ChromePdfRenderer();
   Renderer.RenderHtmlAsPdf("IronFile.html").SaveAs("IronPDF-file.pdf");
   var Renderer = new ChromePdfRenderer();
   Renderer.RenderHtmlAsPdf("IronFile.html").SaveAs("IronPDF-file.pdf");
Dim Renderer As New ChromePdfRenderer()
Renderer.RenderHtmlAsPdf("IronFile.html").SaveAs("IronPDF-file.pdf")
$vbLabelText   $csharpLabel
  1. 要从头创建 PDF,请使用以下代码:

    using IronPdf;
    
    var Renderer = new ChromePdfRenderer();
    // Create a PDF from a URL or local file path
    using var pdf = Renderer.RenderUrlAsPdf("https://www.amazon.com/?tag=hp2-brobookmark-us-20");
    // Export to a file or a Stream 
    pdf.SaveAs("url.pdf");
    using IronPdf;
    
    var Renderer = new ChromePdfRenderer();
    // Create a PDF from a URL or local file path
    using var pdf = Renderer.RenderUrlAsPdf("https://www.amazon.com/?tag=hp2-brobookmark-us-20");
    // Export to a file or a Stream 
    pdf.SaveAs("url.pdf");
    Imports IronPdf
    
    Private Renderer = New ChromePdfRenderer()
    ' Create a PDF from a URL or local file path
    Private pdf = Renderer.RenderUrlAsPdf("https://www.amazon.com/?tag=hp2-brobookmark-us-20")
    ' Export to a file or a Stream 
    pdf.SaveAs("url.pdf")
    $vbLabelText   $csharpLabel

输出

安装IronPDFfor Java

  1. 从IronPDF网站下载 IronPDF 适用于 Java 库
  2. 将IronPDFJAR 文件添加到项目的类路径中。
  3. 在代码中导入IronPDF包:

    import com.ironsoftware.ironpdf.*;
    import com.ironsoftware.ironpdf.*;
    JAVA
  4. 安装完成后,使用以下代码从 HTML 内容生成 PDF:

    import com.ironsoftware.ironpdf.*;
    import java.io.IOException;
    import java.nio.file.Paths;
    
    public class PdfExample {
       public static void main(String[] args) throws IOException {
           // Apply your license key 
           License.setLicenseKey("YOUR-LICENSE-KEY");
    
           // Set a log path 
           Settings.setLogPath(Paths.get("C:/tmp/IronPdfEngine.log"));
    
           // Render the HTML as a PDF, stored in myPdf as type PdfDocument
           PdfDocument myPdf = PdfDocument.renderHtmlAsPdf(" ~Hello World~  Made with IronPDF!");
    
           // Save the PdfDocument to a file
           myPdf.saveAs(Paths.get("html_saved.pdf"));
       }
    }
    import com.ironsoftware.ironpdf.*;
    import java.io.IOException;
    import java.nio.file.Paths;
    
    public class PdfExample {
       public static void main(String[] args) throws IOException {
           // Apply your license key 
           License.setLicenseKey("YOUR-LICENSE-KEY");
    
           // Set a log path 
           Settings.setLogPath(Paths.get("C:/tmp/IronPdfEngine.log"));
    
           // Render the HTML as a PDF, stored in myPdf as type PdfDocument
           PdfDocument myPdf = PdfDocument.renderHtmlAsPdf(" ~Hello World~  Made with IronPDF!");
    
           // Save the PdfDocument to a file
           myPdf.saveAs(Paths.get("html_saved.pdf"));
       }
    }
    JAVA

请注意,IronPDF 使用专有的 HTML 到 PDF 转换引擎,不依赖于像wkhtmltopdf这样的外部工具。 开发人员还可以通过边距、页眉、DPI 和其他渲染选项来微调输出质量。

下表简要总结了这两个库的主要区别。

特征 IronPDF wkhtmltopdf
渲染引擎 铬(闪烁) Qt WebKit(旧版)
HTML5/CSS3 支持 满的 部分翻译
集成模型 NuGet 包/JAR 外部 CLI 进程
PDF编辑与合并 包括 不包含
加密与安全 包括 不包含
Flexbox / CSS Grid 支持 不支持
许可证 商业版(免费试用) LGPLv3(免费)
官方支持 专业的工程团队 社区驱动

对于正在评估IronPDF作为 Windows 上wkhtmltopdf替代品的团队,免费 30 天试用版

How to useIronPDFandwkhtmltopdfto manipulate PDF files in C#

IronPDF 和wkhtmltopdf是两个可以用于在 C# 中操作 PDF 文件的库。 在本节中,我们将探索如何使用这两个库操作 PDF 文件。

操作 PDF 文件

使用IronPDF操作 PDF 文件

IronPDF 是一个 C# 库,可用于创建、操作和 渲染 PDF 文档。 它提供了一个易于使用的 API,允许开发人员对 PDF 文件执行各种操作,例如添加文本、图像和表格,以及合并、拆分和转换 PDF 文件。 以下是如何使用IronPDF向 PDF 文件中添加文本的示例:

using IronPdf;

var Renderer = new ChromePdfRenderer();
// Render a local HTML file as PDF
using var PDF = Renderer.RenderHtmlFileAsPdf("Project/MyHtmlDocument.html");
// Save the PDF to disk
PDF.SaveAs("Project/MyOutput.pdf");
using IronPdf;

var Renderer = new ChromePdfRenderer();
// Render a local HTML file as PDF
using var PDF = Renderer.RenderHtmlFileAsPdf("Project/MyHtmlDocument.html");
// Save the PDF to disk
PDF.SaveAs("Project/MyOutput.pdf");
Imports IronPdf

Private Renderer = New ChromePdfRenderer()
' Render a local HTML file as PDF
Private PDF = Renderer.RenderHtmlFileAsPdf("Project/MyHtmlDocument.html")
' Save the PDF to disk
PDF.SaveAs("Project/MyOutput.pdf")
$vbLabelText   $csharpLabel

HTML 到 PDF

使用wkhtmltopdf操作 PDF 文件

wkhtmltopdf 是一个命令行工具,可以将 HTML 页面转换为 PDF 文件。 它使用 Qt WebKit 渲染引擎将 HTML 渲染成 PDF 格式。 请注意,Qt WebKit 已停止积极维护,因此其对现代 HTML5、CSS3 和 JavaScript 功能的支持已跟不上基于 Chromium 的引擎。

using System.Text;
using System.Diagnostics;

class PdfGenerator
{
    static void Main(string[] args)
    {
        // Function to convert HTML to PDF using wkhtmltopdf
        ConvertHtmlToPdf("URL", "Sample.pdf");
        Console.WriteLine("PDF successfully created!");
        Console.ReadKey();
    }

    // Function to configure and start thewkhtmltopdfprocess
    public static void ConvertHtmlToPdf(string url, string filename)
    {
        // Construct the command line parameters
        StringBuilder paramsBuilder = new StringBuilder();
        paramsBuilder.AppendFormat("\"{0}\" \"{1}\"", url, filename);

        // Create and configure the process
        using (Process process = new Process())
        {
            // Specify the path towkhtmltopdfexecutable
            process.StartInfo.FileName = "C:\\Program Files (x86)\\wkhtmltopdf\\bin\\wkhtmltopdf.exe";
            process.StartInfo.Arguments = paramsBuilder.ToString();

            // Configure process settings
            process.StartInfo.UseShellExecute = false;
            process.StartInfo.RedirectStandardOutput = true;
            process.StartInfo.RedirectStandardError = true;

            // Start the process and wait for it to exit
            process.Start();
            if (!process.WaitForExit(60000))
            {
                process.Kill();
                Console.WriteLine("Process terminated as it exceeded the time limit.");
            }
        }
    }
}
using System.Text;
using System.Diagnostics;

class PdfGenerator
{
    static void Main(string[] args)
    {
        // Function to convert HTML to PDF using wkhtmltopdf
        ConvertHtmlToPdf("URL", "Sample.pdf");
        Console.WriteLine("PDF successfully created!");
        Console.ReadKey();
    }

    // Function to configure and start thewkhtmltopdfprocess
    public static void ConvertHtmlToPdf(string url, string filename)
    {
        // Construct the command line parameters
        StringBuilder paramsBuilder = new StringBuilder();
        paramsBuilder.AppendFormat("\"{0}\" \"{1}\"", url, filename);

        // Create and configure the process
        using (Process process = new Process())
        {
            // Specify the path towkhtmltopdfexecutable
            process.StartInfo.FileName = "C:\\Program Files (x86)\\wkhtmltopdf\\bin\\wkhtmltopdf.exe";
            process.StartInfo.Arguments = paramsBuilder.ToString();

            // Configure process settings
            process.StartInfo.UseShellExecute = false;
            process.StartInfo.RedirectStandardOutput = true;
            process.StartInfo.RedirectStandardError = true;

            // Start the process and wait for it to exit
            process.Start();
            if (!process.WaitForExit(60000))
            {
                process.Kill();
                Console.WriteLine("Process terminated as it exceeded the time limit.");
            }
        }
    }
}
Imports System.Text
Imports System.Diagnostics

Class PdfGenerator
    Shared Sub Main(args As String())
        ' Function to convert HTML to PDF using wkhtmltopdf
        ConvertHtmlToPdf("URL", "Sample.pdf")
        Console.WriteLine("PDF successfully created!")
        Console.ReadKey()
    End Sub

    ' Function to configure and start the wkhtmltopdf process
    Public Shared Sub ConvertHtmlToPdf(url As String, filename As String)
        ' Construct the command line parameters
        Dim paramsBuilder As New StringBuilder()
        paramsBuilder.AppendFormat("""{0}"" ""{1}""", url, filename)

        ' Create and configure the process
        Using process As New Process()
            ' Specify the path to wkhtmltopdf executable
            process.StartInfo.FileName = "C:\Program Files (x86)\wkhtmltopdf\bin\wkhtmltopdf.exe"
            process.StartInfo.Arguments = paramsBuilder.ToString()

            ' Configure process settings
            process.StartInfo.UseShellExecute = False
            process.StartInfo.RedirectStandardOutput = True
            process.StartInfo.RedirectStandardError = True

            ' Start the process and wait for it to exit
            process.Start()
            If Not process.WaitForExit(60000) Then
                process.Kill()
                Console.WriteLine("Process terminated as it exceeded the time limit.")
            End If
        End Using
    End Sub
End Class
$vbLabelText   $csharpLabel

总之,IronPDF 和wkhtmltopdf是两个可以用于在 C# 中操作 PDF 文件的强大工具。IronPDF提供了一个易于使用的 API 用于创建、操作和渲染 PDF 文件,而wkhtmltopdf是一个可以用于将 HTML 页面转换为 PDF 文件的命令行工具。 这两种工具各有其优缺点,开发人员应选择最适合其需求的工具。

使用IronPDF和wkhtmltopdf在 Java 中操作带有 Qt WebKit 渲染引擎的 PDF 文件

操作 PDF 文件是文档管理的重要部分,开发人员需要可靠的工具来帮助他们实现这一目标。 Java 开发人员可以使用多种库和工具进行 PDF 操作,其中IronPDF和wkhtmltopdf是热门选择。 在本次比较中,我们将探索 Java 开发人员如何使用这些工具操作 PDF 文件。

IronPDF 是一个 C# PDF 库,提供易于使用和快速的 PDF 操作能力。 它也有 Java 版本,让 Java 开发人员享受相同的功能。IronPDF提供了一个用于处理 PDF 的 API,包括创建、编辑和渲染 PDF 文档。 它还提供对 PDF 表单、注释和PDF 安全功能(如加密和密码)的支持。

要在 Java 中开始使用 IronPDF,开发人员需要从官方网站下载IronPDFfor Java 库并将其导入到他们的 Java 项目中。

IronPDF

另一方面,wkhtmltopdf 是一个命令行工具,使用遗留的 Qt WebKit 渲染引擎将 HTML 内容转换为便携式文档格式。它是一个可用于 Windows、Linux 和 macOS 的开源工具。 虽然wkhtmltopdf提供了各种选项和开关来自定义 PDF 输出文件(例如设置边距、页面大小和方向),但其 Qt WebKit 引擎已不再积极维护,也没有更新以支持现代 Web 标准。

要在 Java 中使用 wkhtmltopdf,开发人员可以使用 Java 中的 Process 类来执行wkhtmltopdf工具。

wkhtmltopdf

IronPDF 和wkhtmltopdf都提供了可靠的 Java PDF 生成功能。IronPDF非常适合喜欢使用原生 API 的开发人员,而wkhtmltopdf则更适合习惯使用命令行工具的开发人员。IronPDF涵盖的范围更广——包括编辑、加密和表单处理——而wkhtmltopdf安装占用空间更小,资源开销也最小,适用于简单的转换。

wkhtmltopdf和IronPDF有什么区别?

功能

-IronPDF是一个全功能的 HTML 到 PDF 转换器,包括对 CSS、JavaScript 和 HTML5 的支持。它还可以用于向 PDF 文档中添加页眉、页脚和水印,并将多个 PDF 文件合并为一个文档。 此外,它包括将扫描文档转换为可搜索 PDF 的 OCR 功能。 wkhtmltopdf 专注于通过命令行将 HTML 转换为 PDF。它支持 CSS 和 JavaScript,但目前不支持 HTML5。 诸如添加页眉或页脚或合并 PDF 文件之类的功能不包含在内——需要这些功能的团队通常会添加其他工具或评估IronPDF等库。

性能

-IronPDF作为 .NET 库(或通过 IKVM 作为 Java 库)在进程内运行,消除了生成和与外部可执行文件通信的开销。 它采用当前稳定的 Chromium 引擎,可以在一次渲染过程中处理大型复杂的 HTML 文档。 -wkhtmltopdf每次转换都依赖于外部进程,这会引入进程启动和 I/O 开销——在批量处理大型 HTML 文件或快速连续运行转换时尤其明显。

易用性

-IronPDF设计为易于使用,并包括一个可以直接集成到 C# 或 Java 应用程序中的简单 API。 它还包括广泛的文档和支持资源,帮助开发人员快速启动和运行。 -wkhtmltopdf要求开发人员使用命令行界面,这可能会涉及更多的设置和脚本编写开销。 其文档和支持资源由社区驱动,而非商业支持,因此团队可能需要依赖 GitHub issues 和 Stack Overflow 来获取指导。

平台支持

-IronPDF是一个.NET 库,可以在任何基于.NET 的平台上使用,包括 Windows、Linux 和 macOS。 它还可以通过 IKVM.NET 运行时与 Java 一起使用。 -wkhtmltopdf是一个可用于 Windows、Linux 和 macOS 的命令行工具。 它还可以与多种编程语言一起使用,包括 C# 和 Java。

成本

-IronPDF是一款商用产品,需在生产环境中使用时购买许可证。 然而,它为开发人员提供了一个免费试用版本,以便测试和评估工具。 -wkhtmltopdf是一个开源工具,可以免费用于商业和非商业用途。

总而言之,IronPDF 提供了更广泛的功能集和可直接集成到 C# 或 Java 应用程序中的原生 API。 这是一个商业产品,需要付费许可才能用于生产用途。 相比之下,wkhtmltopdf 是一个免费的开源命令行工具,兼容多种编程语言——虽然其专注于 HTML 到 PDF 的转换,但对于需要进行文档操作或高级渲染的团队来说,这些功能通常超出了其设计范围。

定价和许可

IronPDF 和wkhtmltopdf是两个用于从 HTML 内容生成 PDF 文档的流行工具。 虽然这两个工具提供相似的功能,但在许可和定价方面有所不同。

IronPDF 是一款需要商业使用许可证的商业软件库。 它提供了一系列许可选项,包括每位开发人员、每台服务器和每个部署许可。IronPDF为其许可用户提供技术支持和软件更新。IronPDF的定价因所选许可选项而异。

另一方面,wkhtmltopdf 是一个可免费下载的开源工具。 它符合 LGPLv3 许可证,允许使用、修改和分发软件。 然而,它不提供任何技术支持或软件更新。 用户社区通过各种渠道(如 GitHub 问题和 Stack Overflow)提供支持和更新。

在定价方面,IronPDF 比wkhtmltopdf更昂贵。IronPDF的价格从每位开发人员许可证 399 美元起,而wkhtmltopdf免费使用。

除了许可费用之外,项目总成本还包括开发人员花费在管理外部 CLI 进程、编写 Qt WebKit 有限的 CSS3 支持变通方案以及处理缺少内置 PDF 编辑或基于密码的 PDF 加密等方面的时间。 对于评估多年项目生命周期成本的团队来说,这些集成和维护时间往往会超过开源许可和商业许可之间的差异。

值得注意的是,IronPDF 和wkhtmltopdf使用了不同的渲染引擎:IronPDF 使用的是现代的 Chromium 渲染引擎(Blink),完全支持 HTML5、CSS3 和 JavaScript,而wkhtmltopdf使用的是 Qt WebKit 渲染引擎,该引擎尚未更新以匹配当前的 Web 标准。IronPDF提供全面的 .NET API,而wkhtmltopdf提供命令行工具。 两者都支持一系列输入格式,包括 HTML、URL 和本地文件。

IronPDF 许可协议屏幕

总之,IronPDF 和wkhtmltopdf提供相似的功能用于从 HTML 内容生成 PDF 文档。 主要的区别在于他们的许可和定价模式。IronPDF是一款需要商业使用许可证的商业软件库,而wkhtmltopdf是一个可免费下载的开源工具。 两者在创建 PDF 应用程序时都非常有用。

支持现代 CSS 框架

IronPDF 和wkhtmltopdf之间的一个关键区别是它们对现代 CSS 框架(如 Bootstrap、Tailwind CSS 和 Foundation)的支持。

IronPDF:完全 Bootstrap 支持

IronPDF的Chromium渲染引擎提供对现代CSS框架的全面支持:

  • Bootstrap 5:全面支持 flexbox 和 CSS Grid,实现响应式布局 -复杂布局:以像素级精度渲染Bootstrap 首页Bootstrap 模板。 -现代特性: CSS3 动画、变换、过渡和媒体查询
  • CSS框架: Bootstrap、Tailwind CSS、Foundation、Bulma 都能无缝协作

Aspose.PDF:有限的 Bootstrap 支持

using IronPdf;

// Render a Bootstrap 5 layout
var renderer = new ChromePdfRenderer();

// Example: Bootstrap navigation and card layout
string bootstrapHtml = @"
<!DOCTYPE html>
<html>
<head>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
    <nav class='navbar navbar-expand-lg navbar-dark bg-primary'>
        <div class='container'>
            <a class='navbar-brand' href='#'>My Company</a>
        </div>
    </nav>

    <div class='container mt-4'>
        <div class='row'>
            <div class='col-md-4'>
                <div class='card'>
                    <div class='card-body'>
                        <h5 class='card-title'>Feature 1</h5>
                        <p class='card-text'>Modern flexbox-based layout.</p>
                    </div>
                </div>
            </div>
            <div class='col-md-4'>
                <div class='card'>
                    <div class='card-body'>
                        <h5 class='card-title'>Feature 2</h5>
                        <p class='card-text'>Responsive grid system.</p>
                    </div>
                </div>
            </div>
            <div class='col-md-4'>
                <div class='card'>
                    <div class='card-body'>
                        <h5 class='card-title'>Feature 3</h5>
                        <p class='card-text'>CSS3 animations supported.</p>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapHtml);
pdf.SaveAs("bootstrap-layout.pdf");
using IronPdf;

// Render a Bootstrap 5 layout
var renderer = new ChromePdfRenderer();

// Example: Bootstrap navigation and card layout
string bootstrapHtml = @"
<!DOCTYPE html>
<html>
<head>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
    <nav class='navbar navbar-expand-lg navbar-dark bg-primary'>
        <div class='container'>
            <a class='navbar-brand' href='#'>My Company</a>
        </div>
    </nav>

    <div class='container mt-4'>
        <div class='row'>
            <div class='col-md-4'>
                <div class='card'>
                    <div class='card-body'>
                        <h5 class='card-title'>Feature 1</h5>
                        <p class='card-text'>Modern flexbox-based layout.</p>
                    </div>
                </div>
            </div>
            <div class='col-md-4'>
                <div class='card'>
                    <div class='card-body'>
                        <h5 class='card-title'>Feature 2</h5>
                        <p class='card-text'>Responsive grid system.</p>
                    </div>
                </div>
            </div>
            <div class='col-md-4'>
                <div class='card'>
                    <div class='card-body'>
                        <h5 class='card-title'>Feature 3</h5>
                        <p class='card-text'>CSS3 animations supported.</p>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapHtml);
pdf.SaveAs("bootstrap-layout.pdf");
Imports IronPdf

' Render a Bootstrap 5 layout
Dim renderer As New ChromePdfRenderer()

' Example: Bootstrap navigation and card layout
Dim bootstrapHtml As String = "
<!DOCTYPE html>
<html>
<head>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
    <nav class='navbar navbar-expand-lg navbar-dark bg-primary'>
        <div class='container'>
            <a class='navbar-brand' href='#'>My Company</a>
        </div>
    </nav>

    <div class='container mt-4'>
        <div class='row'>
            <div class='col-md-4'>
                <div class='card'>
                    <div class='card-body'>
                        <h5 class='card-title'>Feature 1</h5>
                        <p class='card-text'>Modern flexbox-based layout.</p>
                    </div>
                </div>
            </div>
            <div class='col-md-4'>
                <div class='card'>
                    <div class='card-body'>
                        <h5 class='card-title'>Feature 2</h5>
                        <p class='card-text'>Responsive grid system.</p>
                    </div>
                </div>
            </div>
            <div class='col-md-4'>
                <div class='card'>
                    <div class='card-body'>
                        <h5 class='card-title'>Feature 3</h5>
                        <p class='card-text'>CSS3 animations supported.</p>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>"

Dim pdf = renderer.RenderHtmlAsPdf(bootstrapHtml)
pdf.SaveAs("bootstrap-layout.pdf")
$vbLabelText   $csharpLabel

以上代码在IronPDF中完美渲染,保留了所有 Bootstrap 样式、flexbox 布局和响应式网格系统。

wkhtmltopdf:更窄的 CSS 框架支持

wkhtmltopdf 的 Qt WebKit 引擎并非为现代框架所依赖的 CSS 规范而设计:

  • Flexbox 兼容性问题: Bootstrap 4+ 严重依赖 Flexbox,而 Qt WebKit 引擎并不完全支持 Flexbox。 -不支持 CSS Grid:现代网格布局超出了 Qt WebKit 的渲染能力范围。 -引擎版本: Qt WebKit 上次更新是在 2016 年,因此现代 CSS3 特性(例如 clamp()aspect-ratio 和容器查询)不在其支持范围内。 -需要采取的变通方法:开发者必须使用旧版本的 Bootstrap(Bootstrap 3 或更早版本)或实现基于表格的回退方案。

有关CSS框架支持和排除flexbox/Bootstrap渲染问题的更多详细信息,请参阅Bootstrap和Flexbox CSS指南

你应该选择哪个库?

IronPDF 是一个为 .NET 语言构建的综合性 PDF 操作库,旨在为开发人员提供用于创建、编辑和操作 PDF 文件的简单 API。 它注重易用性,并采用现代化的 Chromium 渲染管线,对于需要在 C# 或 Java 中获得完整 PDF 支持的团队来说,它是一个不错的选择。

wkhtmltopdf 是一个开源的命令行工具,它使用 Qt WebKit 渲染引擎将 HTML 转换为 PDF 文件。它可在 Windows、Linux 和 macOS 上运行,并且能够可靠地处理简单的 HTML 到 PDF 转换。 也就是说,Qt WebKit 已停止积极维护,因此其对现代 Web 标准的支持未能跟上浏览器引擎的步伐。wkhtmltopdf的功能主要集中在转换而非更广泛的文档操作上,而且设置它确实需要对命令行工具和流程管理有一定的了解。

两者之间一个显著的区别在于支持模式。IronPDF的商业许可包括专门的技术支持和定期更新,这可以降低团队在生产应用程序中交付 PDF 功能的风险。

从技术能力来看,IronPDF 提供的功能集比wkhtmltopdf更全面。 它包含页面调整大小、图像压缩和文档加密等一流操作——这些功能超出了wkhtmltopdf的设计范围。IronPDF还支持更广泛的图像格式,并公开了原生 .NET API,与调用外部进程相比,这降低了集成开销。

最后,值得一提的是,IronPDF 是 Iron Software 产品套件的一部分,该套件包括其他用于 .NET 开发的有用库。 开发人员可以以两个许可证的价格购买所有五个 Iron Software 产品,这对于希望最大限度地提升性价比的人来说是一个有吸引力的套餐。

要了解IronPDF如何处理您自己的 HTML 到 PDF 工作流程,请下载免费的 30 天试用版并针对您的生产模板进行测试。

[{i:(wkhtmltopdf 是其各自所有者的注册商标。 本网站未获wkhtmltopdf的认可、赞助或协作。 所有产品名称、徽标和品牌均为各自所有者的财产。 比较仅供参考,反映撰写时公开可用的信息。)}]

常见问题解答

如何在C#中将HTML转换为PDF?

你可以使用IronPDF的RenderHtmlAsPdf方法将HTML字符串转换为PDF。你还可以使用RenderHtmlFileAsPdf将HTML文件转换为PDF。

使用 PDF 库优于命令行工具的优点是什么?

像 IronPDF 这样的 PDF 库提供的优势包括支持 HTML5、CSS、JavaScript,以及如页眉、页脚、合并 PDF 等附加功能。它还提供易于使用的 API 和广泛的文档支持,这与像 wkhtmltopdf 的命令行工具不同。

如何优化 C# 中的 HTML 到 PDF 转换性能?

IronPDF 针对性能进行优化,可以高效处理大型 HTML 文件。它在应用程序中处理 HTML 到 PDF 转换,减少对外部进程的依赖,这些进程可能会降低性能。

可以使用库在 C# 中操作现有 PDF 吗?

是的,IronPDF 允许您操作现有 PDF,功能包括添加水印、合并文档和使用 OCR 处理扫描过的文档,而这些功能在像 wkhtmltopdf 这样的基础命令行工具中不可用。

商业 PDF 库可以提供哪些支持选项?

IronPDF 在其商业授权中提供优质支持和定期更新。这包括技术支持和最新功能的访问权限,而开源替代方案如 wkhtmltopdf 不提供官方支持。

IronPDF 和开源工具的授权有何不同?

IronPDF 要求产品使用需付费授权,提供技术支持和更新。而 wkhtmltopdf 是开源的,免费提供在 LGPLv3 许可证下,但缺乏官方支持和频繁更新。

是否有可用的 PDF 库 Java 版本?

是的,IronPDF 有 Java 版本,允许 Java 开发人员利用其丰富的功能来创建、编辑和呈现 PDF 文档,使其成为多语言开发的一个多功能选择。

功能齐全的 PDF 库除了 HTML 到 PDF 转换之外还能提供哪些功能?

IronPDF 提供超出 HTML 到 PDF 转换的功能,包括从头生成 PDF,文档操作如添加水印、合并 PDF 以及为扫描文档处理集成 OCR 技术。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

钢铁支援团队

我们每周 5 天,每天 24 小时在线。
聊天
电子邮件
打电话给我