Zum Fußzeileninhalt springen
PRODUKTVERGLEICHE

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

IronPDF und Accusoft PDF Viewer konvertieren beide HTML zu PDF in .NET. IronPDF bietet eine einfache Syntax, lokale Verarbeitung ohne Cloud-Abhängigkeiten und unbegrenzte Konvertierungen ab 699 US-Dollar. 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

Überblick

Was ist IronPDF und wie funktioniert es?

IronPDF ist eine C# HTML zu PDF-Bibliothek, die es Entwicklern ermöglicht, PDF-Dateien aus Quellen wie HTML-String, Webseite und URL zu erstellen. Es ermöglicht auch das Setzen von Eigenschaften wie Wasserzeichen, Lesezeichen und Kopfzeile und Fußzeile. Darüber hinaus können Entwickler mehrere PDF-Dateien zusammenführen oder PDF-Seiten in Bilder konvertieren und umgekehrt mit Bild-zu-PDF-Konvertierung.

IronPDF ist kostenlos für die Entwicklung und bietet eine 30-Tage Testversion für Live-Projekte. Es bietet vollständige Dokumentation, Codebeispiele und API-Referenzen, um Entwicklern einen schnellen Einstieg zu ermöglichen.

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 auch verschiedene elektronische Signaturoptionen für 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 in cloudgehosteten Lizenzen.
[Free for development](/get-started/quickstart/) without time limits. Nur 300 Transaktionen mit Testversion.

Lassen Sie uns beide Bibliotheken installieren und den Code vergleichen.


Schritt 1: Installation

Wie installiere ich IronPDF in meinem .NET-Projekt?

Es gibt zwei Möglichkeiten, IronPDF in einem Projekt zu installieren, ohne Unterschiede zwischen den Ansätzen. IronPDF unterstützt verschiedene Umgebungen, einschließlich Azure-Deployment, AWS Lambda, Docker-Container und Blazor-Anwendungen.

Was sind die verschiedenen Möglichkeiten, IronPDF herunterzuladen?

Laden Sie IronPDF.dll herunter und fügen Sie die Referenz zum Projekt hinzu. Entwickler können auch den Windows-Installer für die systemweite Installation verwenden. Danach wird der Namespace IronPdf zugänglich durch:

using IronPdf;
using IronPdf;
$vbLabelText   $csharpLabel

Jetzt können Entwickler leicht auf die bereitgestellten Funktionen und Klassen von IronPDF zugreifen, einschließlich des ChromePdfRenderer zur Darstellung, PDF-Dokumentenbearbeitung und Sicherheitsfunktionen.

Wie installiere ich IronPDF über den NuGet-Paket-Manager?

  • Paketmanager-Konsole:

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

___CODEBLOCK_1___
  • Pakete für die Lösung verwalten:

Wenn Sie die NuGet Package Manager GUI verwenden, suchen Sie nach IronPDF in der Suchleiste und installieren Sie es. Für erweiterte Installationsoptionen, einschließlich plattformspezifischer Pakete für Linux, macOS oder Windows, konsultieren Sie den Installationsleitfaden.


How Do I Install PrizmDoc Viewer from Accusoft?

PrizmDoc Viewer hat zwei Teile: die serverseitige Komponente namens PrizmDoc Server, die als RESTful API fungiert, und das Client-Projekt, das Anfragen an die API sendet und Antworten erhält. Anders als IronPDF, das lokal ohne externe Abhängigkeiten arbeitet, erfordert PrizmDoc Netzwerkverbindung für cloudbasierte Operationen.

How Can I Access the PrizmDoc Server?

PrizmDoc Server ist eine serverseitige Anwendung, die Basisinformationen mit Dokumenten als Anfragen (Eingabe) erhält und Dokumente in PDF-Dateien konvertiert und die konvertierten PDF-Dateien dann als Antworten (Ausgabe) zurücksendet. Es dient als technisches Herzstück des Produkts—eine Dokumentverarbeitungs- und Konvertierungs-Engine. Entwickler können es über zwei verschiedene Methoden verwenden, die beide denselben Programmieraufbau und dieselben Techniken haben:

  1. Selbst-gehostet:

    Diese Option erfordert das Einrichten eines Servers. Laden Sie den PrizmDoc Server herunter und installieren Sie ihn anschließend. Mehr erfahren darüber, wie Sie den PrizmDoc Server auf Windows installieren.

    Hinweis: Es erfordert mindestens 32 GB RAM und 4-Core-CPU für verbesserte Leistung. Im Gegensatz dazu sind die Systemanforderungen von IronPDF viel bescheidener.

  2. Cloud-gehostet:

    Dieser Cloud-basierte Service beseitigt die Notwendigkeit, einen Server zu arrangieren. Um diese Option zu verwenden, erstellen Sie ein Konto und kopieren Sie den API key aus dem API Key Menü auf der Startseite.

Zuerst prüfen wir die Grundstruktur, um mit dem PrizmDoc Viewer zu arbeiten, um Dokumente in PDF-Dateien zu konvertieren, indem wir direkt mit Accusoft server unter Verwendung von WebClient() in einer C# Konsolenanwendung interagieren.

Hinweis: Das folgende Beispiel zeigt, wie PrizmDoc PDF-Dateien konzeptionell behandelt. Es ist langwierig, Sie können dieses Beispiel überspringen und direkt zur Vergleichsübersicht gehen.

Wie funktioniert die Arbeitsstruktur von Accusoft?

Dieses Beispiel konvertiert myWebpage.html in sample.pdf. Anders als IronPDFs einfache HTML-zu-PDF-Konvertierung, erfordert PrizmDoc mehrere API-Aufrufe.

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

Zuerst fügen Sie die folgenden Bibliotheken dem 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 dann eine öffentliche Variable Accusoft API Key und fügen Sie den API-Schlüssel ein:

static string ApiKey = "Your-API-KEY";
static string ApiKey = "Your-API-KEY";
$vbLabelText   $csharpLabel

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

  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.

Eine separate Funktion behandelt jeden Schritt:

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 erheblichen Aufwand. Um die Arbeitsbelastung zu minimieren, führte Accusoft eine .NET-Bibliothek namens Accusoft.PrizmDocServerSDK ein, eine Wrapper um die PrizmDoc Server REST API. Lassen Sie uns untersuchen, wie man diese Bibliothek in .NET-Projekten installiert und verwendet.

How Do I Install Accusoft.PrizmDocServerSDK?

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

  • Paketmanager-Konsole:

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

___CODEBLOCK_10___
  • Pakete für die Lösung verwalten:

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

Nun können Entwickler leicht auf den Accusoft.PrizmDocServer Namespace zugreifen und ihn verwenden:

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

Anleitungs-Tutorials

Wie vergleichen sich IronPDF und PrizmDoc Viewer in Code-Beispielen?

Nach der Überprüfung der Einführung und Installation beider Komponenten ist es an der Zeit, mit beiden zu arbeiten. Die folgenden Anwendungsfälle demonstrieren die Implementierung mit beiden Komponenten, um die Programmierstrukturen zu verstehen und zu bestimmen, welche am besten den Projektanforderungen entspricht.


Wie konvertiere ich HTML in PDF mit IronPDF vs PrizmDoc Viewer?

Für diesen Vergleich konvertieren wir eine Webseite namens myWebPage.html in eine PDF-Datei und speichern sie am Zielort. IronPDFs Chrome-Rendering-Engine 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 bin>debug Ordner des Projekts. IronPDF unterstützt auch HTML-Strings, URLs und sogar ZIP-Dateien mit HTML als Eingabequelle.

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

Lesen Sie mehr über die Arbeit mit IronPDF, um mit PDF-Dateien umzugehen.

Nun führen wir dieselbe Aufgabe mit PrizmDoc Viewer aus, um den Vergleich zu überprüfen.

Wie konvertiert PrizmDoc Viewer HTML in PDF?

Im Abschnitt zur Installation des PrizmDoc Viewers wurde über das Erhalten des Accusoft API Key gesprochen. Hier ist, wie es verwendet wird.

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 auch asynchrone Methoden für verbesserte Leistung.

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 einen einfacheren Ansatz zur Erstellung von PDF-Dateien bietet und weniger Zeit benötigt. IronPDF bietet auch Rendering-Optionen zur Feinabstimmung der Ausgabe, einschließlich benutzerdefinierter Papiergrößen, Ränder und Viewport-Einstellungen.


Wie konvertiere ich Bilder in PDF mit IronPDF vs PrizmDoc Viewer?

Dieser Vergleich zeigt, wie man eine PDF-Datei aus einem Bild erstellt, das sich im debug Ordner des Projekts befindet. 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 auch mehrseitige TIFF-Konvertierung, Einbettung von Bildern aus Azure Blob Storage und Base64-Bildeinbettung.

Ausgabe:

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

PDF-Dokument zeigt das Google-Logo zentriert auf einem weißen Hintergrund und demonstriert IronPDFs Bild-zu-PDF-Konvertierungsfähigkeit

Eine PDF-Datei aus einem Bild mit IronPDF zu erstellen ist unkompliziert. Nun führen wir dieselbe Aufgabe mit PrizmDoc Viewer aus und prüfen die erstellte 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 vom obigen Code:

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

Welche Bibliothek erfordert 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 bietet auch automatisch ein nutzbares vollseitiges Dokument. IronPDF bietet zusätzliche Optionen für Bildplatzierung und mehrere Bildkonvertierungen.


Wie füge ich mehrere PDF-Dateien mit IronPDF vs PrizmDoc Viewer zusammen?

Für diesen Vergleich gehen wir von drei vorhandenen PDF-Dateien namens A.pdf, B.pdf und C.pdf aus. Die Aufgabe besteht darin, sie in eine PDF-Datei zusammenzuführen. Beide Komponenten können diese Aufgabe durchführen. Zuerst zeigt das Beispiel, wie dies mit IronPDF durchgeführt wird.

Wie führt IronPDF PDF-Dateien zusammen?

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 erstellt eine sample.pdf Datei, die A.pdf, B.pdf und C.pdf kombiniert. IronPDF unterstützt auch das Hinzufügen und Kopieren von Seiten zwischen PDFs und das Aufteilen von PDFs.

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

Wie führt 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");
}
$vbLabelText   $csharpLabel

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


Wie füge ich Kopf- und Fußzeilen mit IronPDF vs PrizmDoc Viewer hinzu?

Für diesen Vergleich gehen wir von einem einfachen WebPage namens 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

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

  • 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

Lassen Sie uns zuerst untersuchen, wie IronPDF mit Kopf- und Fußzeilen umgeht.

Wie geht IronPDF mit PDF-Kopf- und Fußzeilen um?

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

  • Für Kopfzeile:

    _CODEBLOCK19

  • Für Fußzeile:

    _CODEBLOCK20

Die folgenden Eigenschaften können beim Initialisieren von TextHeaderFooter() festgelegt werden:

  • CenterText um Text in der Mitte der Kopf- oder Fußzeile zu drucken
  • LeftText um Text auf der linken Seite der Kopf- oder Fußzeile zu drucken
  • RightText um Text auf der rechten Seite der Kopf- oder Fußzeile zu drucken
  • DrawDividerLine zieht eine Linie, die den Seiteninhalt von der Kopf- oder Fußzeile trennt
  • FontFamily um die Schriftfamilie der Kopf- oder Fußzeile anzugeben
  • FontSize um die Schriftgröße der Kopf- oder Fußzeile anzugeben
  • Abstand passt den Abstand zwischen Seiteninhalt und Kopf- oder Fußzeile an

Die folgenden vordefinierten Attribute helfen, den Inhalt der Kopf- oder Fußzeile festzulegen. Sie werden in geschweiften Klammern { } geschrieben:

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

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

Das Beispiel zeigt das folgende Beispiel zur Implementierung des Anwendungsfalls und um zu demonstrieren, wie man die oben genannten Eigenschaften verwendet:

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 'Seitentitel' und Datum/Uhrzeit zeigt, und die Fähigkeiten von IronPDF mit Kopf- und Fußzeilen demonstriert

Die Arbeit mit Kopf- und Fußzeilen unter Verwendung von IronPDF erfordert intuitive Sprache während der Erstellung von PDF-Dateien. Nun zeigt das Beispiel, wie PrizmDoc Viewer mit Kopf- und Fußzeilen umgeht.

Wie geht PrizmDoc Viewer mit PDF-Kopf- und Fußzeilen um?

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

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

Lesen Sie mehr über das Einrichten von Kopf- und Fußzeilen von PDF-Seiten unter Verwendung des PrizmDoc Servers.

Das Beispiel zeigt, wie man den Anwendungsfall mit den oben genannten Eigenschaften implementiert:

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:

Der Screenshot der neu erstellten PDF-Datei durch den 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, um die Kopf- und Fußzeileneigenschaften mit einer einfacheren Programmierstruktur im Vergleich zu PrizmDoc Viewer einzustellen. Die von IronPDF generierte PDF-Datei ist auch lesbarer und attraktiver als die von PrizmDoc Viewer generierte Datei. IronPDF unterstützt auch Seitenzahlen und Seitenumbrüche für verbesserte Dokumentsteuerung.


Wie konvertiere ich PDF-Seiten in Bilder mit IronPDF vs PrizmDoc Viewer?

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

Seite1 Seite2
PDF-Anzeige zeigt Seite 1 eines Beispiel-PDF mit Lorem-Ipsum-Text und Standard-Anzeigesteuerungen
PDF-Anzeige zeigt Seite 2 eines Beispiel-PDF mit Lorem-Ipsum-Text und Navigationssteuerungen

Die Aufgabe besteht darin, ein Bild jeder Seite zu erstellen. Zuerst wird das Beispiel sehen, wie dies unter Verwendung von IronPDF durchgeführt wird.

Wie konvertiert IronPDF PDF-Seiten in Bilder?

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 auch das Speichern von Bildern in Memory Stream und verschiedene Bildformate einschließlich JPEG, TIFF und mehr.

Ausgabe:

Der obige Code erstellt die folgenden zwei .png Bilder:

Seite1 Bild Seite2 Bild
PNG-Bild, das aus PDF-Seite 1 generiert wurde und den virtuellen Mechanik-Tutorial-Inhalt mit klarer Textrendering zeigt
PNG-Bild, das aus PDF-Seite 2 generiert wurde und fortgesetzten Textinhalt mit der Rasterisierungsqualität von IronPDF zeigt

Die Erstellung von Bildern aus PDF-Seiten unter Verwendung von IronPDF ist unkompliziert. Nun führen wir dieselbe Aufgabe mit PrizmDoc Viewer aus.

Wie konvertiert PrizmDoc Viewer PDF-Seiten in Bilder?

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 erstellt ebenfalls die folgenden zwei .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 macht die PDF-zu-Bild-Konvertierung einfacher?

Verglichen mit PrizmDoc Viewer ermöglicht IronPDF Entwicklern, leicht Bilder jeder Seite mit minimalen Codezeilen zu erstellen, selbst ohne durch die Seiten zu iterieren.


Kann ich Bootstrap 5 Data Tables mit IronPDF verwenden?

IronPDFs Chrome V8 Rendering Engine bietet exzellente Unterstützung für Bootstrap 5 Daten-Tabellen, wodurch Entwickler professionelle PDF-Berichte mit komplexen Tabellenlayouts erzeugen können. Dieses Beispiel demonstriert Farbverlaufsüberschriften, Statusabzeichen, Pagination-Kontrollen und Zusammenfassungsmetriken - Funktionen, die den Vorteil von IronPDF gegenüber traditionellen PDF-Viewern wie PrizmDoc hervorheben. IronPDF unterstützt vollständig moderne CSS-Funktionen, einschließlich Flexbox-Layouts, Verläufe und responsive Designs.

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. IronPDFs Chrome-Rendering-Engine erhält alle Bootstrap-Stilvorlagen, einschließlich Tabelleneffekt bei Hover, Abzeichenfarben und Paginierungssteuerungen - Fähigkeiten, die über traditionelle PDF-Viewer hinausgehen. Die Engine unterstützt auch JavaScript-Rendering für dynamische Inhalte, benutzerdefinierte Schriftarten und UTF-8 internationale Zeichen.

Wichtige Vorteile gegenüber PrizmDoc Viewer:

Für weitere Details zur Bootstrap-PDF-Generierung sehen Sie sich die vollständige Rendering-Dokumentation an. Entwickler können auch die Angular-zu-PDF-Konvertierung und andere JavaScript-Framework-Unterstützungen erkunden.## Wie vergleichen sich die Lizenzkosten zwischen IronPDF und PrizmDoc Viewer?

Nach Überprüfung der technischen Struktur und der verfügbaren Funktionen beider Komponenten werden die folgenden Lizenzpreisinformationen aufgeführt. Dies ist entscheidend, da Entwickler die Anforderungen innerhalb der Budgetbeschränkungen erfüllen möchten.

Welche Lizenzoptionen bietet IronPDF?

IronPDF-Lizenzen beginnen bei $699 für ein einzelnes Projekt mit einem Entwickler. IronPDF bietet flexible Lizenzoptionen, einschließlich Entwicklungslizenzen, Bereitstellungslizenzen und Erweiterungsoptionen für kontinuierliche Unterstützung und Updates.

Für Entwickler bei Unternehmen oder Agenturen, die mehrere Kunden betreuen, beginnen Lizenzen ebenfalls bei $699 und können je nach Teamgröße und Projektanzahl angepasst werden. IronPDF bietet Lizenzupgrade-Pfade, wenn sich Bedürfnisse weiterentwickeln.

Die folgenden Lizenzen erfordern eine Einmalzahlung:

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 Lizenzen ab $1199
  • Für SaaS-Dienstleistungen beginnen Lizenzen ab $1099
  • Für gebührenfreie OEM-Weiterverbreitung beginnen Lizenzen ab $1599

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

Lesen Sie mehr über alle verfügbaren Lizenzpakete von IronPDF. Entwickler können auch Lizenzschlüssel anwenden auf verschiedene Weisen, einschließlich Web.config und Umgebungsvariablen.

Was Sind die Lizenzoptionen von PrizmDoc Viewer?

What Is the Cost of Self-Hosted PrizmDoc?

Für selbstverwaltete Server beträgt der Lizenzpreis $7,900 jährlich mit Standardsupport.

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

How Much Does Cloud-Based PrizmDoc Cost?

Diese Lizenz deckt die cloudbasierten Dienste des PrizmDoc Viewer ab, skaliert basierend auf der Anzahl der Transaktionen.

Terminologie:

Transaction bezieht sich darauf, eine Anfrage an den PrizmDoc Viewer-Server zu senden und die Ausgabe (resultierendes Dokument) zu erhalten.

Prepaid-Eimer bedeutet, einmal zu zahlen und Transaktionen zu erhalten, 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 for .NET vereinfacht, mit Anleitungen zu gängigen Funktionen und Beispielen zum Manipulieren, Bearbeiten, Erzeugen 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, inklusive Details zu allen Funktionen von IronPDF, Klassen, Methodenfeldern, Namespaces und Enums.

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

Hinweis:Accusofts PrizmDoc Viewer ist ein eingetragenes Warenzeichen seines jeweiligen Eigentümers. Diese Seite ist nicht verbunden mit, autorisiert durch oder gesponsert von Accusofts PrizmDoc Viewer. 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

We're online 24 hours, 5 days a week.
Chat
Email
Call Me