Zum Fußzeileninhalt springen
PRODUKTVERGLEICHE

IronPDF vs. Accusoft PDF Viewer: Welche C#-Bibliothek eignet sich am besten für die HTML-Konvertierung in PDF?

IronPDF und Accusoft PDF Viewer konvertieren beide HTML in PDF in .NET. IronPDF bietet eine unkomplizierte Syntax, lokale Verarbeitung ohne Cloud-Abhängigkeiten und unbegrenzte Konvertierungen ab 699 US-Dollar. Im Gegensatz dazu benötigt Accusoft eine Internetverbindung und berechnet Gebühren 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

Ü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.

Developers can download a file project from this link.

What Is Accusoft `PrizmDoc` Viewer and How Does It Work?

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.

How Do IronPDF and `PrizmDoc` Viewer Compare?

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/). Must use Asynchronous Programming with `System.Threading.Tasks`.
Works offline once [installed](/get-started/installation-overview/). Requires internet connection for `PrizmDoc` server requests.
Provides many [predefined functions](/features/). Bietet einige vordefinierte Funktionen.
Often requires [minimal lines of code](/tutorials/html-to-pdf/). Erfordert oft viele Codezeilen.
[Unbegrenzt conversions](/licensing/) per project in each license. Begrenzte Transaktionen bei Cloud-basierten Lizenzen.
[Free for development](/get-started/quickstart/) without time limits. Nur 300 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 IronPDF.dll herunter und fügen Sie den entsprechenden Verweis zum Projekt hinzu. Entwickler können den Windows Installer auch für eine systemweite Installation verwenden. Anschließend ist der Namespace IronPdf über folgende Wege zugänglich:

using IronPdf;
using IronPdf;
$vbLabelText   $csharpLabel

Entwickler können nun problemlos auf die bereitgestellten Funktionen und Klassen von IronPDF zugreifen, darunter der ChromePdfRenderer für das Rendern, die PDF-Dokumentmanipulation und die Sicherheitsfunktionen .

Wie installiere ich IronPDF über den NuGet-Paketmanager?


How Do I Install `PrizmDoc` Viewer from Accusoft?

PrizmDoc Viewer besteht aus zwei Teilen: der serverseitigen Komponente namens PrizmDoc Server , die sich wie eine RESTful-API verhält, und dem Client-Projekt, das Anfragen an die API sendet und Antworten empfängt. Im Gegensatz zu IronPDF, das lokal ohne externe Abhängigkeiten funktioniert, benötigt PrizmDoc eine Netzwerkverbindung für cloudbasierte Operationen.

How Can I Access the `PrizmDoc` Server?

PrizmDoc Server ist eine serverseitige Anwendung, die grundlegende Informationen in Form von Dokumenten als Anfragen (Eingabe) empfängt, diese in PDF-Dateien umwandelt und die umgewandelten PDF-Dateien anschließend als Antworten (Ausgabe) 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. Lesen Sie mehr darüber, wie Sie PrizmDoc Server unter Windows installieren.

    Hinweis: Für eine optimale Leistung werden mindestens 32 GB RAM und ein 4-Kern-Prozessor benötigt. 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 Menü API Key auf der Startseite.

Zunächst wollen wir uns die grundlegende Struktur für die Arbeit mit PrizmDoc Viewer ansehen, um Dokumente in PDF-Dateien zu konvertieren, indem wir in einer C#-Konsolenanwendung direkt mit Accusoft server über WebClient() interagieren.

Hinweis: Das folgende Beispiel veranschaulicht, wie PrizmDoc PDF-Dateien konzeptionell verarbeitet. 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 in sample.pdf . Im Gegensatz zu IronPDF, das HTML unkompliziert in PDF konvertiert , erfordert PrizmDoc mehrere API-Aufrufe.

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

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
$vbLabelText   $csharpLabel

Erstellen Sie anschließend 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";
$vbLabelText   $csharpLabel

Die Bearbeitung von PDF-Dateien mit PrizmDoc Viewer umfasst 3 Schritte:

  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();
}
$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);
        }
    }
}
$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);
    }
}
$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);
    }
}
$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);
        }
    }
}
$vbLabelText   $csharpLabel

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

How Do I Install 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:

    _CODEBLOCK_10 _

  • Pakete für die Lösung verwalten:

    Wenn Sie die grafische Benutzeroberfläche des NuGet-Paketmanagers verwenden, suchen Sie in der Suchleiste nach Accusoft.PrizmDocServerSDK und installieren Sie es.

Entwickler können nun problemlos auf den Namespace Accusoft.PrizmDocServer zugreifen und ihn verwenden:

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

Anleitungs-Tutorials

Wie schneiden IronPDF und PrizmDoc Viewer in Codebeispielen im Vergleich ab?

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 veranschaulichen die Implementierung unter Verwendung beider Komponenten, um die Programmierstrukturen besser zu verstehen und festzustellen, welche Komponente am besten zu den Projektanforderungen passt.


Wie konvertiere ich HTML in PDF mit IronPDF im Vergleich zu PrizmDoc Viewer?

Zum 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");
}
$vbLabelText   $csharpLabel

Der obige Code erstellt eine sample.pdf Datei und speichert sie im Ordner bin&gt;debug 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 angeben, etwa so: PDF.SaveAs(&quot;E:/sample.pdf&quot;); oder für Cloud-Bereitstellungen in einen Speicherstream speichern.

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

Nun führen wir dieselbe Aufgabe zum Vergleich mit PrizmDoc Viewer durch.

Wie konvertiert PrizmDoc Viewer HTML in PDF?

Im Abschnitt zur Installation PrizmDoc Viewers wurde die Beschaffung des Accusoft API Key besprochen. So wird es verwendet.

Zuerst senden Sie eine Anfrage an den PrizmDoc -Server und erhalten 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-Diensten von PrizmDoc Viewer 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");
}
$vbLabelText   $csharpLabel

Lesen Sie mehr über die Arbeit mit 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 in PDF mit IronPDF im Vergleich zu PrizmDoc Viewer?

Dieser Vergleich zeigt, wie man aus einem Bild , das sich im debug Ordner des Projekts befindet, 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");
}
$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 die mit dem obigen Code erstellt wurde:

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. Nun führen wir dieselbe Aufgabe mit PrizmDoc Viewer durch und untersuchen die generierte PDF-Datei.

Wie konvertiert PrizmDoc Viewer Bilder in 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");
}
$vbLabelText   $csharpLabel

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

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 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 kann ich mehrere PDF-Dateien mit IronPDF im Vergleich zu PrizmDoc Viewer zusammenführen?

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();
    }
}
$vbLabelText   $csharpLabel

Der obige Code erzeugt 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 .

Nun führen wir dieselbe Aufgabe mit PrizmDoc Viewer durch.

Wie funktioniert das Zusammenführen von PDF-Dateien PrizmDoc Viewer?

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");
}
$vbLabelText   $csharpLabel

Der obige Code erzeugt außerdem eine sample.pdf Datei, die die Dateien A.pdf , B.pdf und C.pdf kombiniert.


Wie füge ich Kopf- und Fußzeilen zu PDFs hinzu, wenn ich IronPDF anstelle von PrizmDoc Viewer verwende?

Für diesen Vergleich gehen wir davon aus, dass eine einfache WebPage namens myWebPage.html mit folgendem HTML- und CSS-Code existiert:

<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, diese WebPage in eine PDF-Datei mit den folgenden Kopf- und Fußzeileneigenschaften zu konvertieren:

  • Page Title links neben der Kopfzeile
  • DatumUhrzeit 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?

Zur Bearbeitung von Kopf- und Fußzeilen von PDF-Dateien bietet IronPDF eine Eigenschaft namens RenderingOptions in der Klasse ChromePdfRenderer an, die wie folgt verwendet werden kann:

  • Für Kopfzeile:

    _CODEBLOCK_19 _

  • Für Fußzeile:

    _CODEBLOCK_20 _

Beim Initialisieren TextHeaderFooter() können folgende Eigenschaften festgelegt werden:

  • CenterText zum Zentrieren des Texts in 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 Schriftart für 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 geschweiften 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");
}
$vbLabelText   $csharpLabel

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

PDF-Dokument mit benutzerdefinierter Kopfzeile, die

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

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

PrizmDoc Viewer stellt die Klasse HeaderFooterOptions zur Verfügung, um Kopf- und Fußzeilen mit den folgenden Eigenschaften zu verwalten:

  • 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ßzeile. 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 Schriftart 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 Festlegen von Kopf- und Fußzeilen von PDF-Seiten mithilfe des PrizmDoc -Servers.

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");
}
$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 im Vergleich zu PrizmDoc Viewer mehr Funktionen zum Festlegen von Kopf- und Fußzeileneigenschaften mit einer einfachen Programmierstruktur. Die von IronPDF erstellte PDF-Datei ist zudem besser lesbar und ansprechender als die PrizmDoc Viewer erzeugte Datei. IronPDF unterstützt außerdem Seitenzahlen und Seitenumbrüche für eine verbesserte Dokumentenverwaltung.


## Wie konvertiere ich PDF-Seiten in Bilder mit IronPDF im Vergleich zu PrizmDoc Viewer?

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

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");
}
$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 erzeugt die folgenden zwei .png Bilder:

Seite1 Bild Seite2 Bild
PNG-Bild, generiert aus Seite 1 der PDF-Datei, zeigt Inhalte des Tutorials
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. Nun führen wir dieselbe Aufgabe mit PrizmDoc Viewer durch.

Wie wandelt PrizmDoc Viewer PDF-Seiten in Bilder um?

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");
    }
}
$vbLabelText   $csharpLabel

Ausgabe:

Der obige Code erzeugt außerdem die folgenden beiden .png Bilder:

Seite1 Seite2
PNG image generated from PDF page 1 using `PrizmDoc`'s conversion service with sample text content
PNG image generated from PDF page 2 showing `PrizmDoc`'s image conversion output quality

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

Im Vergleich zu PrizmDoc Viewer ermöglicht IronPDF Entwicklern, auf einfache Weise Bilder jeder Seite mit minimalem Codeaufwand zu erstellen, sogar ohne die Seiten durchlaufen zu müssen.


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, professionelle PDF-Berichte mit komplexen Tabellenlayouts zu erstellen. Dieses Beispiel demonstriert Farbverlaufsüberschriften, Statusanzeigen, Seitennavigationssteuerung und zusammenfassende Metriken – Funktionen, die den Vorteil von IronPDF gegenüber herkömmlichen 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");
$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 .

Wichtigste Vorteile gegenüber PrizmDoc Viewer:

Weitere Details zur Bootstrap-PDF-Generierung finden Sie in der vollständigen Rendering-Dokumentation . Entwickler können auch die Konvertierung von Angular zu PDF und die Unterstützung anderer JavaScript-Frameworks erkunden. ## Wie vergleichen sich die 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 sind ab $699 für ein einzelnes Projekt mit einem Entwickler erhältlich. IronPDF bietet flexible Lizenzierungsoptionen, darunter Entwicklungslizenzen, Bereitstellungslizenzen und Erweiterungsoptionen für fortlaufenden Support und Updates.

Für Entwickler in Unternehmen oder Agenturen, die mehrere Kunden betreuen, beginnen die Lizenzen ebenfalls bei 699 US-Dollar und können je nach Teamgröße und Projektanzahl angepasst werden. IronPDF bietet Lizenz-Upgrade-Optionen, die sich an die sich ändernden Bedürfnisse anpassen.

Für die folgenden Lizenzen ist eine einmalige Zahlung erforderlich:

Anzahl von Entwicklern Preis
1-5 $699
6-10 $799
11-20 $899
21-50 $1,199
Unbegrenzt $1,199
  • Für Unternehmen mit mehreren Standorten beginnen die Lizenzpreise bei 1199 US-Dollar.
  • Für SaaS-Dienste beginnen die Lizenzen bei 1099 US-Dollar.
  • Für die lizenzgebührenfreie OEM-Weiterverbreitung beginnen die Lizenzen bei 1599 US-Dollar.

Hinweis: Alle oben genannten Lizenzpakete beinhalten 1 Jahr Support und Updates .

Lesen Sie mehr über alle verfügbaren Lizenzpakete von IronPDF. Entwickler können Lizenzschlüssel auch auf verschiedene Weise anwenden, unter anderem über Web.config und Umgebungsvariablen.

Welche Lizenzoptionen bietet PrizmDoc Viewer an?

What Is the Cost of Self-Hosted `PrizmDoc`?

Für selbstverwaltete Server beträgt der Lizenzpreis 7.900 US-Dollar pro Jahr inklusive Standardsupport.

Lesen Sie mehr über alle verfügbaren Pakete für PrizmDoc Viewer.

How Much Does Cloud-Based `PrizmDoc` Cost?

Diese Lizenz deckt die Cloud-basierten Dienste von PrizmDoc Viewer ab, skaliert nach der Anzahl der Transaktionen.

Terminologie:

Transaction bezeichnet das Senden einer Anfrage an den PrizmDoc Viewer-Server und den Empfang der Ausgabe (des resultierenden Dokuments).

Prepaid-Eimer bedeuten, dass man einmal zahlt und Transaktionen erhält, die nicht verfallen.

Anzahl der Transaktionen Prepaid-Eimer Monatlich Jährlich
200 $18
1.000 $89
2.000 $119
6.000 $254 $169 1.859 $ (6.000 Transaktionen/Monat)
12.000 $434 $289 3.179 $ (12.000 Transaktionen/Monat)
25.000 $699 $499 5.459 $ (25.000 Transaktionen/Monat)
50.000 $1,199 $799 8.789 $ (50.000 Transaktionen/Monat)
100.000 $1,199 $1,199 10.989 $ (100.000 Transaktionen/Monat)
200.000 $2,549 $1,699 19.188 $ (200.000 Transaktionen/Monat)
300.000 $3,299 $2,199 25.188 $ (300.000 Transaktionen/Monat)
400.000 $4,049 $2,699 $31.188 (400.000 Transaktionen/Monat)
500.000 $4,799 $3,199 $37.188 (500.000 Transaktionen/Monat)

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 für .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 eine eingetragene Marke des jeweiligen Inhabers. Diese Website steht in keiner Verbindung zu Accusofts PrizmDoc Viewer, wird weder von diesem unterstützt noch gesponsert. Alle Produktnamen, Logos und Marken sind Eigentum ihrer jeweiligen Eigentümer. Die Vergleiche dienen nur zu Informationszwecken und spiegeln öffentlich verfügbare 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