Zum Fußzeileninhalt springen
PDF-WERKZEUGE

IronPDF vs Accusoft PDF Viewer: Welche C#-Bibliothek ist am besten für HTML zu PDF?

IronPDF und Accusoft PDF Viewer konvertieren beide HTML in PDF in .NET. IronPDF bietet klaren Syntax, lokale Verarbeitung ohne Abhängigkeit von der Cloud und unbegrenzte Konvertierungen ab $999. Im Gegensatz dazu erfordert Accusoft Internetverbindung und berechnet pro Transaktion.

IronPDF mit Accusoft PDF Viewer vergleichen

  • HTML in PDF konvertieren
  • Kopf- und Fußzeilen für PDFs festlegen
  • PDF in Bilddatei konvertieren
  • Lizenzierung, kostenlose Testoptionen und mehr vergleichen
Cheat Sheet Card related to IronPDF vs Accusoft PDF Viewer: Welche C#-Bibliothek ist am besten für HTML zu PDF?

Überblick

Was ist IronPDF und wie funktioniert es?

IronPDF ist eine C#-Bibliothek zur Umwandlung von HTML in PDF , die es Entwicklern ermöglicht, PDF-Dateien aus Quellen wie HTML-Strings , Webseiten und URLs zu erstellen. Außerdem ermöglicht es das Festlegen von Eigenschaften wie Wasserzeichen , Lesezeichen sowie Kopf- und Fußzeile . Darüber hinaus können Entwickler mithilfe der Bild-zu-PDF-Konvertierung mehrere PDF-Dateien zu einer einzigen zusammenführen oder PDF-Seiten in Bilder umwandeln und umgekehrt.

IronPDF ist für die Entwicklung kostenlos und bietet eine 30-tägige Testphase für den Einsatz in Live-Projekten. Es bietet eine vollständige Dokumentation , Codebeispiele und eine API-Referenz , um Entwicklern den Einstieg zu erleichtern.

Entwickler können über diesen Link eine Projektdatei herunterladen.

Was ist Accusoft `PrizmDoc` Viewer und wie funktioniert er?

PrizmDoc Viewer ist eine REST-API, die mit PDF-Dateien arbeitet und diese remote in andere Formate konvertiert. PrizmDoc kann über 100 verschiedene Dateiformate in PDF und PDF in PNG, JPG, TIFF und SVG konvertieren. Es bietet außerdem verschiedene Optionen für elektronische Signaturen in Anwendungen.

Wie schneiden IronPDF und `PrizmDoc` Viewer im Vergleich ab?

IronPDF `PrizmDoc` Viewer
Work with [PDF files programmatically](/how-to/csharp-parse-pdf/). Programmatisch mit PDF-Dateien arbeiten.
Supports [.NET Core](/docs/) with [Windows](/get-started/windows/), [Mac](/get-started/macos/), or [Linux](/get-started/linux/). Unterstützt .NET Core unter Windows, Mac oder Linux.
[Works Locally](/get-started/installation-overview/) Sends Documents to a [remote server](/get-started/ironpdfengine/).
Work with or without [Asynchronous Programming](/how-to/async/). Es muss asynchrone Programmierung mit `System.Threading.Tasks` verwendet werden.
Works offline once [installed](/get-started/installation-overview/). Für `PrizmDoc` -Serveranfragen ist eine Internetverbindung erforderlich.
Provides many [predefined functions](/features/). Bietet einige vordefinierte Funktionen.
Often requires [minimal lines of code](/tutorials/html-to-pdf/). Erfordert oft viele Codezeilen.
[Unlimited conversions](/licensing/) per project in each license. Begrenzte Transaktionen bei Cloud-basierten Lizenzen.
[Free for development](/get-started/quickstart/) without time limits. Begrenzte Transaktionen mit Testversion.

Installieren wir beide Bibliotheken und vergleichen wir den Code.


Schritt 1: Installation

Wie installiere ich IronPDF in meinem .NET-Projekt?

Es gibt zwei Möglichkeiten, IronPDF in einem Projekt zu installieren , wobei es keinen Unterschied zwischen den beiden Vorgehensweisen gibt. IronPDF unterstützt verschiedene Umgebungen, darunter Azure-Bereitstellung , AWS Lambda , Docker-Container und Blazor Anwendungen .

Welche verschiedenen Möglichkeiten gibt es, IronPDF herunterzuladen?

Laden Sie die IronPDF-Datei herunter und fügen Sie deren Verweis zum Projekt hinzu. Entwickler können den Windows Installer auch für eine systemweite Installation verwenden. Nach diesem wird der Namespace IronPDF zugänglich mittels:

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

Entwickler können nun problemlos auf die bereitgestellten Funktionen und Klassen von IronPDF zugreifen, einschließlich des ChromePdfRenderers für das Rendern, der PDF-Dokumentmanipulation und der Sicherheitsfunktionen .

Wie installiere ich IronPDF über den NuGet Paketmanager?


Wie installiere ich `PrizmDoc` Viewer von Accusoft?

PrizmDoc Viewer hat zwei Teile: die serverseitige Komponente genannt PrizmDoc Server, die sich wie eine RESTful-API verhält, und das Client-Projekt, das Anfragen an die API sendet und Antworten empfängt. Im Gegensatz zu IronPDF, das lokal ohne externe Abhängigkeiten arbeitet, erfordert PrizmDoc Netzwerkverbindung für cloudbasierte Operationen.

Wie kann ich auf den `PrizmDoc` -Server zugreifen?

PrizmDoc Server ist eine serverseitige Anwendung, die grundlegende Informationen mit Dokumenten als Anfragen (Eingaben) empfängt und Dokumente in PDF-Dateien umwandelt, dann die konvertierten PDF-Dateien als Antworten (Ausgaben) zurücksendet. Es dient als technisches Herzstück des Produkts – eine Dokumentenverarbeitungs- und Konvertierungs-Engine. Entwickler können es über zwei verschiedene Methoden nutzen, die beide dieselbe Programmierstruktur und dieselben Techniken aufweisen:

  1. Selbst-gehostet:

    Für diese Option ist die Bereitstellung eines Servers erforderlich. Laden Sie PrizmDoc Server herunter und installieren Sie ihn. Mehr erfahren über die Installation von PrizmDoc Server auf Windows.

    Hinweis: Ein selbstgehosteter PrizmDoc Server erfordert significanten Speicher und Verarbeitungsressourcen — siehe Accusofts Größenleitfaden für aktuelle Anforderungen. Im Gegensatz dazu sind die Systemanforderungen von IronPDF wesentlich geringer.

  2. Cloud-gehostet:

    Dieser Cloud-basierte Service macht die Einrichtung eines Servers überflüssig. Um diese Option zu nutzen, erstellen Sie ein Konto und kopieren Sie den API key aus dem API Key Menü auf der Startseite.

Zunächst untersuchen wir die grundlegende Struktur, um mit dem PrizmDoc Viewer Dokumente in PDF-Dateien zu konvertieren, indem wir direkt mit Accusoft server interagieren und WebClient() in einer C# Konsolenanwendung verwenden.

Hinweis: Das folgende Beispiel zeigt, wie PrizmDoc konzeptionell mit PDF-Dateien umgeht. Es ist sehr umfangreich, daher können Sie dieses Beispiel getrost überspringen und direkt zum Vergleich übergehen .

Wie ist die Arbeitsstruktur von Accusoft aufgebaut?

Dieses Beispiel konvertiert myWebpage.html zu sample.pdf. Im Gegensatz zur einfachen HTML-zu-PDF-Konvertierung von IronPDF erfordert PrizmDoc mehrere API-Aufrufe.

Hinweis: Die Newtonsoft.Json-Bibliothek muss im Projekt installiert und referenziert sein.

Fügen Sie zunächst die folgenden Bibliotheken zum Projekt hinzu:

using System;
using System.IO;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json.Linq; // Install Newtonsoft.Json via NuGet Package Manager
using System;
using System.IO;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json.Linq; // Install Newtonsoft.Json via NuGet Package Manager
Imports System
Imports System.IO
Imports System.Net
Imports System.Text
Imports System.Threading.Tasks
Imports Newtonsoft.Json.Linq ' Install Newtonsoft.Json via NuGet Package Manager
$vbLabelText   $csharpLabel

Erstellen Sie dann eine öffentliche Variable Accusoft API Key und fügen Sie den API-Schlüssel darin ein:

static string ApiKey = "Your-API-KEY";
static string ApiKey = "Your-API-KEY";
Private Shared ApiKey As String = "Your-API-KEY"
$vbLabelText   $csharpLabel

Es gibt 3 Schritte, um mit PDF-Dateien unter Verwendung des PrizmDoc Viewers zu arbeiten:

  1. Laden Sie eine Datei auf den PrizmDoc-Server hoch.
  2. Konvertieren Sie die hochgeladene Datei.
  3. Laden Sie die konvertierte Datei vom PrizmDoc-Server herunter.

Für jeden Schritt wird eine separate Funktion ausgeführt:

static void Main(string[] args)
{
    //---Upload file to Server---
    JObject uploadResults = UploadToServer("myWebpage.html").Result;
    string fileID = (string)uploadResults.SelectToken("fileId");
    string affinityToken = (string)uploadResults.SelectToken("affinityToken");

    //---Convert the uploaded file to PDF---
    JObject convertResults = Convert(affinityToken, fileID).Result;
    string processId = (string)convertResults.SelectToken("processId");
    affinityToken = (string)convertResults.SelectToken("affinityToken");

    //---Check the status that conversion is completed---
    JObject convertStatusResults = ConvertStatus(processId, affinityToken).Result;
    string convertStatus = (string)convertStatusResults.SelectToken("state");

    //---Continuously checking whether conversion completed---
    while (!(convertStatus.Equals("complete")))
    {
        System.Threading.Thread.Sleep(30000);
        convertStatusResults = ConvertStatus(processId, affinityToken).Result;
        convertStatus = (string)convertStatusResults.SelectToken("state");
    }

    //---Download the converted file from server---
    string newFileID = (string)convertStatusResults.SelectToken("output.results[0].fileId");
    DownloadFromServer(affinityToken, newFileID, "sample.pdf").Wait();

    Console.WriteLine("PDF file created successfully...!");
    Console.ReadKey();
}
static void Main(string[] args)
{
    //---Upload file to Server---
    JObject uploadResults = UploadToServer("myWebpage.html").Result;
    string fileID = (string)uploadResults.SelectToken("fileId");
    string affinityToken = (string)uploadResults.SelectToken("affinityToken");

    //---Convert the uploaded file to PDF---
    JObject convertResults = Convert(affinityToken, fileID).Result;
    string processId = (string)convertResults.SelectToken("processId");
    affinityToken = (string)convertResults.SelectToken("affinityToken");

    //---Check the status that conversion is completed---
    JObject convertStatusResults = ConvertStatus(processId, affinityToken).Result;
    string convertStatus = (string)convertStatusResults.SelectToken("state");

    //---Continuously checking whether conversion completed---
    while (!(convertStatus.Equals("complete")))
    {
        System.Threading.Thread.Sleep(30000);
        convertStatusResults = ConvertStatus(processId, affinityToken).Result;
        convertStatus = (string)convertStatusResults.SelectToken("state");
    }

    //---Download the converted file from server---
    string newFileID = (string)convertStatusResults.SelectToken("output.results[0].fileId");
    DownloadFromServer(affinityToken, newFileID, "sample.pdf").Wait();

    Console.WriteLine("PDF file created successfully...!");
    Console.ReadKey();
}
Shared Sub Main(ByVal args() As String)
	'---Upload file to Server---
	Dim uploadResults As JObject = UploadToServer("myWebpage.html").Result
	Dim fileID As String = CStr(uploadResults.SelectToken("fileId"))
	Dim affinityToken As String = CStr(uploadResults.SelectToken("affinityToken"))

	'---Convert the uploaded file to PDF---
	Dim convertResults As JObject = Convert(affinityToken, fileID).Result
	Dim processId As String = CStr(convertResults.SelectToken("processId"))
	affinityToken = CStr(convertResults.SelectToken("affinityToken"))

	'---Check the status that conversion is completed---
	Dim convertStatusResults As JObject = ConvertStatus(processId, affinityToken).Result
	Dim convertStatus As String = CStr(convertStatusResults.SelectToken("state"))

	'---Continuously checking whether conversion completed---
	Do While Not (convertStatus.Equals("complete"))
		System.Threading.Thread.Sleep(30000)
		convertStatusResults = ConvertStatus(processId, affinityToken).Result
		convertStatus = CStr(convertStatusResults.SelectToken("state"))
	Loop

	'---Download the converted file from server---
	Dim newFileID As String = CStr(convertStatusResults.SelectToken("output.results[0].fileId"))
	DownloadFromServer(affinityToken, newFileID, "sample.pdf").Wait()

	Console.WriteLine("PDF file created successfully...!")
	Console.ReadKey()
End Sub
$vbLabelText   $csharpLabel

1. Datei auf den Server hochladen:

public static async Task<JObject> UploadToServer(string fileToUpload)
{
    FileInfo input = new FileInfo(fileToUpload);
    if (input == null)
    {
        throw new ArgumentException("Missing parameter input", nameof(input));
    }
    var fileName = input.Name;
    var endpoint = new Uri("___PROTECTED_URL_123___");
    using (var client = new WebClient())
    {
        client.Headers.Add("acs-api-key", ApiKey);
        client.Headers.Add("Content-Type", "application/octet-stream");
        using (var reader = new BinaryReader(input.OpenRead()))
        {
            var data = reader.ReadBytes((int)reader.BaseStream.Length);
            var results = await client.UploadDataTaskAsync(endpoint, "POST", data);
            string getResult = Encoding.ASCII.GetString(results);
            return JObject.Parse(getResult);
        }
    }
}
public static async Task<JObject> UploadToServer(string fileToUpload)
{
    FileInfo input = new FileInfo(fileToUpload);
    if (input == null)
    {
        throw new ArgumentException("Missing parameter input", nameof(input));
    }
    var fileName = input.Name;
    var endpoint = new Uri("___PROTECTED_URL_123___");
    using (var client = new WebClient())
    {
        client.Headers.Add("acs-api-key", ApiKey);
        client.Headers.Add("Content-Type", "application/octet-stream");
        using (var reader = new BinaryReader(input.OpenRead()))
        {
            var data = reader.ReadBytes((int)reader.BaseStream.Length);
            var results = await client.UploadDataTaskAsync(endpoint, "POST", data);
            string getResult = Encoding.ASCII.GetString(results);
            return JObject.Parse(getResult);
        }
    }
}
Public Shared Async Function UploadToServer(fileToUpload As String) As Task(Of JObject)
    Dim input As New FileInfo(fileToUpload)
    If input Is Nothing Then
        Throw New ArgumentException("Missing parameter input", NameOf(input))
    End If

    Dim fileName = input.Name
    Dim endpoint As New Uri("___PROTECTED_URL_123___")
    Using client As New WebClient()
        client.Headers.Add("acs-api-key", ApiKey)
        client.Headers.Add("Content-Type", "application/octet-stream")
        Using reader As New BinaryReader(input.OpenRead())
            Dim data = reader.ReadBytes(CInt(reader.BaseStream.Length))
            Dim results = Await client.UploadDataTaskAsync(endpoint, "POST", data)
            Dim getResult As String = Encoding.ASCII.GetString(results)
            Return JObject.Parse(getResult)
        End Using
    End Using
End Function
$vbLabelText   $csharpLabel

2. Konvertieren Sie die hochgeladene Datei in PDF:

public static async Task<JObject> Convert(string affinityToken, string fileID)
{
    var endpoint = new Uri("___PROTECTED_URL_124___");
    using (var client = new WebClient())
    {
        client.Headers.Add("Content-Type", "application/json");
        client.Headers.Add("acs-api-key", ApiKey);
        client.Headers.Add("Accusoft-Affinity-Token", affinityToken);
        JObject myJson =
            new JObject(
                new JProperty("input",
                    new JObject(
                        new JProperty("sources",
                            new JArray(
                                new JObject(
                                    new JProperty("fileId", fileID)
                                )
                            )
                        ),
                        new JProperty("dest",
                            new JObject(
                                new JProperty("format", "pdf")
                            )
                        )
                    )
                )
            );
        string results = await client.UploadStringTaskAsync(endpoint, "POST", myJson.ToString());
        return JObject.Parse(results);
    }
}
public static async Task<JObject> Convert(string affinityToken, string fileID)
{
    var endpoint = new Uri("___PROTECTED_URL_124___");
    using (var client = new WebClient())
    {
        client.Headers.Add("Content-Type", "application/json");
        client.Headers.Add("acs-api-key", ApiKey);
        client.Headers.Add("Accusoft-Affinity-Token", affinityToken);
        JObject myJson =
            new JObject(
                new JProperty("input",
                    new JObject(
                        new JProperty("sources",
                            new JArray(
                                new JObject(
                                    new JProperty("fileId", fileID)
                                )
                            )
                        ),
                        new JProperty("dest",
                            new JObject(
                                new JProperty("format", "pdf")
                            )
                        )
                    )
                )
            );
        string results = await client.UploadStringTaskAsync(endpoint, "POST", myJson.ToString());
        return JObject.Parse(results);
    }
}
Public Shared Async Function Convert(affinityToken As String, fileID As String) As Task(Of JObject)
    Dim endpoint = New Uri("___PROTECTED_URL_124___")
    Using client = New WebClient()
        client.Headers.Add("Content-Type", "application/json")
        client.Headers.Add("acs-api-key", ApiKey)
        client.Headers.Add("Accusoft-Affinity-Token", affinityToken)
        Dim myJson As JObject =
            New JObject(
                New JProperty("input",
                    New JObject(
                        New JProperty("sources",
                            New JArray(
                                New JObject(
                                    New JProperty("fileId", fileID)
                                )
                            )
                        ),
                        New JProperty("dest",
                            New JObject(
                                New JProperty("format", "pdf")
                            )
                        )
                    )
                )
            )
        Dim results As String = Await client.UploadStringTaskAsync(endpoint, "POST", myJson.ToString())
        Return JObject.Parse(results)
    End Using
End Function
$vbLabelText   $csharpLabel

Das folgende JSON ist der resultierende Wert des myJson-Objekts:

{
  "input": {
    "sources": 
    [
      {"fileId": "Auto Generated FileId Value"}
    ],
    "dest": {
      "format": "pdf"
    }
  }
}

Prüfen Sie den Status, ob die Konvertierung abgeschlossen ist oder nicht

public static async Task<JObject> ConvertStatus(string processId, string affinityToken)
{
    string endpoint = "___PROTECTED_URL_125___" + processId;
    using (var client = new WebClient())
    {
        client.BaseAddress = endpoint;
        client.Headers.Add("acs-api-key", ApiKey);
        client.Headers.Add("Accusoft-Affinity-Token", affinityToken);
        string results = await client.DownloadStringTaskAsync(endpoint);
        return JObject.Parse(results);
    }
}
public static async Task<JObject> ConvertStatus(string processId, string affinityToken)
{
    string endpoint = "___PROTECTED_URL_125___" + processId;
    using (var client = new WebClient())
    {
        client.BaseAddress = endpoint;
        client.Headers.Add("acs-api-key", ApiKey);
        client.Headers.Add("Accusoft-Affinity-Token", affinityToken);
        string results = await client.DownloadStringTaskAsync(endpoint);
        return JObject.Parse(results);
    }
}
Public Shared Async Function ConvertStatus(processId As String, affinityToken As String) As Task(Of JObject)
    Dim endpoint As String = "___PROTECTED_URL_125___" & processId
    Using client As New WebClient()
        client.BaseAddress = endpoint
        client.Headers.Add("acs-api-key", ApiKey)
        client.Headers.Add("Accusoft-Affinity-Token", affinityToken)
        Dim results As String = Await client.DownloadStringTaskAsync(endpoint)
        Return JObject.Parse(results)
    End Using
End Function
$vbLabelText   $csharpLabel

3. Laden Sie die konvertierte Datei vom Server herunter

public static async Task DownloadFromServer(string affinityToken, string fileId, string outfile)
{
    var endpoint = new Uri("___PROTECTED_URL_126___" + fileId);

    using (var client = new WebClient())
    {
        client.Headers.Add("acs-api-key", ApiKey);
        client.Headers.Add("Accusoft-Affinity-Token", affinityToken);
        FileInfo output = new FileInfo(outfile);

        using (var writeStream = output.Create())
        {
            var results = await client.DownloadDataTaskAsync(endpoint);
            await writeStream.WriteAsync(results, 0, results.Length);
        }
    }
}
public static async Task DownloadFromServer(string affinityToken, string fileId, string outfile)
{
    var endpoint = new Uri("___PROTECTED_URL_126___" + fileId);

    using (var client = new WebClient())
    {
        client.Headers.Add("acs-api-key", ApiKey);
        client.Headers.Add("Accusoft-Affinity-Token", affinityToken);
        FileInfo output = new FileInfo(outfile);

        using (var writeStream = output.Create())
        {
            var results = await client.DownloadDataTaskAsync(endpoint);
            await writeStream.WriteAsync(results, 0, results.Length);
        }
    }
}
Public Shared Async Function DownloadFromServer(affinityToken As String, fileId As String, outfile As String) As Task
    Dim endpoint As New Uri("___PROTECTED_URL_126___" & fileId)

    Using client As New WebClient()
        client.Headers.Add("acs-api-key", ApiKey)
        client.Headers.Add("Accusoft-Affinity-Token", affinityToken)
        Dim output As New FileInfo(outfile)

        Using writeStream As FileStream = output.Create()
            Dim results As Byte() = Await client.DownloadDataTaskAsync(endpoint)
            Await writeStream.WriteAsync(results, 0, results.Length)
        End Using
    End Using
End Function
$vbLabelText   $csharpLabel

Das obige Beispiel erfordert einen erheblichen Aufwand. Um die Arbeitslast zu minimieren, führte Accusoft eine .NET-Bibliothek namens Accusoft.PrizmDocServerSDK ein, eine Wrapper-Bibliothek um die PrizmDoc Server REST API. Schauen wir uns an, wie man diese Bibliothek in .NET -Projekten installiert und verwendet.

Wie installiere ich das Accusoft `PrizmDocServer` SDK?

Es gibt zwei Möglichkeiten, den Wrapper zu installieren.

  • Paketmanager-Konsole:

    Wenn Sie die Paket-Manager-Konsole verwenden, führen Sie folgenden Befehl aus:

    _CODEBLOCK10

  • Pakete für die Lösung verwalten:

    Wenn Sie die NuGet-Paketmanager-GUI verwenden, suchen Sie nach Accusoft.PrizmDocServerSDK in der Suchleiste und installieren Sie es.

Jetzt können Entwickler leicht auf den Accusoft.PrizmDocServer Namespace zugreifen und ihn nutzen:

using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer;
Imports Accusoft.PrizmDocServer
$vbLabelText   $csharpLabel

Anleitungs-Tutorials

Wie Vergleichen Sich IronPDF und PrizmDoc Viewer in Code-Beispielen?

Nachdem wir die Einführung und Installation beider Komponenten besprochen haben, ist es nun an der Zeit, mit beiden zu arbeiten. Die folgenden Anwendungsfälle zeigen Implementierungen mit beiden Komponenten, um Programmierstrukturen zu verstehen und zu entscheiden, welche den Projektanforderungen entspricht.


Wie Konvertiere Ich HTML zu PDF Mit IronPDF im Vergleich zu PrizmDoc Viewer?

Für diesen Vergleich konvertieren wir eine Webseite namens myWebPage.html in eine PDF-Datei und speichern sie am Zielort. Die Chrome-Rendering-Engine von IronPDF bietet pixelgenaue Konvertierung mit voller Unterstützung für CSS , JavaScript und Webfonts .

Wie konvertiert IronPDF HTML in PDF?

using IronPdf;

static void Main(string[] args)
{
    // Create rendering converter
    var converter = new ChromePdfRenderer();
    // Render HTML file to PDF
    using var PDF = converter.RenderHTMLFileAsPdf("myWebPage.html");
    // Save to target location
    PDF.SaveAs("sample.pdf");
}
using IronPdf;

static void Main(string[] args)
{
    // Create rendering converter
    var converter = new ChromePdfRenderer();
    // Render HTML file to PDF
    using var PDF = converter.RenderHTMLFileAsPdf("myWebPage.html");
    // Save to target location
    PDF.SaveAs("sample.pdf");
}
Imports IronPdf

Shared Sub Main(ByVal args() As String)
	' Create rendering converter
	Dim converter = New ChromePdfRenderer()
	' Render HTML file to PDF
	Dim PDF = converter.RenderHTMLFileAsPdf("myWebPage.html")
	' Save to target location
	PDF.SaveAs("sample.pdf")
End Sub
$vbLabelText   $csharpLabel

Der obige Code erstellt eine sample.pdf-Datei und speichert sie im bin>debug-Ordner des Projekts. IronPDF unterstützt außerdem HTML-Strings , URLs und sogar ZIP-Dateien, die HTML enthalten, als Eingabequellen.

Entwickler können auch einen beliebigen Pfad wie diesen angeben: PDF.SaveAs("E:/sample.pdf"); oder in einen Speicherstrom für Cloud-Bereitstellungen speichern.

Lesen Sie mehr über die Arbeit mit IronPDF im Umgang mit PDF-Dateien.

Jetzt führen wir die gleiche Aufgabe mit dem PrizmDoc Viewer zum Vergleich aus.

Wie Konvertiert PrizmDoc Viewer HTML zu PDF?

Im Abschnitt zur Installation des PrizmDoc Viewers wurde das Erlangen von Accusoft API Key besprochen. So wird es verwendet.

Senden Sie zuerst eine Anfrage an den PrizmDoc-Server und empfangen Sie eine Antwort. Dieser Prozess benötigt Zeit und erfordert asynchrone Programmierung . IronPDF unterstützt außerdem asynchrone Methoden zur Leistungssteigerung.

Hinweis: Stellen Sie sicher, dass das System mit dem Internet verbunden ist, wenn Sie PDF-Dateien mit den Cloud-Services des PrizmDoc Viewers erstellen.

using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer.Conversion;

static void Main(string[] args)
{
    ChromePdfRenderer().GetAwaiter().GetResult();
}

private static async Task ChromePdfRenderer()
{
    // Instantiate PrizmDocServerClient object
    var prizmDocServer = new PrizmDocServerClient("___PROTECTED_URL_127___", "Your-API-KEY");
    // Specify HTML file and convert it to a PDF.
    ConversionResult result = await prizmDocServer.ConvertToPdfAsync("myWebPage.html");
    // Save PDF file to the target location
    await result.RemoteWorkFile.SaveAsync("sample.pdf");
}
using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer.Conversion;

static void Main(string[] args)
{
    ChromePdfRenderer().GetAwaiter().GetResult();
}

private static async Task ChromePdfRenderer()
{
    // Instantiate PrizmDocServerClient object
    var prizmDocServer = new PrizmDocServerClient("___PROTECTED_URL_127___", "Your-API-KEY");
    // Specify HTML file and convert it to a PDF.
    ConversionResult result = await prizmDocServer.ConvertToPdfAsync("myWebPage.html");
    // Save PDF file to the target location
    await result.RemoteWorkFile.SaveAsync("sample.pdf");
}
Imports Accusoft.PrizmDocServer
Imports Accusoft.PrizmDocServer.Conversion

Module Program
    Sub Main(args As String())
        ChromePdfRenderer().GetAwaiter().GetResult()
    End Sub

    Private Async Function ChromePdfRenderer() As Task
        ' Instantiate PrizmDocServerClient object
        Dim prizmDocServer = New PrizmDocServerClient("___PROTECTED_URL_127___", "Your-API-KEY")
        ' Specify HTML file and convert it to a PDF.
        Dim result As ConversionResult = Await prizmDocServer.ConvertToPdfAsync("myWebPage.html")
        ' Save PDF file to the target location
        Await result.RemoteWorkFile.SaveAsync("sample.pdf")
    End Function
End Module
$vbLabelText   $csharpLabel

Lesen Sie mehr über die Arbeit mit dem PrizmDoc Viewer.

Welche Bibliothek bietet eine einfachere HTML-zu-PDF-Konvertierung?

Diese Beispiele zeigen, dass IronPDF eine einfachere und zeitsparende Methode zum Erstellen von PDF-Dateien bietet. IronPDF bietet zudem Rendering-Optionen zur Feinabstimmung der Ausgabe, darunter benutzerdefinierte Papierformate , Ränder und Ansichtsfenstereinstellungen .


Wie Konvertiere Ich Bilder Zu PDF Mit IronPDF Im Vergleich Zu PrizmDoc Viewer?

Dieser Vergleich zeigt, wie man aus einem Bild im debug-Ordner des Projekts eine PDF-Datei erstellt. Entwickler beginnen mit IronPDF.

Wie konvertiert IronPDF Bilder in PDF?

using IronPdf;

static void Main(string[] args)
{
    // Specify the image to be converted
    using var converted = ImageToPdfConverter.ImageToPdf("google.png");
    // Save PDF file to the target location
    converted.SaveAs("sample.pdf");
}
using IronPdf;

static void Main(string[] args)
{
    // Specify the image to be converted
    using var converted = ImageToPdfConverter.ImageToPdf("google.png");
    // Save PDF file to the target location
    converted.SaveAs("sample.pdf");
}
Imports IronPdf

Shared Sub Main(ByVal args() As String)
	' Specify the image to be converted
	Dim converted = ImageToPdfConverter.ImageToPdf("google.png")
	' Save PDF file to the target location
	converted.SaveAs("sample.pdf")
End Sub
$vbLabelText   $csharpLabel

IronPDF unterstützt außerdem die TIFF-Konvertierung mit mehreren Einzelbildern , das Einbetten von Bildern aus Azure Blob Storage und das Einbetten von Base64-Bildern .

Ausgabe:

Dieser Screenshot zeigt die neu erstellte PDF-Datei sample.pdf mit dem obigen Code:

PDF-Dokument mit dem zentrierten Google-Logo auf weißem Hintergrund, das die Bild-zu-PDF-Konvertierungsfähigkeit von IronPDF demonstriert

Mit IronPDF lässt sich aus einem Bild ganz einfach eine PDF-Datei erstellen. Jetzt führen wir die gleiche Aufgabe mit dem PrizmDoc Viewer aus und untersuchen seine generierte PDF-Datei.

Wie Konvertiert PrizmDoc Viewer Bilder zu PDF?

using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer.Conversion;

static void Main(string[] args)
{
    ImageToPDF().GetAwaiter().GetResult();
}

private static async Task ImageToPDF()
{
    // Instantiate PrizmDocServerClient object
    var prizmDocServer = new PrizmDocServerClient("___PROTECTED_URL_128___", "Your-API-KEY");
    // Specify the image to be converted
    ConversionResult results = await prizmDocServer.ConvertToPdfAsync("google.png");
    // Save PDF file to the target location
    await results.RemoteWorkFile.SaveAsync("sample.pdf");
}
using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer.Conversion;

static void Main(string[] args)
{
    ImageToPDF().GetAwaiter().GetResult();
}

private static async Task ImageToPDF()
{
    // Instantiate PrizmDocServerClient object
    var prizmDocServer = new PrizmDocServerClient("___PROTECTED_URL_128___", "Your-API-KEY");
    // Specify the image to be converted
    ConversionResult results = await prizmDocServer.ConvertToPdfAsync("google.png");
    // Save PDF file to the target location
    await results.RemoteWorkFile.SaveAsync("sample.pdf");
}
Imports Accusoft.PrizmDocServer
Imports Accusoft.PrizmDocServer.Conversion

Module Module1

    Sub Main()
        ImageToPDF().GetAwaiter().GetResult()
    End Sub

    Private Async Function ImageToPDF() As Task
        ' Instantiate PrizmDocServerClient object
        Dim prizmDocServer As New PrizmDocServerClient("___PROTECTED_URL_128___", "Your-API-KEY")
        ' Specify the image to be converted
        Dim results As ConversionResult = Await prizmDocServer.ConvertToPdfAsync("google.png")
        ' Save PDF file to the target location
        Await results.RemoteWorkFile.SaveAsync("sample.pdf")
    End Function

End Module
$vbLabelText   $csharpLabel

Ausgabe: Dieser Screenshot zeigt die neu erstellte PDF-Datei sample.pdf aus dem obigen Code:

PDF viewer displaying the Google logo on a gray background, showing `PrizmDoc`'s image conversion result

Welche Bibliothek benötigt weniger Code für die Bild-zu-PDF-Konvertierung?

IronPDF benötigt nur zwei Codezeilen. Im Gegensatz dazu erfordert die Verwendung des PrizmDoc-Servers mehr Codezeilen mit asynchroner Programmierung. Die Ausgabe von IronPDF liefert automatisch ein verwendbares, vollständiges Dokument. IronPDF bietet zusätzliche Optionen für die Bildpositionierung und die Konvertierung mehrerer Bilder .


Wie Füge Ich Kopf- und Fußzeilen Zu PDFs Mit IronPDF Im Vergleich Zu PrizmDoc Viewer Hinzu?

Für diesen Vergleich gehen wir davon aus, dass drei PDF-Dateien mit den Namen A.pdf, B.pdf und C.pdf existieren. Die Aufgabe besteht darin, sie zu einer einzigen PDF-Datei zusammenzuführen . Beide Komponenten können diese Aufgabe ausführen. Zunächst zeigt das Beispiel, wie dies mit IronPDF funktioniert.

Wie funktioniert IronPDF beim Zusammenführen von PDF-Dateien?

using IronPdf;
using System.Collections.Generic;

static void Main(string[] args)
{
    // Create rendering converter  
    var Renderer = new IronPdf.ChromePdfRenderer();
    // Create a list of pdf files
    var PDFs = new List<PdfDocument>();
    PDFs.Add(PdfDocument.FromFile("A.pdf"));
    PDFs.Add(PdfDocument.FromFile("B.pdf"));
    PDFs.Add(PdfDocument.FromFile("C.pdf"));
    // Merge the list of pdf file
    using PdfDocument PDF = PdfDocument.Merge(PDFs);
    // Save merged file to the target location
    PDF.SaveAs("sample.pdf");

    foreach(var pdf in PDFs)
    {
        pdf.Dispose();
    }
}
using IronPdf;
using System.Collections.Generic;

static void Main(string[] args)
{
    // Create rendering converter  
    var Renderer = new IronPdf.ChromePdfRenderer();
    // Create a list of pdf files
    var PDFs = new List<PdfDocument>();
    PDFs.Add(PdfDocument.FromFile("A.pdf"));
    PDFs.Add(PdfDocument.FromFile("B.pdf"));
    PDFs.Add(PdfDocument.FromFile("C.pdf"));
    // Merge the list of pdf file
    using PdfDocument PDF = PdfDocument.Merge(PDFs);
    // Save merged file to the target location
    PDF.SaveAs("sample.pdf");

    foreach(var pdf in PDFs)
    {
        pdf.Dispose();
    }
}
Imports IronPdf
Imports System.Collections.Generic

Shared Sub Main(ByVal args() As String)
	' Create rendering converter  
	Dim Renderer = New IronPdf.ChromePdfRenderer()
	' Create a list of pdf files
	Dim PDFs = New List(Of PdfDocument)()
	PDFs.Add(PdfDocument.FromFile("A.pdf"))
	PDFs.Add(PdfDocument.FromFile("B.pdf"))
	PDFs.Add(PdfDocument.FromFile("C.pdf"))
	' Merge the list of pdf file
	Using PDF As PdfDocument = PdfDocument.Merge(PDFs)
		' Save merged file to the target location
		PDF.SaveAs("sample.pdf")
	
'INSTANT VB NOTE: The variable pdf was renamed since Visual Basic will not allow local variables with the same name as parameters or other local variables:
		For Each .pdf_Conflict In PDFs
			.pdf_Conflict.Dispose()
		Next pdf_Conflict
	End Using
End Sub
$vbLabelText   $csharpLabel

Der obenstehende Code erstellt eine sample.pdf-Datei, die A.pdf, B.pdf und C.pdf kombiniert. IronPDF unterstützt außerdem das Hinzufügen und Kopieren von Seiten zwischen PDFs sowie das Aufteilen von PDFs .

Jetzt führen wir die gleiche Aufgabe mit dem PrizmDoc Viewer aus.

Wie Fügt PrizmDoc Viewer PDF-Dateien Zusammen?

using System.Threading.Tasks;
using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer.Conversion;

static void Main(string[] args)
{
    PdfMerge().GetAwaiter().GetResult();
}

private static async Task PdfMerge()
{
    // Instantiate PrizmDocServerClient object
    var prizmDocServer = new PrizmDocServerClient("___PROTECTED_URL_129___", "Your-API-KEY");
    // Pass the list of pdf files to PrizmDoc Server
    ConversionResult result = await prizmDocServer.CombineToPdfAsync(
        new []
        {
            new ConversionSourceDocument("A.pdf"),
            new ConversionSourceDocument("B.pdf"),
            new ConversionSourceDocument("C.pdf"),
        });
    // Save merged file to the target location
    await result.RemoteWorkFile.SaveAsync("sample.pdf");
}
using System.Threading.Tasks;
using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer.Conversion;

static void Main(string[] args)
{
    PdfMerge().GetAwaiter().GetResult();
}

private static async Task PdfMerge()
{
    // Instantiate PrizmDocServerClient object
    var prizmDocServer = new PrizmDocServerClient("___PROTECTED_URL_129___", "Your-API-KEY");
    // Pass the list of pdf files to PrizmDoc Server
    ConversionResult result = await prizmDocServer.CombineToPdfAsync(
        new []
        {
            new ConversionSourceDocument("A.pdf"),
            new ConversionSourceDocument("B.pdf"),
            new ConversionSourceDocument("C.pdf"),
        });
    // Save merged file to the target location
    await result.RemoteWorkFile.SaveAsync("sample.pdf");
}
Imports System.Threading.Tasks
Imports Accusoft.PrizmDocServer
Imports Accusoft.PrizmDocServer.Conversion

Module Module1
    Sub Main()
        PdfMerge().GetAwaiter().GetResult()
    End Sub

    Private Async Function PdfMerge() As Task
        ' Instantiate PrizmDocServerClient object
        Dim prizmDocServer = New PrizmDocServerClient("___PROTECTED_URL_129___", "Your-API-KEY")
        ' Pass the list of pdf files to PrizmDoc Server
        Dim result As ConversionResult = Await prizmDocServer.CombineToPdfAsync(
            New ConversionSourceDocument() {
                New ConversionSourceDocument("A.pdf"),
                New ConversionSourceDocument("B.pdf"),
                New ConversionSourceDocument("C.pdf")
            })
        ' Save merged file to the target location
        Await result.RemoteWorkFile.SaveAsync("sample.pdf")
    End Function
End Module
$vbLabelText   $csharpLabel

Der obenstehende Code erstellt auch eine sample.pdf-Datei, welche die A.pdf, B.pdf und C.pdf-Dateien kombiniert.


Wie Füge Ich Kopf- und Fußzeilen Zu PDFs Mit IronPDF Im Vergleich Zu PrizmDoc Viewer Hinzu?

Für diesen Vergleich gehen wir von einem einfachen WebPage mit dem Namen myWebPage.html aus, das das folgende HTML und CSS enthält:

<html>
<head>
    <style>
        li {
            font-size: x-large;
            color: rgba(156, 89, 13, 0.897);
            list-style: square;
        }
    </style>
</head>
<body>
    <h1 style="text-align: center;">Hello World..!</h1>
    <h1>Main Menu</h1>
    <ul>
        <li>SubMenu 1</li>
        <li>SubMenu 2</li>
        <li>SubMenu 3</li>
        <li>SubMenu 4</li>
        <li>SubMenu 5</li>
    </ul>
</body>
</html>
<html>
<head>
    <style>
        li {
            font-size: x-large;
            color: rgba(156, 89, 13, 0.897);
            list-style: square;
        }
    </style>
</head>
<body>
    <h1 style="text-align: center;">Hello World..!</h1>
    <h1>Main Menu</h1>
    <ul>
        <li>SubMenu 1</li>
        <li>SubMenu 2</li>
        <li>SubMenu 3</li>
        <li>SubMenu 4</li>
        <li>SubMenu 5</li>
    </ul>
</body>
</html>
HTML

Ziel ist es, dieses WebPage in eine PDF-Datei zu konvertieren mit den folgenden Kopf- und Fußzeileneigenschaften:

  • Page Title auf der linken Seite der Kopfzeile
  • DateTime auf der rechten Seite der Kopfzeile
  • Page Number of Total Pages auf der rechten Seite der Fußzeile

Zunächst wollen wir uns ansehen, wie IronPDF Kopf- und Fußzeilen handhabt.

Wie verarbeitet IronPDF Kopf- und Fußzeilen in PDFs?

Um Kopf- und Fußzeilen von PDF-Dateien zu verarbeiten, bietet IronPDF eine Eigenschaft in der ChromePdfRenderer-Klasse mit dem Namen RenderingOptions, die wie folgt verwendet werden kann:

  • Für Kopfzeile:

    _CODEBLOCK19

  • Für Fußzeile:

    _CODEBLOCK20

Die folgenden Eigenschaften können bei der Initialisierung von TextHeaderFooter() festgelegt werden:

  • CenterText zum Drucken von Text in der Mitte der Kopf- oder Fußzeile
  • LeftText zum Drucken von Text auf der linken Seite der Kopf- oder Fußzeile
  • RightText zum Drucken von Text auf der rechten Seite der Kopf- oder Fußzeile
  • DrawDividerLine zeichnet eine Linie, die den Seiteninhalt von der Kopf- oder Fußzeile trennt
  • FontFamily zur Angabe der Schriftfamilie von Kopf- oder Fußzeile
  • FontSize zur Angabe der Schriftgröße der Kopf- oder Fußzeile
  • Mit der Abstandseinstellung wird der Abstand zwischen Seiteninhalt und Kopf- bzw. Fußzeile angepasst.

Die folgenden vordefinierten Attribute helfen beim Festlegen des Inhalts von Kopf- oder Fußzeile. Sie werden in geschweifte Klammern geschrieben { }:

  • {page} gibt die aktuelle Seitenzahl in der Kopf- oder Fußzeile aus
  • {total-pages} gibt die Gesamtseitenzahl in der Kopf- oder Fußzeile aus.
  • {url} gibt die URL der gerenderten Seite aus
  • {date} gibt das aktuelle Datum in der Kopf- oder Fußzeile aus
  • {time} gibt die aktuelle Uhrzeit in der Kopf- oder Fußzeile aus
  • {html-title} gibt den Titel der gerenderten Webseite in der Kopf- oder Fußzeile aus.
  • {pdf-title} gibt den Dokumenttitel in der Kopf- oder Fußzeile aus

Lesen Sie mehr über die Arbeit mit Kopf- und Fußzeilen in IronPDF. IronPDF unterstützt auch HTML-Kopf- und Fußzeilen für komplexere Designs.

Das Beispiel zeigt die folgende Vorgehensweise zur Implementierung des Anwendungsfalls und demonstriert die Verwendung der oben genannten Eigenschaften:

using IronPdf;

static void Main(string[] args)
{
    // Create rendering converter
    var converter = new ChromePdfRenderer();
    // Setting Header properties
    converter.RenderingOptions.TextHeader = new TextHeaderFooter()
    {
        DrawDividerLine = true,
        LeftText = "Page Title",
        RightText = "{date} {time}",
        FontSize = 13
    };
    // Setting footer properties
    converter.RenderingOptions.TextFooter = new TextHeaderFooter()
    {
        RightText = "Page {page} of {total-pages}",
        FontSize = 12
    };
    // Specify the file to be converted
    using var PDF = converter.RenderHTMLFileAsPdf("myWebPage.html");
    // Save to target location
    PDF.SaveAs("sample.pdf");
}
using IronPdf;

static void Main(string[] args)
{
    // Create rendering converter
    var converter = new ChromePdfRenderer();
    // Setting Header properties
    converter.RenderingOptions.TextHeader = new TextHeaderFooter()
    {
        DrawDividerLine = true,
        LeftText = "Page Title",
        RightText = "{date} {time}",
        FontSize = 13
    };
    // Setting footer properties
    converter.RenderingOptions.TextFooter = new TextHeaderFooter()
    {
        RightText = "Page {page} of {total-pages}",
        FontSize = 12
    };
    // Specify the file to be converted
    using var PDF = converter.RenderHTMLFileAsPdf("myWebPage.html");
    // Save to target location
    PDF.SaveAs("sample.pdf");
}
Imports IronPdf

Shared Sub Main(ByVal args() As String)
	' Create rendering converter
	Dim converter = New ChromePdfRenderer()
	' Setting Header properties
	converter.RenderingOptions.TextHeader = New TextHeaderFooter() With {
		.DrawDividerLine = True,
		.LeftText = "Page Title",
		.RightText = "{date} {time}",
		.FontSize = 13
	}
	' Setting footer properties
	converter.RenderingOptions.TextFooter = New TextHeaderFooter() With {
		.RightText = "Page {page} of {total-pages}",
		.FontSize = 12
	}
	' Specify the file to be converted
	Dim PDF = converter.RenderHTMLFileAsPdf("myWebPage.html")
	' Save to target location
	PDF.SaveAs("sample.pdf")
End Sub
$vbLabelText   $csharpLabel

Ausgabe: Der Screenshot der neu erstellten PDF-Datei sample.pdf durch den obigen Code:

PDF-Dokument mit benutzerdefinierter Kopfzeile, die "Seitentitel" und Datum/Uhrzeit anzeigt und die Kopf- und Fußzeilenfunktionen von IronPDF demonstriert.

Die Arbeit mit Kopf- und Fußzeilen unter Verwendung von IronPDF erfordert eine intuitive Sprache beim Erstellen von PDF-Dateien. Das Beispiel zeigt nun, wie der PrizmDoc Viewer Kopf- und Fußzeilen bearbeitet.

Wie Handhabt PrizmDoc Viewer PDF-Kopf- und Fußzeilen?

Der PrizmDoc Viewer bietet die HeaderFooterOptions-Klasse, um mit Kopf- und Fußzeilen umzugehen, mit den folgenden Eigenschaften:

  • Zeilen gibt die Zeile(n) für Kopf- und Fußzeile an, wobei jede Zeile die folgenden Eigenschaften hat:
    • Links druckt Text auf der linken Seite der Kopf- oder Fußzeilenlinie
    • Zentrieren druckt Text in der Mitte der Kopf- oder Fußzeile.
    • Rechts druckt Text auf der rechten Seite der Kopf- oder Fußzeile.
  • FontFamily zur Angabe der Schriftfamilie des Kopf- oder Fußzeilentextes
  • FontSize zur Angabe der Schriftgröße des Kopf- oder Fußzeilentextes
  • Farbe zur Angabe der Farbe des Kopf- oder Fußzeilentextes

Lesen Sie mehr über das Setzen von Kopf- und Fußzeilen von PDF-Seiten mit dem PrizmDoc-Server.

Das Beispiel zeigt, wie der Anwendungsfall mithilfe der oben genannten Eigenschaften implementiert werden kann:

using System.Threading.Tasks;
using System.Collections.Generic;
using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer.Conversion;

static void Main(string[] args)
{
    SetHeaderFooter().GetAwaiter().GetResult();
}

private static async Task SetHeaderFooter()
{
    // Instantiate PrizmDocServerClient object with Header and footer properties
    var prizmDocServer = new PrizmDocServerClient("___PROTECTED_URL_130___", "Your-API-KEY");

    ConversionResult result = await prizmDocServer.ConvertToPdfAsync(
        "myWebPage.html",
        header: new HeaderFooterOptions
        {
            Lines = new List<HeaderFooterLine>
            {
                new HeaderFooterLine { Left = "Page Title", Right = DateTime.Now.ToString() }
            },
        },
        footer: new HeaderFooterOptions
        {
            Lines = new List<HeaderFooterLine>
            {
                new HeaderFooterLine { Right = "Page {{pageNumber}} of {{pageCount}}" },
            },
        });

    // Save to the target location
    await result.RemoteWorkFile.SaveAsync("sample.pdf");
}
using System.Threading.Tasks;
using System.Collections.Generic;
using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer.Conversion;

static void Main(string[] args)
{
    SetHeaderFooter().GetAwaiter().GetResult();
}

private static async Task SetHeaderFooter()
{
    // Instantiate PrizmDocServerClient object with Header and footer properties
    var prizmDocServer = new PrizmDocServerClient("___PROTECTED_URL_130___", "Your-API-KEY");

    ConversionResult result = await prizmDocServer.ConvertToPdfAsync(
        "myWebPage.html",
        header: new HeaderFooterOptions
        {
            Lines = new List<HeaderFooterLine>
            {
                new HeaderFooterLine { Left = "Page Title", Right = DateTime.Now.ToString() }
            },
        },
        footer: new HeaderFooterOptions
        {
            Lines = new List<HeaderFooterLine>
            {
                new HeaderFooterLine { Right = "Page {{pageNumber}} of {{pageCount}}" },
            },
        });

    // Save to the target location
    await result.RemoteWorkFile.SaveAsync("sample.pdf");
}
Imports System.Threading.Tasks
Imports System.Collections.Generic
Imports Accusoft.PrizmDocServer
Imports Accusoft.PrizmDocServer.Conversion

Module Program
    Sub Main(args As String())
        SetHeaderFooter().GetAwaiter().GetResult()
    End Sub

    Private Async Function SetHeaderFooter() As Task
        ' Instantiate PrizmDocServerClient object with Header and footer properties
        Dim prizmDocServer = New PrizmDocServerClient("___PROTECTED_URL_130___", "Your-API-KEY")

        Dim result As ConversionResult = Await prizmDocServer.ConvertToPdfAsync(
            "myWebPage.html",
            header:=New HeaderFooterOptions With {
                .Lines = New List(Of HeaderFooterLine) From {
                    New HeaderFooterLine With {.Left = "Page Title", .Right = DateTime.Now.ToString()}
                }
            },
            footer:=New HeaderFooterOptions With {
                .Lines = New List(Of HeaderFooterLine) From {
                    New HeaderFooterLine With {.Right = "Page {{pageNumber}} of {{pageCount}}"}
                }
            })

        ' Save to the target location
        Await result.RemoteWorkFile.SaveAsync("sample.pdf")
    End Function
End Module
$vbLabelText   $csharpLabel

Ausgabe:

Screenshot der neu erstellten PDF-Datei mit dem obigen Code:

PDF with header showing 'Page Title' and timestamp, comparing `PrizmDoc`'s header/footer implementation

Welche Bibliothek bietet mehr Flexibilität für Kopf- und Fußzeilen?

IronPDF bietet mehr Funktionen zum Festlegen von Kopf- und Fußzeileneigenschaften mit einer einfachen Programmierstruktur im Vergleich zum PrizmDoc Viewer. Die von IronPDF erstellte PDF-Datei ist auch lesbarer und attraktiver als die vom PrizmDoc Viewer erstellte Datei. IronPDF unterstützt auch Seitenzahlen und Seitenumbrüche für eine verbesserte Dokumentenkontrolle.


Wie Konvertiere Ich PDF-Seiten zu Bildern Mit IronPDF Im Vergleich Zu PrizmDoc Viewer?

Für diesen Vergleich nehmen wir an, dass Sie eine einfache PDF-Datei namens Sample_PDF.pdf mit zwei Seiten haben.

Seite1 Seite2
PDF-Viewer zeigt Seite 1 einer Beispiel-PDF-Datei mit Lorem-ipsum-Text und Standard-Viewer-Steuerelementen an.
PDF-Viewer zeigt Seite 2 einer Beispiel-PDF-Datei mit Lorem-ipsum-Text und Navigationssteuerelementen an.

Die Aufgabe besteht darin , von jeder Seite ein Bild zu erstellen . Zunächst wird im Beispiel gezeigt, wie dies mit IronPDF funktioniert.

Wie wandelt IronPDF PDF-Seiten in Bilder um?

using IronPdf;

static void Main(string[] args)
{
    // Specify file to be converted
    var pdf = PdfDocument.FromFile("Sample_PDF.pdf");
    // Save images to the target location
    pdf.RasterizeToImageFiles("image_*.png");
}
using IronPdf;

static void Main(string[] args)
{
    // Specify file to be converted
    var pdf = PdfDocument.FromFile("Sample_PDF.pdf");
    // Save images to the target location
    pdf.RasterizeToImageFiles("image_*.png");
}
Imports IronPdf

Shared Sub Main(ByVal args() As String)
	' Specify file to be converted
	Dim pdf = PdfDocument.FromFile("Sample_PDF.pdf")
	' Save images to the target location
	pdf.RasterizeToImageFiles("image_*.png")
End Sub
$vbLabelText   $csharpLabel

IronPDF unterstützt außerdem das Speichern von Bildern im Speicherstream und verschiedene Bildformate, darunter JPEG, TIFF und mehr.

Ausgabe:

Der obige Code erstellt die folgenden zwei .png Bilder:

Seite1 Bild Seite2 Bild
PNG-Bild, generiert aus Seite 1 der PDF-Datei, zeigt Inhalte des Tutorials "Virtuelle Mechanik" mit klarer Textdarstellung.
PNG-Bild, generiert aus PDF-Seite 2, das den fortgesetzten Textinhalt in der Rasterisierungsqualität von IronPDF zeigt.

Das Erstellen von Bildern von PDF-Seiten mit IronPDF ist unkompliziert. Jetzt führen wir die gleiche Aufgabe mit dem PrizmDoc Viewer aus.

Wie Konvertiert PrizmDoc Viewer PDF-Seiten zu Bildern?

using System.Linq;
using System.Collections.Generic;
using System.Threading.Tasks;
using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer.Conversion;

static void Main(string[] args)
{
    PdfToImage().GetAwaiter().GetResult();
}

private static async Task PdfToImage()
{
    // Instantiate PrizmDocServerClient object
    var prizmDocServer = new PrizmDocServerClient("___PROTECTED_URL_131___", "Your-API-KEY");
    // Convert PDF file to images
    IEnumerable<ConversionResult> results = await prizmDocServer.ConvertAsync("Sample_PDF.pdf", DestinationFileFormat.Png);

    // Save each image.
    for (int i = 0; i < results.Count(); i++)
    {
        await results.ElementAt(i).RemoteWorkFile.SaveAsync($"page-{i + 1}.png");
    }
}
using System.Linq;
using System.Collections.Generic;
using System.Threading.Tasks;
using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer.Conversion;

static void Main(string[] args)
{
    PdfToImage().GetAwaiter().GetResult();
}

private static async Task PdfToImage()
{
    // Instantiate PrizmDocServerClient object
    var prizmDocServer = new PrizmDocServerClient("___PROTECTED_URL_131___", "Your-API-KEY");
    // Convert PDF file to images
    IEnumerable<ConversionResult> results = await prizmDocServer.ConvertAsync("Sample_PDF.pdf", DestinationFileFormat.Png);

    // Save each image.
    for (int i = 0; i < results.Count(); i++)
    {
        await results.ElementAt(i).RemoteWorkFile.SaveAsync($"page-{i + 1}.png");
    }
}
Imports System.Linq
Imports System.Collections.Generic
Imports System.Threading.Tasks
Imports Accusoft.PrizmDocServer
Imports Accusoft.PrizmDocServer.Conversion

Module Program
    Sub Main(args As String())
        PdfToImage().GetAwaiter().GetResult()
    End Sub

    Private Async Function PdfToImage() As Task
        ' Instantiate PrizmDocServerClient object
        Dim prizmDocServer = New PrizmDocServerClient("___PROTECTED_URL_131___", "Your-API-KEY")
        ' Convert PDF file to images
        Dim results As IEnumerable(Of ConversionResult) = Await prizmDocServer.ConvertAsync("Sample_PDF.pdf", DestinationFileFormat.Png)

        ' Save each image.
        For i As Integer = 0 To results.Count() - 1
            Await results.ElementAt(i).RemoteWorkFile.SaveAsync($"page-{i + 1}.png")
        Next
    End Function
End Module
$vbLabelText   $csharpLabel

Ausgabe:

Der obige Code erstellt auch die folgenden zwei .png Bilder:

Seite1 Seite2
PNG-Bild, generiert aus PDF-Seite 1 unter Verwendung des Konvertierungsdienstes von PrizmDoc mit Beispiel-Textinhalt
PNG-Bild, generiert aus PDF-Seite 2, das die Bildkonvertausgabequalität von PrizmDoc zeigt

Welche Bibliothek erleichtert die PDF-zu-Bild-Konvertierung?

Verglichen mit dem PrizmDoc Viewer erlaubt IronPDF es Entwicklern, Bilder jeder Seite mit minimalem Codeaufwand zu erstellen, selbst ohne durch Seiten zu iterieren.


Kann ich Bootstrap 5-Datentabellen mit IronPDF verwenden?

Die Chrome V8-Rendering-Engine von IronPDF bietet hervorragende Unterstützung für Bootstrap 5-Datentabellen und ermöglicht es Entwicklern, Professional PDF-Berichte mit komplexen Tabellenlayouts zu erstellen. Dieses Beispiel zeigt Verlaufs-Kopfzeilen, Statusabzeichen, Paginierungssteuerungen und Zusammenfassungsmetriken - Funktionen, die den Vorteil von IronPDF gegenüber traditionellen PDF-Viewern wie PrizmDoc hervorheben. IronPDF unterstützt moderne CSS-Funktionen vollständig, einschließlich Flexbox-Layouts , Farbverläufe und responsives Design .

using IronPdf;

var renderer = new ChromePdfRenderer();

string dataTableReport = @"
<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <link href='___PROTECTED_URL_132___ rel='stylesheet'>
    <style>
        .table-header {
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            color: white;
            padding: 30px;
            border-radius: 10px 10px 0 0;
        }
        .table-container {
            background: white;
            border-radius: 0 0 10px 10px;
            box-shadow: 0 10px 30px rgba(0,0,0,0.1);
            overflow: hidden;
        }
        .table th {
            background: #f8f9fa;
            font-weight: 600;
            text-transform: uppercase;
            font-size: 0.85rem;
            letter-spacing: 0.5px;
        }
        .status-badge {
            padding: 0.35em 0.65em;
            border-radius: 0.25rem;
            font-weight: 600;
            font-size: 0.75rem;
        }
        .trend-positive { color: #198754; font-weight: 700; }
        .trend-negative { color: #dc3545; font-weight: 700; }
        @media print {
            .table-container { page-break-inside: avoid; }
        }
    </style>
</head>
<body class='bg-light'>
    <div class='container py-5'>
        <div class='table-container'>
            <div class='table-header'>
                <div class='row align-items-center'>
                    <div class='col-md-8'>
                        <h2 class='mb-2'>Sales Performance Report</h2>
                        <p class='mb-0 opacity-75'>Q4 2024 Regional Analysis</p>
                    </div>
                    <div class='col-md-4 text-end'>
                        <div class='btn-group btn-group-sm'>
                            <button class='btn btn-light'>Export</button>
                            <button class='btn btn-light'>Filter</button>
                            <button class='btn btn-light'>Sort</button>
                        </div>
                    </div>
                </div>
            </div>

            <div class='p-4'>
                <div class='row mb-3'>
                    <div class='col-md-4'>
                        <input type='text' class='form-control form-control-sm' placeholder='Search regions...'>
                    </div>
                    <div class='col-md-8 text-end'>
                        <span class='text-muted small'>Showing 1-10 of 48 results</span>
                    </div>
                </div>

                <div class='table-responsive'>
                    <table class='table table-hover align-middle'>
                        <thead>
                            <tr>
                                <th>Region</th>
                                <th>Revenue</th>
                                <th>Units Sold</th>
                                <th>Growth</th>
                                <th>Status</th>
                                <th>Action</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td>
                                    <strong>North America</strong><br>
                                    <small class='text-muted'>USA, Canada, Mexico</small>
                                </td>
                                <td>$4,280,000</td>
                                <td>12,450</td>
                                <td><span class='trend-positive'>↑ 18.5%</span></td>
                                <td><span class='status-badge bg-success text-white'>Exceeding</span></td>
                                <td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
                            </tr>
                            <tr>
                                <td>
                                    <strong>Europe</strong><br>
                                    <small class='text-muted'>EU, UK, Switzerland</small>
                                </td>
                                <td>$3,650,000</td>
                                <td>10,890</td>
                                <td><span class='trend-positive'>↑ 12.3%</span></td>
                                <td><span class='status-badge bg-success text-white'>On Track</span></td>
                                <td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
                            </tr>
                            <tr>
                                <td>
                                    <strong>Asia Pacific</strong><br>
                                    <small class='text-muted'>Japan, Australia, Singapore</small>
                                </td>
                                <td>$2,940,000</td>
                                <td>8,320</td>
                                <td><span class='trend-positive'>↑ 24.7%</span></td>
                                <td><span class='status-badge bg-primary text-white'>Growing</span></td>
                                <td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
                            </tr>
                            <tr>
                                <td>
                                    <strong>Latin America</strong><br>
                                    <small class='text-muted'>Brazil, Argentina, Chile</small>
                                </td>
                                <td>$1,580,000</td>
                                <td>4,670</td>
                                <td><span class='trend-positive'>↑ 8.9%</span></td>
                                <td><span class='status-badge bg-info text-white'>Stable</span></td>
                                <td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
                            </tr>
                            <tr>
                                <td>
                                    <strong>Middle East</strong><br>
                                    <small class='text-muted'>UAE, Saudi Arabia, Israel</small>
                                </td>
                                <td>$980,000</td>
                                <td>2,890</td>
                                <td><span class='trend-negative'>↓ 3.2%</span></td>
                                <td><span class='status-badge bg-warning text-dark'>Review</span></td>
                                <td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
                            </tr>
                        </tbody>
                        <tfoot class='table-light'>
                            <tr>
                                <td><strong>Total</strong></td>
                                <td><strong>$13,430,000</strong></td>
                                <td><strong>39,220</strong></td>
                                <td><strong class='trend-positive'>↑ 14.8%</strong></td>
                                <td colspan='2'></td>
                            </tr>
                        </tfoot>
                    </table>
                </div>

                <div class='d-flex justify-content-between align-items-center mt-4'>
                    <div>
                        <select class='form-select form-select-sm' style='width: auto; display: inline-block;'>
                            <option>10 per page</option>
                            <option>25 per page</option>
                            <option>50 per page</option>
                        </select>
                    </div>
                    <nav>
                        <ul class='pagination pagination-sm mb-0'>
                            <li class='page-item disabled'><a class='page-link' href='#'>Previous</a></li>
                            <li class='page-item active'><a class='page-link' href='#'>1</a></li>
                            <li class='page-item'><a class='page-link' href='#'>2</a></li>
                            <li class='page-item'><a class='page-link' href='#'>3</a></li>
                            <li class='page-item'><a class='page-link' href='#'>Next</a></li>
                        </ul>
                    </nav>
                </div>
            </div>
        </div>

        <div class='row g-3 mt-4'>
            <div class='col-md-3'>
                <div class='card text-center'>
                    <div class='card-body'>
                        <h3 class='text-primary mb-1'>$13.4M</h3>
                        <small class='text-muted'>Total Revenue</small>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center'>
                    <div class='card-body'>
                        <h3 class='text-success mb-1'>39,220</h3>
                        <small class='text-muted'>Units Sold</small>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center'>
                    <div class='card-body'>
                        <h3 class='text-info mb-1'>14.8%</h3>
                        <small class='text-muted'>Growth Rate</small>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center'>
                    <div class='card-body'>
                        <h3 class='text-warning mb-1'>5</h3>
                        <small class='text-muted'>Active Regions</small>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(dataTableReport);
pdf.SaveAs("data-table-report.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

string dataTableReport = @"
<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <link href='___PROTECTED_URL_132___ rel='stylesheet'>
    <style>
        .table-header {
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            color: white;
            padding: 30px;
            border-radius: 10px 10px 0 0;
        }
        .table-container {
            background: white;
            border-radius: 0 0 10px 10px;
            box-shadow: 0 10px 30px rgba(0,0,0,0.1);
            overflow: hidden;
        }
        .table th {
            background: #f8f9fa;
            font-weight: 600;
            text-transform: uppercase;
            font-size: 0.85rem;
            letter-spacing: 0.5px;
        }
        .status-badge {
            padding: 0.35em 0.65em;
            border-radius: 0.25rem;
            font-weight: 600;
            font-size: 0.75rem;
        }
        .trend-positive { color: #198754; font-weight: 700; }
        .trend-negative { color: #dc3545; font-weight: 700; }
        @media print {
            .table-container { page-break-inside: avoid; }
        }
    </style>
</head>
<body class='bg-light'>
    <div class='container py-5'>
        <div class='table-container'>
            <div class='table-header'>
                <div class='row align-items-center'>
                    <div class='col-md-8'>
                        <h2 class='mb-2'>Sales Performance Report</h2>
                        <p class='mb-0 opacity-75'>Q4 2024 Regional Analysis</p>
                    </div>
                    <div class='col-md-4 text-end'>
                        <div class='btn-group btn-group-sm'>
                            <button class='btn btn-light'>Export</button>
                            <button class='btn btn-light'>Filter</button>
                            <button class='btn btn-light'>Sort</button>
                        </div>
                    </div>
                </div>
            </div>

            <div class='p-4'>
                <div class='row mb-3'>
                    <div class='col-md-4'>
                        <input type='text' class='form-control form-control-sm' placeholder='Search regions...'>
                    </div>
                    <div class='col-md-8 text-end'>
                        <span class='text-muted small'>Showing 1-10 of 48 results</span>
                    </div>
                </div>

                <div class='table-responsive'>
                    <table class='table table-hover align-middle'>
                        <thead>
                            <tr>
                                <th>Region</th>
                                <th>Revenue</th>
                                <th>Units Sold</th>
                                <th>Growth</th>
                                <th>Status</th>
                                <th>Action</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td>
                                    <strong>North America</strong><br>
                                    <small class='text-muted'>USA, Canada, Mexico</small>
                                </td>
                                <td>$4,280,000</td>
                                <td>12,450</td>
                                <td><span class='trend-positive'>↑ 18.5%</span></td>
                                <td><span class='status-badge bg-success text-white'>Exceeding</span></td>
                                <td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
                            </tr>
                            <tr>
                                <td>
                                    <strong>Europe</strong><br>
                                    <small class='text-muted'>EU, UK, Switzerland</small>
                                </td>
                                <td>$3,650,000</td>
                                <td>10,890</td>
                                <td><span class='trend-positive'>↑ 12.3%</span></td>
                                <td><span class='status-badge bg-success text-white'>On Track</span></td>
                                <td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
                            </tr>
                            <tr>
                                <td>
                                    <strong>Asia Pacific</strong><br>
                                    <small class='text-muted'>Japan, Australia, Singapore</small>
                                </td>
                                <td>$2,940,000</td>
                                <td>8,320</td>
                                <td><span class='trend-positive'>↑ 24.7%</span></td>
                                <td><span class='status-badge bg-primary text-white'>Growing</span></td>
                                <td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
                            </tr>
                            <tr>
                                <td>
                                    <strong>Latin America</strong><br>
                                    <small class='text-muted'>Brazil, Argentina, Chile</small>
                                </td>
                                <td>$1,580,000</td>
                                <td>4,670</td>
                                <td><span class='trend-positive'>↑ 8.9%</span></td>
                                <td><span class='status-badge bg-info text-white'>Stable</span></td>
                                <td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
                            </tr>
                            <tr>
                                <td>
                                    <strong>Middle East</strong><br>
                                    <small class='text-muted'>UAE, Saudi Arabia, Israel</small>
                                </td>
                                <td>$980,000</td>
                                <td>2,890</td>
                                <td><span class='trend-negative'>↓ 3.2%</span></td>
                                <td><span class='status-badge bg-warning text-dark'>Review</span></td>
                                <td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
                            </tr>
                        </tbody>
                        <tfoot class='table-light'>
                            <tr>
                                <td><strong>Total</strong></td>
                                <td><strong>$13,430,000</strong></td>
                                <td><strong>39,220</strong></td>
                                <td><strong class='trend-positive'>↑ 14.8%</strong></td>
                                <td colspan='2'></td>
                            </tr>
                        </tfoot>
                    </table>
                </div>

                <div class='d-flex justify-content-between align-items-center mt-4'>
                    <div>
                        <select class='form-select form-select-sm' style='width: auto; display: inline-block;'>
                            <option>10 per page</option>
                            <option>25 per page</option>
                            <option>50 per page</option>
                        </select>
                    </div>
                    <nav>
                        <ul class='pagination pagination-sm mb-0'>
                            <li class='page-item disabled'><a class='page-link' href='#'>Previous</a></li>
                            <li class='page-item active'><a class='page-link' href='#'>1</a></li>
                            <li class='page-item'><a class='page-link' href='#'>2</a></li>
                            <li class='page-item'><a class='page-link' href='#'>3</a></li>
                            <li class='page-item'><a class='page-link' href='#'>Next</a></li>
                        </ul>
                    </nav>
                </div>
            </div>
        </div>

        <div class='row g-3 mt-4'>
            <div class='col-md-3'>
                <div class='card text-center'>
                    <div class='card-body'>
                        <h3 class='text-primary mb-1'>$13.4M</h3>
                        <small class='text-muted'>Total Revenue</small>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center'>
                    <div class='card-body'>
                        <h3 class='text-success mb-1'>39,220</h3>
                        <small class='text-muted'>Units Sold</small>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center'>
                    <div class='card-body'>
                        <h3 class='text-info mb-1'>14.8%</h3>
                        <small class='text-muted'>Growth Rate</small>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center'>
                    <div class='card-body'>
                        <h3 class='text-warning mb-1'>5</h3>
                        <small class='text-muted'>Active Regions</small>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(dataTableReport);
pdf.SaveAs("data-table-report.pdf");
Imports IronPdf

Dim renderer = New ChromePdfRenderer()

Dim dataTableReport As String = "
<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <link href='___PROTECTED_URL_132___ rel='stylesheet'>
    <style>
        .table-header {
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            color: white;
            padding: 30px;
            border-radius: 10px 10px 0 0;
        }
        .table-container {
            background: white;
            border-radius: 0 0 10px 10px;
            box-shadow: 0 10px 30px rgba(0,0,0,0.1);
            overflow: hidden;
        }
        .table th {
            background: #f8f9fa;
            font-weight: 600;
            text-transform: uppercase;
            font-size: 0.85rem;
            letter-spacing: 0.5px;
        }
        .status-badge {
            padding: 0.35em 0.65em;
            border-radius: 0.25rem;
            font-weight: 600;
            font-size: 0.75rem;
        }
        .trend-positive { color: #198754; font-weight: 700; }
        .trend-negative { color: #dc3545; font-weight: 700; }
        @media print {
            .table-container { page-break-inside: avoid; }
        }
    </style>
</head>
<body class='bg-light'>
    <div class='container py-5'>
        <div class='table-container'>
            <div class='table-header'>
                <div class='row align-items-center'>
                    <div class='col-md-8'>
                        <h2 class='mb-2'>Sales Performance Report</h2>
                        <p class='mb-0 opacity-75'>Q4 2024 Regional Analysis</p>
                    </div>
                    <div class='col-md-4 text-end'>
                        <div class='btn-group btn-group-sm'>
                            <button class='btn btn-light'>Export</button>
                            <button class='btn btn-light'>Filter</button>
                            <button class='btn btn-light'>Sort</button>
                        </div>
                    </div>
                </div>
            </div>

            <div class='p-4'>
                <div class='row mb-3'>
                    <div class='col-md-4'>
                        <input type='text' class='form-control form-control-sm' placeholder='Search regions...'>
                    </div>
                    <div class='col-md-8 text-end'>
                        <span class='text-muted small'>Showing 1-10 of 48 results</span>
                    </div>
                </div>

                <div class='table-responsive'>
                    <table class='table table-hover align-middle'>
                        <thead>
                            <tr>
                                <th>Region</th>
                                <th>Revenue</th>
                                <th>Units Sold</th>
                                <th>Growth</th>
                                <th>Status</th>
                                <th>Action</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td>
                                    <strong>North America</strong><br>
                                    <small class='text-muted'>USA, Canada, Mexico</small>
                                </td>
                                <td>$4,280,000</td>
                                <td>12,450</td>
                                <td><span class='trend-positive'>↑ 18.5%</span></td>
                                <td><span class='status-badge bg-success text-white'>Exceeding</span></td>
                                <td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
                            </tr>
                            <tr>
                                <td>
                                    <strong>Europe</strong><br>
                                    <small class='text-muted'>EU, UK, Switzerland</small>
                                </td>
                                <td>$3,650,000</td>
                                <td>10,890</td>
                                <td><span class='trend-positive'>↑ 12.3%</span></td>
                                <td><span class='status-badge bg-success text-white'>On Track</span></td>
                                <td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
                            </tr>
                            <tr>
                                <td>
                                    <strong>Asia Pacific</strong><br>
                                    <small class='text-muted'>Japan, Australia, Singapore</small>
                                </td>
                                <td>$2,940,000</td>
                                <td>8,320</td>
                                <td><span class='trend-positive'>↑ 24.7%</span></td>
                                <td><span class='status-badge bg-primary text-white'>Growing</span></td>
                                <td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
                            </tr>
                            <tr>
                                <td>
                                    <strong>Latin America</strong><br>
                                    <small class='text-muted'>Brazil, Argentina, Chile</small>
                                </td>
                                <td>$1,580,000</td>
                                <td>4,670</td>
                                <td><span class='trend-positive'>↑ 8.9%</span></td>
                                <td><span class='status-badge bg-info text-white'>Stable</span></td>
                                <td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
                            </tr>
                            <tr>
                                <td>
                                    <strong>Middle East</strong><br>
                                    <small class='text-muted'>UAE, Saudi Arabia, Israel</small>
                                </td>
                                <td>$980,000</td>
                                <td>2,890</td>
                                <td><span class='trend-negative'>↓ 3.2%</span></td>
                                <td><span class='status-badge bg-warning text-dark'>Review</span></td>
                                <td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
                            </tr>
                        </tbody>
                        <tfoot class='table-light'>
                            <tr>
                                <td><strong>Total</strong></td>
                                <td><strong>$13,430,000</strong></td>
                                <td><strong>39,220</strong></td>
                                <td><strong class='trend-positive'>↑ 14.8%</strong></td>
                                <td colspan='2'></td>
                            </tr>
                        </tfoot>
                    </table>
                </div>

                <div class='d-flex justify-content-between align-items-center mt-4'>
                    <div>
                        <select class='form-select form-select-sm' style='width: auto; display: inline-block;'>
                            <option>10 per page</option>
                            <option>25 per page</option>
                            <option>50 per page</option>
                        </select>
                    </div>
                    <nav>
                        <ul class='pagination pagination-sm mb-0'>
                            <li class='page-item disabled'><a class='page-link' href='#'>Previous</a></li>
                            <li class='page-item active'><a class='page-link' href='#'>1</a></li>
                            <li class='page-item'><a class='page-link' href='#'>2</a></li>
                            <li class='page-item'><a class='page-link' href='#'>3</a></li>
                            <li class='page-item'><a class='page-link' href='#'>Next</a></li>
                        </ul>
                    </nav>
                </div>
            </div>
        </div>

        <div class='row g-3 mt-4'>
            <div class='col-md-3'>
                <div class='card text-center'>
                    <div class='card-body'>
                        <h3 class='text-primary mb-1'>$13.4M</h3>
                        <small class='text-muted'>Total Revenue</small>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center'>
                    <div class='card-body'>
                        <h3 class='text-success mb-1'>39,220</h3>
                        <small class='text-muted'>Units Sold</small>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center'>
                    <div class='card-body'>
                        <h3 class='text-info mb-1'>14.8%</h3>
                        <small class='text-muted'>Growth Rate</small>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center'>
                    <div class='card-body'>
                        <h3 class='text-warning mb-1'>5</h3>
                        <small class='text-muted'>Active Regions</small>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>"

Dim pdf = renderer.RenderHtmlAsPdf(dataTableReport)
pdf.SaveAs("data-table-report.pdf")
$vbLabelText   $csharpLabel

Dieser Code erstellt einen ausgeklügelten Datentabellenbericht mit Verlaufsheadern, responsiven Tabellen, Status-Abzeichen und zusammenfassenden Metriken. Die Chrome-Rendering-Engine von IronPDF erhält das gesamte Bootstrap-Styling, einschließlich Tabellen-Hover-Effekte, Badge-Farben und Paginierungssteuerung – Funktionen, die über die Möglichkeiten herkömmlicher PDF-Viewer hinausgehen. Die Engine unterstützt außerdem JavaScript Rendering für dynamische Inhalte, benutzerdefinierte Schriftarten und UTF-8-Zeichen .

Hauptvorteile gegenüber PrizmDoc Viewer:

Weitere Details zur Bootstrap-PDF-Generierung finden Sie in der vollständigen Rendering-Dokumentation . Entwickler können auch Angular zu PDF-Konvertierung und andere JavaScript-Framework-Unterstützung erkunden.## Wie Vergleichen Sich Lizenzkosten Zwischen IronPDF und PrizmDoc Viewer?

Nach Durchsicht der technischen Struktur und der verfügbaren Funktionen beider Komponenten folgt eine Übersicht der Lizenzpreise. Dies ist von entscheidender Bedeutung, da die Entwickler bestrebt sind, die Anforderungen innerhalb der Budgetvorgaben zu erfüllen.

Welche Lizenzoptionen bietet IronPDF an?

IronPDF-Lizenzen starten bei $999 für einen einzelnen Entwickler. IronPDF bietet flexible Lizenzierungsoptionen, darunter Entwicklungslizenzen, Bereitstellungslizenzen und Erweiterungsoptionen für fortlaufenden Support und Updates.

Für Entwickler bei Unternehmen oder Agenturen, die mehrere Kunden bedienen, bietet IronPDF ein gestuftes Lizenzmodell, das an die Teamgröße und die Anzahl der Projekte angepasst werden kann. IronPDF bietet Lizenz-Upgrade-Optionen, die sich an die sich ändernden Bedürfnisse anpassen.

Alle IronPDF-Lizenzpakete beinhalten 1 Jahr Support und Updates. Lesen Sie mehr über verfügbare Lizenzpakete, Stufen und Preise. Entwickler können Lizenzschlüssel auch auf verschiedene Weise anwenden, unter anderem über Web.config und Umgebungsvariablen.

Was Sind Die Lizenzoptionen Des PrizmDoc Viewers?

Was kostet die selbstgehostete `PrizmDoc` ?

Selbst gehosteter PrizmDoc Server ist unter einer jährlichen Lizenz erhältlich. Kontaktieren Sie Accusoft für aktuelle Preise und verfügbare Pakete für den PrizmDoc Viewer.

Was kostet das cloudbasierte `PrizmDoc` ?

Diese Lizenz deckt die Cloud-basierten Dienste des PrizmDoc Viewers ab, die skalieren, basierend auf der Anzahl der Transaktionen.

Begrifflichkeiten:

Transaction bezieht sich auf das Senden einer Anfrage an den PrizmDoc Viewer-Server und das Empfangen des Ergebnisses (Ergebnisdokument).

Prepaid Buckets bedeutet, einmal zu zahlen und Transaktionen zu erhalten, die nicht ablaufen.

Die Cloud-Preisgestaltung ist nutzungsbasiert und skaliert mit dem Transaktionsvolumen. Kontaktieren Sie Accusoft für aktuelle Cloud-Preis-Leistungs-Verhältnisse.


Tutorial Schnellzugriff

Html To Pdf Icon related to Tutorial Schnellzugriff

Holen Sie sich das C# IronPDF Quickstart Handbook

Ein kostenloser PDF-Ressourcenleitfaden, der die Entwicklung von PDFs for .NET vereinfacht, mit Anleitungen zu gängigen Funktionen und Beispielen zum Manipulieren, Bearbeiten, Generieren und Speichern von PDFs in C# und VB .NET für Projekte.

Leitfaden herunterladen

Erkunden Sie die IronPDF API-Referenz

Erkunden Sie die API-Referenz für die IronPDF C#-Bibliothek, einschließlich Details zu allen Funktionen, Klassen, Methodenfeldern, Namensräumen und Aufzählungen von IronPDF.

Sehen Sie sich die API-Referenz an
Documentation related to Tutorial Schnellzugriff

Hinweis:Accusoft's PrizmDoc Viewer ist ein eingetragenes Warenzeichen seines jeweiligen Eigentümers. Diese Seite ist nicht mit Accusoft's PrizmDoc Viewer verbunden, nicht von ihm unterstützt oder gesponsert. Alle Produktnamen, Logos und Marken sind Eigentum ihrer jeweiligen Eigentümer. Vergleiche dienen nur zu Informationszwecken und spiegeln öffentlich zugängliche Informationen zum Zeitpunkt des Schreibens wider.

Häufig gestellte Fragen

Wie kann ich HTML in PDF in C# konvertieren?

Sie können die RenderHtmlAsPdf-Methode von IronPDF verwenden, um HTML-Strings in PDFs zu konvertieren. Sie können auch HTML-Dateien mit RenderHtmlFileAsPdf in PDFs konvertieren.

Was sind die Vorteile der Verwendung von IronPDF gegenüber PrizmDoc Viewer für die PDF-Konvertierung?

IronPDF bietet eine einfache lokale PDF-Rendierungslösung, die Offline-Arbeit ohne asynchrone Programmierung unterstützt. Im Gegensatz dazu arbeitet PrizmDoc Viewer über eine REST-API, die Internetverbindung für die Interaktion mit einem Remote-Server erfordert.

Kann ich mehrere PDF-Dokumente mit einer PDF-Bibliothek zusammenfügen?

Ja, mit IronPDF können Sie mehrere PDFs mit der MergePdf-Methode zusammenfügen, sodass Sie Dokumente nahtlos kombinieren können.

Wie handhabt IronPDF die Konvertierung von PDF zu Bild?

IronPDF ermöglicht es Ihnen, PDF-Seiten einfach in Bilder zu konvertieren, indem es seine integrierten Methoden verwendet, und bietet einen optimierten Ansatz im Vergleich zu anderer Software.

Was sind die Anpassungsmöglichkeiten für Kopf- und Fußzeilen in IronPDF?

IronPDF bietet umfassende Funktionen, um Kopf- und Fußzeileneigenschaften mit einer einfachen Programmierstruktur festzulegen, wodurch es einfach ist, Ihre Dokumente anzupassen.

Ist IronPDF für die Offline-PDF-Verarbeitung geeignet?

Ja, IronPDF unterstützt die Offline-PDF-Verarbeitung, sodass Sie ohne Internetverbindung arbeiten können, im Gegensatz zu einigen anderen Lösungen, die eine Interaktion mit einem Remote-Server erfordern.

Wie ist die Kostenstruktur für IronPDF-Lizenzen?

IronPDF-Lizenzen beginnen bei $699 für ein einzelnes Projekt mit einem Entwickler, mit skalierbaren Optionen für Unternehmen und SaaS-Dienste, die eine kostengünstige Einmalzahlungslösung bieten.

Kann ich kostenlos mit IronPDF entwickeln?

Ja, IronPDF ist kostenlos für die Entwicklung ohne Zeitlimit und bietet eine 30-tägige Bereitstellungstestphase, um mit Ihrem Projekt live zu gehen.

Wie handhabt PrizmDoc Viewer die HTML zu PDF-Konvertierung?

PrizmDoc Viewer verwendet eine REST-API für die HTML zu PDF-Konvertierung, was eine asynchrone Programmierung und Internetverbindung für die Interaktion mit einem Remote-Server erfordert.

Was sind die Systemanforderungen für das Hosting eines PrizmDoc Servers?

Das Selbsthosting des PrizmDoc Servers erfordert mindestens 32 GB RAM und eine 4-Kern-CPU, um seinen Verarbeitungsanforderungen gerecht zu werden.

Ist IronPDF vollständig mit .NET 10 kompatibel?

Ja. IronPDF unterstützt .NET 10 (sowie .NET 9, 8, 7, 6, .NET Core, .NET Standard und .NET Framework). Die Installation erfolgt über NuGet. IronPDF ist unter Windows, Linux und macOS lauffähig und nutzt seinen nativen, auf Chrome basierenden Renderer für eine pixelgenaue HTML-zu-PDF-Konvertierung in .NET-10-Anwendungen.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen

Iron-Support-Team

Wir sind 24 Stunden am Tag, 5 Tage die Woche online.
Chat
E-Mail
Rufen Sie mich an