IronPDF vs Accusoft PDF Viewer: Która biblioteka C# jest najlepsza do HTML do PDF?
Zarówno IronPDF, jak i Accusoft PDF Viewer konwertują HTML na PDF w środowisku .NET. IronPDF oferuje prostą składnię, lokalne przetwarzanie bez zależności od chmury oraz nieograniczoną liczbę konwersji już od 699 USD. Natomiast Accusoft wymaga połączenia z Internetem i pobiera opłaty za każdą transakcję.
Przegląd
Czym jest IronPDF i jak działa?
IronPDF to biblioteka C# do konwersji HTML na PDF, która umożliwia programistom tworzenie plików PDF ze źródeł takich jak ciąg znaków HTML, strona internetowa i adres URL. Umożliwia również ustawianie właściwości, takich jak znak wodny, zakładka oraz nagłówek i stopka. Ponadto programiści mogą łączyć wiele plików PDF w jeden lub konwertować strony PDF na obrazy i odwrotnie, korzystając z funkcji konwersji obrazów do formatu PDF.
IronPDF jest bezpłatny do celów programistycznych i oferuje 30-dniowy okres próbny wdrożenia w rzeczywistych projektach. Zawiera kompletną dokumentację, przykłady kodu i Dokumentację API, aby pomóc programistom w szybkim rozpoczęciu pracy.
Deweloperzy mogą pobrać przykładowy projekt z tego linku.
Czym jest Accusoft `PrizmDoc` Viewer i jak działa?
PrizmDoc Viewer to interfejs API REST, który obsługuje pliki PDF i zdalnie konwertuje je na inne formaty. PrizmDoc może konwertować ponad 100 różnych formatów plików do PDF i PDF do PNG, JPG, TIFF i SVG. Oferuje również różne opcje podpisu elektronicznego dla aplikacji.
Jak IronPDF i `PrizmDoc` Viewer wypadają w porównaniu?
| IronPDF | `PrizmDoc` Viewer |
|---|---|
| Work with [PDF files programmatically](/how-to/csharp-parse-pdf/). | Praca z plikami PDF za pomocą kodu. |
| Supports [.NET Core](/docs/) with [Windows](/get-started/windows/), [Mac](/get-started/macos/), or [Linux](/get-started/linux/). | Obsługuje .NET Core na systemach Windows, Mac lub 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/). | Zapewnia kilka predefiniowanych funkcji. |
| Often requires [minimal lines of code](/tutorials/html-to-pdf/). | Często wymaga wielu wierszy kodu. |
| [Nieograniczona liczba konwersji](/licensing/) na projekt w każdej licencji. | Ograniczona liczba transakcji w licencjach hostowanych w chmurze. |
| [Free for development](/get-started/quickstart/) without time limits. | Tylko 300 transakcji w ramach wersji próbnej. |
Zainstalujmy obie biblioteki i porównajmy kod.
Krok 1: Instalacja
Jak zainstalować IronPDF w moim projekcie .NET?
Istnieją dwa sposoby instalacji IronPDF w projekcie, przy czym nie ma różnicy między tymi metodami. IronPDF obsługuje różne środowiska, w tym wdrożenia w Azure, AWS Lambda, kontenery Docker oraz aplikacje Blazor.
Jakie są różne sposoby pobrania IronPDF?
Pobierz plik IronPDF.dll i dodaj do niego odwołanie w projekcie. Programiści mogą również użyć instalatora Windows Installer do instalacji w całym systemie. Następnie przestrzeń nazw IronPdf staje się dostępna za pomocą:
using IronPdf;
using IronPdf;
Imports IronPdf
Teraz programiści mogą łatwo korzystać z funkcji i klas IronPDF, w tym z ChromePdfRenderer do renderowania, edycji dokumentów PDF oraz funkcji zabezpieczeń.
Jak zainstalować IronPDF za pomocą menedżera pakietów NuGet?
-
Konsola menedżera pakietów:
Jeśli korzystasz z konsoli menedżera pakietów, uruchom następujące polecenie:
_CODEBLOCK1
-
Zarządzanie pakietami dla rozwiązania:
Jeśli korzystasz z graficznego interfejsu menedżera pakietów NuGet, wyszukaj IronPDF w pasku wyszukiwania i zainstaluj go. Aby uzyskać informacje na temat zaawansowanych opcji instalacji, w tym pakietów przeznaczonych dla systemów Linux, macOS lub Windows, zapoznaj się z instrukcją instalacji.
Jak zainstalować `PrizmDoc` Viewer od Accusoft?
PrizmDoc Viewer składa się z dwóch części: komponentu po stronie serwera o nazwie PrizmDoc Server, który zachowuje się jak RESTful API, oraz projektu klienta, który wysyła żądania do API i odbiera odpowiedzi. W przeciwieństwie do IronPDF, który działa lokalnie bez zewnętrznych zależności, PrizmDoc wymaga połączenia sieciowego do operacji w chmurze.
Jak uzyskać dostęp do serwera `PrizmDoc`?
PrizmDoc Server to aplikacja po stronie serwera, która otrzymuje podstawowe informacje z dokumentami jako żądania (dane wejściowe) i konwertuje dokumenty do plików PDF, a następnie wysyła przekonwertowane pliki PDF z powrotem jako odpowiedzi (dane wyjściowe). Stanowi on techniczne serce produktu — silnik przetwarzania i konwersji dokumentów. Programiści mogą z niego korzystać na dwa różne sposoby, przy czym oba mają tę samą strukturę programistyczną i wykorzystują te same techniki:
-
Hostowane samodzielnie:
Ta opcja wymaga zorganizowania serwera. Pobierz PrizmDoc Server, a następnie zainstaluj go. Czytaj więcej o tym, jak zainstalować
PrizmDocServer na Windows.Uwaga: Aby uzyskać lepszą wydajność, wymagane jest co najmniej 32 GB pamięci RAM i 4-rdzeniowy procesor. Natomiast wymagania systemówe IronPDF są znacznie skromniejsze.
-
Hostowane w chmurze:
Ta usługa oparta na chmurze eliminuje konieczność organizowania serwera. Aby skorzystać z tej opcji, załóż konto i skopiuj
API keyz menuAPI Keyna stronie głównej.
Najpierw przeanalizujmy podstawową strukturę pracy z PrizmDoc Viewer w celu konwersji dokumentów do plików PDF poprzez bezpośrednią interakcję z Accusoft server przy użyciu WebClient() w aplikacji konsolowej C#.
Uwaga: Poniższy przykład demonstruje, w jaki sposób PrizmDoc obsługuje pliki PDF. Tekst jest długi, więc możesz pominąć ten przykład i przejść bezpośrednio do porównania.
Jak działa struktura organizacyjna firmy Accusoft?
Ten przykład konwertuje myWebpage.html na sample.pdf. W przeciwieństwie do prostej konwersji HTML do PDF w IronPDF, PrizmDoc wymaga wielu wywołań API.
Uwaga: Biblioteka Newtonsoft.Json musi być zainstalowana i przywoływana w projekcie.
Najpierw dodaj do projektu następujące biblioteki:
using System;
using System.IO;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json.Linq; // Install Newtonsoft.Json via NuGet Package Manager
using System;
using System.IO;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json.Linq; // Install Newtonsoft.Json via NuGet Package Manager
Imports System
Imports System.IO
Imports System.Net
Imports System.Text
Imports System.Threading.Tasks
Imports Newtonsoft.Json.Linq ' Install Newtonsoft.Json via NuGet Package Manager
Następnie utwórz zmienną publiczną Accusoft API Key i wklej do niej klucz API:
static string ApiKey = "Your-API-KEY";
static string ApiKey = "Your-API-KEY";
Private Shared ApiKey As String = "Your-API-KEY"
Istnieją 3 kroki postępowania z plikami PDF przy użyciu PrizmDoc Viewer:
- Prześlij plik na serwer
PrizmDoc. - Przekonwertuj przesłany plik.
- Pobierz przekonwertowany plik z serwera
PrizmDoc.
Każdy krok obsługiwany jest przez oddzielną funkcję:
static void Main(string[] args)
{
//---Upload file to Server---
JObject uploadResults = UploadToServer("myWebpage.html").Result;
string fileID = (string)uploadResults.SelectToken("fileId");
string affinityToken = (string)uploadResults.SelectToken("affinityToken");
//---Convert the uploaded file to PDF---
JObject convertResults = Convert(affinityToken, fileID).Result;
string processId = (string)convertResults.SelectToken("processId");
affinityToken = (string)convertResults.SelectToken("affinityToken");
//---Check the status that conversion is completed---
JObject convertStatusResults = ConvertStatus(processId, affinityToken).Result;
string convertStatus = (string)convertStatusResults.SelectToken("state");
//---Continuously checking whether conversion completed---
while (!(convertStatus.Equals("complete")))
{
System.Threading.Thread.Sleep(30000);
convertStatusResults = ConvertStatus(processId, affinityToken).Result;
convertStatus = (string)convertStatusResults.SelectToken("state");
}
//---Download the converted file from server---
string newFileID = (string)convertStatusResults.SelectToken("output.results[0].fileId");
DownloadFromServer(affinityToken, newFileID, "sample.pdf").Wait();
Console.WriteLine("PDF file created successfully...!");
Console.ReadKey();
}
static void Main(string[] args)
{
//---Upload file to Server---
JObject uploadResults = UploadToServer("myWebpage.html").Result;
string fileID = (string)uploadResults.SelectToken("fileId");
string affinityToken = (string)uploadResults.SelectToken("affinityToken");
//---Convert the uploaded file to PDF---
JObject convertResults = Convert(affinityToken, fileID).Result;
string processId = (string)convertResults.SelectToken("processId");
affinityToken = (string)convertResults.SelectToken("affinityToken");
//---Check the status that conversion is completed---
JObject convertStatusResults = ConvertStatus(processId, affinityToken).Result;
string convertStatus = (string)convertStatusResults.SelectToken("state");
//---Continuously checking whether conversion completed---
while (!(convertStatus.Equals("complete")))
{
System.Threading.Thread.Sleep(30000);
convertStatusResults = ConvertStatus(processId, affinityToken).Result;
convertStatus = (string)convertStatusResults.SelectToken("state");
}
//---Download the converted file from server---
string newFileID = (string)convertStatusResults.SelectToken("output.results[0].fileId");
DownloadFromServer(affinityToken, newFileID, "sample.pdf").Wait();
Console.WriteLine("PDF file created successfully...!");
Console.ReadKey();
}
Shared Sub Main(ByVal args() As String)
'---Upload file to Server---
Dim uploadResults As JObject = UploadToServer("myWebpage.html").Result
Dim fileID As String = CStr(uploadResults.SelectToken("fileId"))
Dim affinityToken As String = CStr(uploadResults.SelectToken("affinityToken"))
'---Convert the uploaded file to PDF---
Dim convertResults As JObject = Convert(affinityToken, fileID).Result
Dim processId As String = CStr(convertResults.SelectToken("processId"))
affinityToken = CStr(convertResults.SelectToken("affinityToken"))
'---Check the status that conversion is completed---
Dim convertStatusResults As JObject = ConvertStatus(processId, affinityToken).Result
Dim convertStatus As String = CStr(convertStatusResults.SelectToken("state"))
'---Continuously checking whether conversion completed---
Do While Not (convertStatus.Equals("complete"))
System.Threading.Thread.Sleep(30000)
convertStatusResults = ConvertStatus(processId, affinityToken).Result
convertStatus = CStr(convertStatusResults.SelectToken("state"))
Loop
'---Download the converted file from server---
Dim newFileID As String = CStr(convertStatusResults.SelectToken("output.results[0].fileId"))
DownloadFromServer(affinityToken, newFileID, "sample.pdf").Wait()
Console.WriteLine("PDF file created successfully...!")
Console.ReadKey()
End Sub
1. Prześlij plik na serwer:
public static async Task<JObject> UploadToServer(string fileToUpload)
{
FileInfo input = new FileInfo(fileToUpload);
if (input == null)
{
throw new ArgumentException("Missing parameter input", nameof(input));
}
var fileName = input.Name;
var endpoint = new Uri("___PROTECTED_URL_123___");
using (var client = new WebClient())
{
client.Headers.Add("acs-api-key", ApiKey);
client.Headers.Add("Content-Type", "application/octet-stream");
using (var reader = new BinaryReader(input.OpenRead()))
{
var data = reader.ReadBytes((int)reader.BaseStream.Length);
var results = await client.UploadDataTaskAsync(endpoint, "POST", data);
string getResult = Encoding.ASCII.GetString(results);
return JObject.Parse(getResult);
}
}
}
public static async Task<JObject> UploadToServer(string fileToUpload)
{
FileInfo input = new FileInfo(fileToUpload);
if (input == null)
{
throw new ArgumentException("Missing parameter input", nameof(input));
}
var fileName = input.Name;
var endpoint = new Uri("___PROTECTED_URL_123___");
using (var client = new WebClient())
{
client.Headers.Add("acs-api-key", ApiKey);
client.Headers.Add("Content-Type", "application/octet-stream");
using (var reader = new BinaryReader(input.OpenRead()))
{
var data = reader.ReadBytes((int)reader.BaseStream.Length);
var results = await client.UploadDataTaskAsync(endpoint, "POST", data);
string getResult = Encoding.ASCII.GetString(results);
return JObject.Parse(getResult);
}
}
}
Public Shared Async Function UploadToServer(fileToUpload As String) As Task(Of JObject)
Dim input As New FileInfo(fileToUpload)
If input Is Nothing Then
Throw New ArgumentException("Missing parameter input", NameOf(input))
End If
Dim fileName = input.Name
Dim endpoint As New Uri("___PROTECTED_URL_123___")
Using client As New WebClient()
client.Headers.Add("acs-api-key", ApiKey)
client.Headers.Add("Content-Type", "application/octet-stream")
Using reader As New BinaryReader(input.OpenRead())
Dim data = reader.ReadBytes(CInt(reader.BaseStream.Length))
Dim results = Await client.UploadDataTaskAsync(endpoint, "POST", data)
Dim getResult As String = Encoding.ASCII.GetString(results)
Return JObject.Parse(getResult)
End Using
End Using
End Function
2. Przekonwertuj przesłany plik do formatu PDF:
public static async Task<JObject> Convert(string affinityToken, string fileID)
{
var endpoint = new Uri("___PROTECTED_URL_124___");
using (var client = new WebClient())
{
client.Headers.Add("Content-Type", "application/json");
client.Headers.Add("acs-api-key", ApiKey);
client.Headers.Add("Accusoft-Affinity-Token", affinityToken);
JObject myJson =
new JObject(
new JProperty("input",
new JObject(
new JProperty("sources",
new JArray(
new JObject(
new JProperty("fileId", fileID)
)
)
),
new JProperty("dest",
new JObject(
new JProperty("format", "pdf")
)
)
)
)
);
string results = await client.UploadStringTaskAsync(endpoint, "POST", myJson.ToString());
return JObject.Parse(results);
}
}
public static async Task<JObject> Convert(string affinityToken, string fileID)
{
var endpoint = new Uri("___PROTECTED_URL_124___");
using (var client = new WebClient())
{
client.Headers.Add("Content-Type", "application/json");
client.Headers.Add("acs-api-key", ApiKey);
client.Headers.Add("Accusoft-Affinity-Token", affinityToken);
JObject myJson =
new JObject(
new JProperty("input",
new JObject(
new JProperty("sources",
new JArray(
new JObject(
new JProperty("fileId", fileID)
)
)
),
new JProperty("dest",
new JObject(
new JProperty("format", "pdf")
)
)
)
)
);
string results = await client.UploadStringTaskAsync(endpoint, "POST", myJson.ToString());
return JObject.Parse(results);
}
}
Public Shared Async Function Convert(affinityToken As String, fileID As String) As Task(Of JObject)
Dim endpoint = New Uri("___PROTECTED_URL_124___")
Using client = New WebClient()
client.Headers.Add("Content-Type", "application/json")
client.Headers.Add("acs-api-key", ApiKey)
client.Headers.Add("Accusoft-Affinity-Token", affinityToken)
Dim myJson As JObject =
New JObject(
New JProperty("input",
New JObject(
New JProperty("sources",
New JArray(
New JObject(
New JProperty("fileId", fileID)
)
)
),
New JProperty("dest",
New JObject(
New JProperty("format", "pdf")
)
)
)
)
)
Dim results As String = Await client.UploadStringTaskAsync(endpoint, "POST", myJson.ToString())
Return JObject.Parse(results)
End Using
End Function
Poniższy JSON jest wartością wynikową obiektu myJson:
{
"input": {
"sources":
[
{"fileId": "Auto Generated FileId Value"}
],
"dest": {
"format": "pdf"
}
}
}
Sprawdź, czy konwersja została zakończona
public static async Task<JObject> ConvertStatus(string processId, string affinityToken)
{
string endpoint = "___PROTECTED_URL_125___" + processId;
using (var client = new WebClient())
{
client.BaseAddress = endpoint;
client.Headers.Add("acs-api-key", ApiKey);
client.Headers.Add("Accusoft-Affinity-Token", affinityToken);
string results = await client.DownloadStringTaskAsync(endpoint);
return JObject.Parse(results);
}
}
public static async Task<JObject> ConvertStatus(string processId, string affinityToken)
{
string endpoint = "___PROTECTED_URL_125___" + processId;
using (var client = new WebClient())
{
client.BaseAddress = endpoint;
client.Headers.Add("acs-api-key", ApiKey);
client.Headers.Add("Accusoft-Affinity-Token", affinityToken);
string results = await client.DownloadStringTaskAsync(endpoint);
return JObject.Parse(results);
}
}
Public Shared Async Function ConvertStatus(processId As String, affinityToken As String) As Task(Of JObject)
Dim endpoint As String = "___PROTECTED_URL_125___" & processId
Using client As New WebClient()
client.BaseAddress = endpoint
client.Headers.Add("acs-api-key", ApiKey)
client.Headers.Add("Accusoft-Affinity-Token", affinityToken)
Dim results As String = Await client.DownloadStringTaskAsync(endpoint)
Return JObject.Parse(results)
End Using
End Function
3. Pobierz przekonwertowany plik z serwera
public static async Task DownloadFromServer(string affinityToken, string fileId, string outfile)
{
var endpoint = new Uri("___PROTECTED_URL_126___" + fileId);
using (var client = new WebClient())
{
client.Headers.Add("acs-api-key", ApiKey);
client.Headers.Add("Accusoft-Affinity-Token", affinityToken);
FileInfo output = new FileInfo(outfile);
using (var writeStream = output.Create())
{
var results = await client.DownloadDataTaskAsync(endpoint);
await writeStream.WriteAsync(results, 0, results.Length);
}
}
}
public static async Task DownloadFromServer(string affinityToken, string fileId, string outfile)
{
var endpoint = new Uri("___PROTECTED_URL_126___" + fileId);
using (var client = new WebClient())
{
client.Headers.Add("acs-api-key", ApiKey);
client.Headers.Add("Accusoft-Affinity-Token", affinityToken);
FileInfo output = new FileInfo(outfile);
using (var writeStream = output.Create())
{
var results = await client.DownloadDataTaskAsync(endpoint);
await writeStream.WriteAsync(results, 0, results.Length);
}
}
}
Public Shared Async Function DownloadFromServer(affinityToken As String, fileId As String, outfile As String) As Task
Dim endpoint As New Uri("___PROTECTED_URL_126___" & fileId)
Using client As New WebClient()
client.Headers.Add("acs-api-key", ApiKey)
client.Headers.Add("Accusoft-Affinity-Token", affinityToken)
Dim output As New FileInfo(outfile)
Using writeStream As FileStream = output.Create()
Dim results As Byte() = Await client.DownloadDataTaskAsync(endpoint)
Await writeStream.WriteAsync(results, 0, results.Length)
End Using
End Using
End Function
Powyższy przykład wymaga znacznego nakładu pracy. Aby zminimalizować nakład pracy, firma Accusoft wprowadziła bibliotekę .NET o nazwie Accusoft.PrizmDocServerSDK, stanowiącą opakowanie wokół interfejsu API PrizmDoc Server REST. Przyjrzyjmy się, jak zainstalować i używać tej biblioteki w projektach .NET.
Jak zainstalować Accusoft.`PrizmDocServer`SDK?
Istnieją dwa sposoby instalacji opakowania.
-
Konsola menedżera pakietów:
Jeśli korzystasz z konsoli menedżera pakietów, uruchom następujące polecenie:
_CODEBLOCK10
-
Zarządzanie pakietami dla rozwiązania:
Jeśli korzystasz z GUI NuGet Package Manager, wyszukaj
Accusoft.PrizmDocServerSDKw pasku wyszukiwania i zainstaluj go.
Teraz programiści mogą łatwo uzyskać dostęp do przestrzeni nazw Accusoft.PrizmDocServer i korzystać z niej:
using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer;
Imports Accusoft.PrizmDocServer
Poradniki "Jak to zrobić"
Jak IronPDF i PrizmDoc Viewer porównują się w przykładach kodu?
Po zapoznaniu się z wprowadzeniem i instalacją obu komponentów nadszedł czas, aby rozpocząć pracę z nimi. Poniższe przykłady pokazują wdrożenie z wykorzystaniem obu komponentów, co pomaga zrozumieć struktury programowania i określić, które z nich najlepiej pasują do wymagań projektu.
Jak przekonwertować HTML do PDF przy użyciu IronPDF vs PrizmDoc Viewer?
Na potrzeby tego porównania przekonwertujmy stronę internetową o nazwie myWebPage.html na plik PDF i zapiszmy go w lokalizacji docelowej. Silnik renderujący IronPDF dla przeglądarki Chrome zapewnia konwersję z idealną dokładnością pikselową oraz pełną obsługę CSS, JavaScript i czcionek internetowych.
W jaki sposób IronPDF konwertuje HTML na PDF?
using IronPdf;
static void Main(string[] args)
{
// Create rendering converter
var converter = new ChromePdfRenderer();
// Render HTML file to PDF
using var PDF = converter.RenderHTMLFileAsPdf("myWebPage.html");
// Save to target location
PDF.SaveAs("sample.pdf");
}
using IronPdf;
static void Main(string[] args)
{
// Create rendering converter
var converter = new ChromePdfRenderer();
// Render HTML file to PDF
using var PDF = converter.RenderHTMLFileAsPdf("myWebPage.html");
// Save to target location
PDF.SaveAs("sample.pdf");
}
Imports IronPdf
Shared Sub Main(ByVal args() As String)
' Create rendering converter
Dim converter = New ChromePdfRenderer()
' Render HTML file to PDF
Dim PDF = converter.RenderHTMLFileAsPdf("myWebPage.html")
' Save to target location
PDF.SaveAs("sample.pdf")
End Sub
Powyższy kod tworzy plik sample.pdf i zapisuje go w folderze bin>debug projektu. IronPDF obsługuje również ciągi znaków HTML, adresy URL, a nawet pliki ZIP zawierające HTML jako źródła danych wejściowych.
Deweloperzy mogą również określić dowolną ścieżkę, taką jak ta: PDF.SaveAs("E:/sample.pdf"); lub zapisać do memory stream dla wdrożeń w chmurze.
Dowiedz się więcej o pracy z IronPDF w zakresie obsługi plików PDF.
Teraz wykonajmy to samo zadanie przy użyciu PrizmDoc Viewer dla porównania.
Jak PrizmDoc Viewer konwertuje HTML do PDF?
W sekcji instalacji przeglądarki PrizmDoc omówiono uzyskanie Accusoft API Key. Oto jak z niego korzystać.
Najpierw należy wysłać żądanie do serwera PrizmDoc i otrzymać odpowiedź. Proces ten wymaga czasu i programowania asynchronicznego. IronPDF obsługuje również metody asynchroniczne w celu poprawy wydajności.
Uwaga: Upewnij się, że system jest podłączony do Internetu podczas tworzenia plików PDF przy użyciu usług w chmurze PrizmDoc Viewer.
using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer.Conversion;
static void Main(string[] args)
{
ChromePdfRenderer().GetAwaiter().GetResult();
}
private static async Task ChromePdfRenderer()
{
// Instantiate PrizmDocServerClient object
var prizmDocServer = new PrizmDocServerClient("___PROTECTED_URL_127___", "Your-API-KEY");
// Specify HTML file and convert it to a PDF.
ConversionResult result = await prizmDocServer.ConvertToPdfAsync("myWebPage.html");
// Save PDF file to the target location
await result.RemoteWorkFile.SaveAsync("sample.pdf");
}
using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer.Conversion;
static void Main(string[] args)
{
ChromePdfRenderer().GetAwaiter().GetResult();
}
private static async Task ChromePdfRenderer()
{
// Instantiate PrizmDocServerClient object
var prizmDocServer = new PrizmDocServerClient("___PROTECTED_URL_127___", "Your-API-KEY");
// Specify HTML file and convert it to a PDF.
ConversionResult result = await prizmDocServer.ConvertToPdfAsync("myWebPage.html");
// Save PDF file to the target location
await result.RemoteWorkFile.SaveAsync("sample.pdf");
}
Imports Accusoft.PrizmDocServer
Imports Accusoft.PrizmDocServer.Conversion
Module Program
Sub Main(args As String())
ChromePdfRenderer().GetAwaiter().GetResult()
End Sub
Private Async Function ChromePdfRenderer() As Task
' Instantiate PrizmDocServerClient object
Dim prizmDocServer = New PrizmDocServerClient("___PROTECTED_URL_127___", "Your-API-KEY")
' Specify HTML file and convert it to a PDF.
Dim result As ConversionResult = Await prizmDocServer.ConvertToPdfAsync("myWebPage.html")
' Save PDF file to the target location
Await result.RemoteWorkFile.SaveAsync("sample.pdf")
End Function
End Module
Czytaj więcej o pracy z PrizmDoc Viewer.
Która biblioteka zapewnia prostszą konwersję HTML do PDF?
Te przykłady pokazują, że IronPDF oferuje prostsze podejście do tworzenia plików PDF i wymaga mniej czasu. IronPDF zapewnia również opcje renderowania umożliwiające precyzyjne dostosowanie wyniku, w tym niestandardowe rozmiary papieru, marginesy i ustawienia okna wyświetlania.
Jak konwertować obrazy do formatu PDF za pomocą IronPDF vs PrizmDoc Viewer?
To porównanie pokazuje, jak utworzyć plik PDF z obrazu znajdującego się w folderze debug projektu. Programiści zaczynają od IronPDF.
W jaki sposób IronPDF konwertuje obrazy do formatu PDF?
using IronPdf;
static void Main(string[] args)
{
// Specify the image to be converted
using var converted = ImageToPdfConverter.ImageToPdf("google.png");
// Save PDF file to the target location
converted.SaveAs("sample.pdf");
}
using IronPdf;
static void Main(string[] args)
{
// Specify the image to be converted
using var converted = ImageToPdfConverter.ImageToPdf("google.png");
// Save PDF file to the target location
converted.SaveAs("sample.pdf");
}
Imports IronPdf
Shared Sub Main(ByVal args() As String)
' Specify the image to be converted
Dim converted = ImageToPdfConverter.ImageToPdf("google.png")
' Save PDF file to the target location
converted.SaveAs("sample.pdf")
End Sub
IronPDF obsługuje również konwersję plików TIFF z wieloma ramkami, osadzanie obrazów z usługi Azure Blob Storage oraz osadzanie obrazów w formacie Base64.
Wynik:
Ten zrzut ekranu pokazuje nowo utworzony plik PDF sample.pdf przy użyciu powyższego kodu:
Tworzenie pliku PDF z obrazu za pomocą IronPDF jest proste. Teraz wykonajmy to samo zadanie przy użyciu przeglądarki PrizmDoc i sprawdźmy wygenerowany przez nią plik PDF.
Jak PrizmDoc Viewer konwertuje obrazy do PDF?
using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer.Conversion;
static void Main(string[] args)
{
ImageToPDF().GetAwaiter().GetResult();
}
private static async Task ImageToPDF()
{
// Instantiate PrizmDocServerClient object
var prizmDocServer = new PrizmDocServerClient("___PROTECTED_URL_128___", "Your-API-KEY");
// Specify the image to be converted
ConversionResult results = await prizmDocServer.ConvertToPdfAsync("google.png");
// Save PDF file to the target location
await results.RemoteWorkFile.SaveAsync("sample.pdf");
}
using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer.Conversion;
static void Main(string[] args)
{
ImageToPDF().GetAwaiter().GetResult();
}
private static async Task ImageToPDF()
{
// Instantiate PrizmDocServerClient object
var prizmDocServer = new PrizmDocServerClient("___PROTECTED_URL_128___", "Your-API-KEY");
// Specify the image to be converted
ConversionResult results = await prizmDocServer.ConvertToPdfAsync("google.png");
// Save PDF file to the target location
await results.RemoteWorkFile.SaveAsync("sample.pdf");
}
Imports Accusoft.PrizmDocServer
Imports Accusoft.PrizmDocServer.Conversion
Module Module1
Sub Main()
ImageToPDF().GetAwaiter().GetResult()
End Sub
Private Async Function ImageToPDF() As Task
' Instantiate PrizmDocServerClient object
Dim prizmDocServer As New PrizmDocServerClient("___PROTECTED_URL_128___", "Your-API-KEY")
' Specify the image to be converted
Dim results As ConversionResult = Await prizmDocServer.ConvertToPdfAsync("google.png")
' Save PDF file to the target location
Await results.RemoteWorkFile.SaveAsync("sample.pdf")
End Function
End Module
Wynik: Ten zrzut ekranu pokazuje nowo utworzony plik PDF sample.pdf z powyższego kodu:
Która biblioteka wymaga mniej kodu do konwersji obrazu do formatu PDF?
IronPDF wymaga tylko dwóch wierszy kodu. W przeciwieństwie do tego, korzystanie z serwera PrizmDoc wiąże się z większą ilością linii kodu z programowaniem asynchronicznym. Wynik działania IronPDF automatycznie zapewnia również gotowy do użycia dokument na całej stronie. IronPDF oferuje dodatkowe opcje pozycjonowania obrazów i konwersji wielu obrazów.
Jak scalić wiele plików PDF za pomocą IronPDF vs PrizmDoc Viewer?
Na potrzeby tego porównania przyjmijmy, że istnieją trzy pliki PDF o nazwach A.pdf, B.pdf i C.pdf. Zadaniem jest połączenie ich w jeden plik PDF. Oba komponenty mogą wykonać to zadanie. Najpierw przykład pokazuje, jak to zrobić przy użyciu IronPDF.
W jaki sposób IronPDF łączy pliki PDF?
using IronPdf;
using System.Collections.Generic;
static void Main(string[] args)
{
// Create rendering converter
var Renderer = new IronPdf.ChromePdfRenderer();
// Create a list of pdf files
var PDFs = new List<PdfDocument>();
PDFs.Add(PdfDocument.FromFile("A.pdf"));
PDFs.Add(PdfDocument.FromFile("B.pdf"));
PDFs.Add(PdfDocument.FromFile("C.pdf"));
// Merge the list of pdf file
using PdfDocument PDF = PdfDocument.Merge(PDFs);
// Save merged file to the target location
PDF.SaveAs("sample.pdf");
foreach(var pdf in PDFs)
{
pdf.Dispose();
}
}
using IronPdf;
using System.Collections.Generic;
static void Main(string[] args)
{
// Create rendering converter
var Renderer = new IronPdf.ChromePdfRenderer();
// Create a list of pdf files
var PDFs = new List<PdfDocument>();
PDFs.Add(PdfDocument.FromFile("A.pdf"));
PDFs.Add(PdfDocument.FromFile("B.pdf"));
PDFs.Add(PdfDocument.FromFile("C.pdf"));
// Merge the list of pdf file
using PdfDocument PDF = PdfDocument.Merge(PDFs);
// Save merged file to the target location
PDF.SaveAs("sample.pdf");
foreach(var pdf in PDFs)
{
pdf.Dispose();
}
}
Imports IronPdf
Imports System.Collections.Generic
Shared Sub Main(ByVal args() As String)
' Create rendering converter
Dim Renderer = New IronPdf.ChromePdfRenderer()
' Create a list of pdf files
Dim PDFs = New List(Of PdfDocument)()
PDFs.Add(PdfDocument.FromFile("A.pdf"))
PDFs.Add(PdfDocument.FromFile("B.pdf"))
PDFs.Add(PdfDocument.FromFile("C.pdf"))
' Merge the list of pdf file
Using PDF As PdfDocument = PdfDocument.Merge(PDFs)
' Save merged file to the target location
PDF.SaveAs("sample.pdf")
'INSTANT VB NOTE: The variable pdf was renamed since Visual Basic will not allow local variables with the same name as parameters or other local variables:
For Each .pdf_Conflict In PDFs
.pdf_Conflict.Dispose()
Next pdf_Conflict
End Using
End Sub
Powyższy kod tworzy plik sample.pdf, który łączy A.pdf, B.pdf i C.pdf. IronPDF obsługuje również dodawanie i kopiowanie stron między plikami PDF oraz dzielenie plików PDF.
Teraz wykonajmy to samo zadanie przy użyciu przeglądarki PrizmDoc.
Jak PrizmDoc Viewer łączy pliki 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");
}
using System.Threading.Tasks;
using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer.Conversion;
static void Main(string[] args)
{
PdfMerge().GetAwaiter().GetResult();
}
private static async Task PdfMerge()
{
// Instantiate PrizmDocServerClient object
var prizmDocServer = new PrizmDocServerClient("___PROTECTED_URL_129___", "Your-API-KEY");
// Pass the list of pdf files to PrizmDoc Server
ConversionResult result = await prizmDocServer.CombineToPdfAsync(
new []
{
new ConversionSourceDocument("A.pdf"),
new ConversionSourceDocument("B.pdf"),
new ConversionSourceDocument("C.pdf"),
});
// Save merged file to the target location
await result.RemoteWorkFile.SaveAsync("sample.pdf");
}
Imports System.Threading.Tasks
Imports Accusoft.PrizmDocServer
Imports Accusoft.PrizmDocServer.Conversion
Module Module1
Sub Main()
PdfMerge().GetAwaiter().GetResult()
End Sub
Private Async Function PdfMerge() As Task
' Instantiate PrizmDocServerClient object
Dim prizmDocServer = New PrizmDocServerClient("___PROTECTED_URL_129___", "Your-API-KEY")
' Pass the list of pdf files to PrizmDoc Server
Dim result As ConversionResult = Await prizmDocServer.CombineToPdfAsync(
New ConversionSourceDocument() {
New ConversionSourceDocument("A.pdf"),
New ConversionSourceDocument("B.pdf"),
New ConversionSourceDocument("C.pdf")
})
' Save merged file to the target location
Await result.RemoteWorkFile.SaveAsync("sample.pdf")
End Function
End Module
Powyższy kod tworzy również plik sample.pdf, który łączy pliki A.pdf, B.pdf i C.pdf.
Jak dodać nagłówki i stopki do plików PDF za pomocą IronPDF vs PrizmDoc Viewer?
Dla tego porównania załóżmy, że istnieje prosty WebPage o nazwie myWebPage.html z następującym HTML i CSS:
<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>
Celem jest przekonwertowanie tego WebPage na plik PDF z następującymi właściwościami nagłówka i stopki:
Page Titlepo lewej stronie nagłówkaDateTimepo prawej stronie nagłówkaPage Number of Total Pagespo prawej stronie stopki
Najpierw przyjrzyjmy się, jak IronPDF obsługuje nagłówki i stopki.
Jak IronPDF obsługuje nagłówki i stopki w plikach PDF?
Aby obsługiwać nagłówki i stopki plików PDF, IronPDF udostępnia właściwość klasy ChromePdfRenderer o nazwie RenderingOptions, która może być używana w następujący sposób:
-
Dla nagłówka:
_CODEBLOCK19
-
W stopce:
_CODEBLOCK20
Podczas inicjowania TextHeaderFooter() można ustawić następujące właściwości:
CenterTextdo drukowania tekstu na środku nagłówka lub stopkiLeftTextdo drukowania tekstu po lewej stronie nagłówka lub stopkiRightTextdo drukowania tekstu po prawej stronie nagłówka lub stopkiDrawDividerLinerysuje linię oddzielającą zawartość strony od nagłówka lub stopkiFontFamilydo określenia rodziny czcionek nagłówka lub stopkiFontSize, aby określić rozmiar czcionki nagłówka lub stopki- Spacing dostosowuje odstęp między zawartością strony a nagłówkiem lub stopką
Następujące predefiniowane atrybuty pomagają ustawić zawartość nagłówka lub stopki. Są one zapisane w nawiasach klamrowych { }:
- {page} drukuje bieżący numer strony w nagłówku lub stopce
- {total-pages} drukuje całkowitą liczbę stron w nagłówku lub stopce
- {url} drukuje adres URL renderowanej strony
- {date} drukuje bieżącą datę w nagłówku lub stopce
- {time} drukuje aktualny czas w nagłówku lub stopce
- {html-title} drukuje tytuł renderowanej strony internetowej w nagłówku lub stopce
- {pdf-title} drukuje tytuł dokumentu w nagłówku lub stopce
Czytaj więcej w szczegółach na temat pracy z nagłówkami i stopkami przy użyciu IronPDF. IronPDF obsługuje również nagłówki i stopki HTML dla bardziej złożonych projektów.
Poniższy przykład implementuje przypadek użycia i demonstruje, jak korzystać z powyższych właściwości:
using IronPdf;
static void Main(string[] args)
{
// Create rendering converter
var converter = new ChromePdfRenderer();
// Setting Header properties
converter.RenderingOptions.TextHeader = new TextHeaderFooter()
{
DrawDividerLine = true,
LeftText = "Page Title",
RightText = "{date} {time}",
FontSize = 13
};
// Setting footer properties
converter.RenderingOptions.TextFooter = new TextHeaderFooter()
{
RightText = "Page {page} of {total-pages}",
FontSize = 12
};
// Specify the file to be converted
using var PDF = converter.RenderHTMLFileAsPdf("myWebPage.html");
// Save to target location
PDF.SaveAs("sample.pdf");
}
using IronPdf;
static void Main(string[] args)
{
// Create rendering converter
var converter = new ChromePdfRenderer();
// Setting Header properties
converter.RenderingOptions.TextHeader = new TextHeaderFooter()
{
DrawDividerLine = true,
LeftText = "Page Title",
RightText = "{date} {time}",
FontSize = 13
};
// Setting footer properties
converter.RenderingOptions.TextFooter = new TextHeaderFooter()
{
RightText = "Page {page} of {total-pages}",
FontSize = 12
};
// Specify the file to be converted
using var PDF = converter.RenderHTMLFileAsPdf("myWebPage.html");
// Save to target location
PDF.SaveAs("sample.pdf");
}
Imports IronPdf
Shared Sub Main(ByVal args() As String)
' Create rendering converter
Dim converter = New ChromePdfRenderer()
' Setting Header properties
converter.RenderingOptions.TextHeader = New TextHeaderFooter() With {
.DrawDividerLine = True,
.LeftText = "Page Title",
.RightText = "{date} {time}",
.FontSize = 13
}
' Setting footer properties
converter.RenderingOptions.TextFooter = New TextHeaderFooter() With {
.RightText = "Page {page} of {total-pages}",
.FontSize = 12
}
' Specify the file to be converted
Dim PDF = converter.RenderHTMLFileAsPdf("myWebPage.html")
' Save to target location
PDF.SaveAs("sample.pdf")
End Sub
Wynik: Zrzut ekranu nowo utworzonego pliku PDF sample.pdf za pomocą powyższego kodu:
Praca z nagłówkami i stopkami przy użyciu IronPDF wymaga intuicyjnego języka podczas tworzenia plików PDF. Teraz przykład pokazuje, jak PrizmDoc Viewer obsługuje nagłówki i stopki.
Jak przeglądarka `PrizmDoc` radzi sobie z nagłówkami i stopkami plików PDF?
PrizmDoc Viewer zapewnia klasę HeaderFooterOptions do obsługi nagłówków i stopek, z następującymi właściwościami:
- Linie określają linie dla nagłówka i stopki, gdzie każda linia ma następujące właściwości:
- Left drukuje tekst po lewej stronie linii nagłówka lub stopki
- Center drukuje tekst na środku linii nagłówka lub stopki
- Right drukuje tekst po prawej stronie linii nagłówka lub stopki
FontFamily, aby określić rodzinę czcionki tekstu nagłówka lub stopkiFontSize, aby określić rozmiar czcionki tekstu nagłówka lub stopki- Color, aby określić kolor tekstu nagłówka lub stopki
Czytaj więcej o ustawianiu nagłówków i stopek stron PDF przy użyciu serwera PrizmDoc.
Przykład pokazuje, jak zaimplementować przypadek użycia przy użyciu powyższych właściwości:
using System.Threading.Tasks;
using System.Collections.Generic;
using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer.Conversion;
static void Main(string[] args)
{
SetHeaderFooter().GetAwaiter().GetResult();
}
private static async Task SetHeaderFooter()
{
// Instantiate PrizmDocServerClient object with Header and footer properties
var prizmDocServer = new PrizmDocServerClient("___PROTECTED_URL_130___", "Your-API-KEY");
ConversionResult result = await prizmDocServer.ConvertToPdfAsync(
"myWebPage.html",
header: new HeaderFooterOptions
{
Lines = new List<HeaderFooterLine>
{
new HeaderFooterLine { Left = "Page Title", Right = DateTime.Now.ToString() }
},
},
footer: new HeaderFooterOptions
{
Lines = new List<HeaderFooterLine>
{
new HeaderFooterLine { Right = "Page {{pageNumber}} of {{pageCount}}" },
},
});
// Save to the target location
await result.RemoteWorkFile.SaveAsync("sample.pdf");
}
using System.Threading.Tasks;
using System.Collections.Generic;
using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer.Conversion;
static void Main(string[] args)
{
SetHeaderFooter().GetAwaiter().GetResult();
}
private static async Task SetHeaderFooter()
{
// Instantiate PrizmDocServerClient object with Header and footer properties
var prizmDocServer = new PrizmDocServerClient("___PROTECTED_URL_130___", "Your-API-KEY");
ConversionResult result = await prizmDocServer.ConvertToPdfAsync(
"myWebPage.html",
header: new HeaderFooterOptions
{
Lines = new List<HeaderFooterLine>
{
new HeaderFooterLine { Left = "Page Title", Right = DateTime.Now.ToString() }
},
},
footer: new HeaderFooterOptions
{
Lines = new List<HeaderFooterLine>
{
new HeaderFooterLine { Right = "Page {{pageNumber}} of {{pageCount}}" },
},
});
// Save to the target location
await result.RemoteWorkFile.SaveAsync("sample.pdf");
}
Imports System.Threading.Tasks
Imports System.Collections.Generic
Imports Accusoft.PrizmDocServer
Imports Accusoft.PrizmDocServer.Conversion
Module Program
Sub Main(args As String())
SetHeaderFooter().GetAwaiter().GetResult()
End Sub
Private Async Function SetHeaderFooter() As Task
' Instantiate PrizmDocServerClient object with Header and footer properties
Dim prizmDocServer = New PrizmDocServerClient("___PROTECTED_URL_130___", "Your-API-KEY")
Dim result As ConversionResult = Await prizmDocServer.ConvertToPdfAsync(
"myWebPage.html",
header:=New HeaderFooterOptions With {
.Lines = New List(Of HeaderFooterLine) From {
New HeaderFooterLine With {.Left = "Page Title", .Right = DateTime.Now.ToString()}
}
},
footer:=New HeaderFooterOptions With {
.Lines = New List(Of HeaderFooterLine) From {
New HeaderFooterLine With {.Right = "Page {{pageNumber}} of {{pageCount}}"}
}
})
' Save to the target location
Await result.RemoteWorkFile.SaveAsync("sample.pdf")
End Function
End Module
Wynik:
Zrzut ekranu nowo utworzonego pliku PDF za pomocą powyższego kodu:
Która biblioteka oferuje większą elastyczność dla nagłówków i stopek?
IronPDF zapewnia więcej funkcji do ustawiania właściwości nagłówka i stopki z prostą strukturą programowania w porównaniu do PrizmDoc Viewer. Plik PDF wygenerowany przez IronPDF jest również bardziej czytelny i atrakcyjny niż plik wygenerowany przez PrizmDoc Viewer. IronPDF obsługuje również numery stron i przerwy stron dla lepszej kontroli dokumentu.
Jak przekonwertować strony PDF na obrazy za pomocą IronPDF vs PrizmDoc Viewer?
Na potrzeby tego porównania załóżmy, że mamy prosty plik PDF o nazwie Sample_PDF.pdf z dwiema stronami.
Zadanie polega na stworzeniu obrazu każdej strony. W pierwszym przykładzie zobaczymy, jak wykonać to przy użyciu IronPDF.
Jak IronPDF konwertuje strony PDF na obrazy?
using IronPdf;
static void Main(string[] args)
{
// Specify file to be converted
var pdf = PdfDocument.FromFile("Sample_PDF.pdf");
// Save images to the target location
pdf.RasterizeToImageFiles("image_*.png");
}
using IronPdf;
static void Main(string[] args)
{
// Specify file to be converted
var pdf = PdfDocument.FromFile("Sample_PDF.pdf");
// Save images to the target location
pdf.RasterizeToImageFiles("image_*.png");
}
Imports IronPdf
Shared Sub Main(ByVal args() As String)
' Specify file to be converted
Dim pdf = PdfDocument.FromFile("Sample_PDF.pdf")
' Save images to the target location
pdf.RasterizeToImageFiles("image_*.png")
End Sub
IronPDF obsługuje również zapisywanie obrazów do strumienia pamięci i różne formaty obrazów, w tym JPEG, TIFF i inne.
Wynik:
Powyższy kod tworzy następujące dwa obrazy .png:
Tworzenie obrazów stron PDF za pomocą IronPDF jest proste. Teraz wykonajmy to samo zadanie przy użyciu przeglądarki PrizmDoc.
Jak przeglądarka PrizmDoc konwertuje strony PDF na obrazy?
using System.Linq;
using System.Collections.Generic;
using System.Threading.Tasks;
using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer.Conversion;
static void Main(string[] args)
{
PdfToImage().GetAwaiter().GetResult();
}
private static async Task PdfToImage()
{
// Instantiate PrizmDocServerClient object
var prizmDocServer = new PrizmDocServerClient("___PROTECTED_URL_131___", "Your-API-KEY");
// Convert PDF file to images
IEnumerable<ConversionResult> results = await prizmDocServer.ConvertAsync("Sample_PDF.pdf", DestinationFileFormat.Png);
// Save each image.
for (int i = 0; i < results.Count(); i++)
{
await results.ElementAt(i).RemoteWorkFile.SaveAsync($"page-{i + 1}.png");
}
}
using System.Linq;
using System.Collections.Generic;
using System.Threading.Tasks;
using Accusoft.PrizmDocServer;
using Accusoft.PrizmDocServer.Conversion;
static void Main(string[] args)
{
PdfToImage().GetAwaiter().GetResult();
}
private static async Task PdfToImage()
{
// Instantiate PrizmDocServerClient object
var prizmDocServer = new PrizmDocServerClient("___PROTECTED_URL_131___", "Your-API-KEY");
// Convert PDF file to images
IEnumerable<ConversionResult> results = await prizmDocServer.ConvertAsync("Sample_PDF.pdf", DestinationFileFormat.Png);
// Save each image.
for (int i = 0; i < results.Count(); i++)
{
await results.ElementAt(i).RemoteWorkFile.SaveAsync($"page-{i + 1}.png");
}
}
Imports System.Linq
Imports System.Collections.Generic
Imports System.Threading.Tasks
Imports Accusoft.PrizmDocServer
Imports Accusoft.PrizmDocServer.Conversion
Module Program
Sub Main(args As String())
PdfToImage().GetAwaiter().GetResult()
End Sub
Private Async Function PdfToImage() As Task
' Instantiate PrizmDocServerClient object
Dim prizmDocServer = New PrizmDocServerClient("___PROTECTED_URL_131___", "Your-API-KEY")
' Convert PDF file to images
Dim results As IEnumerable(Of ConversionResult) = Await prizmDocServer.ConvertAsync("Sample_PDF.pdf", DestinationFileFormat.Png)
' Save each image.
For i As Integer = 0 To results.Count() - 1
Await results.ElementAt(i).RemoteWorkFile.SaveAsync($"page-{i + 1}.png")
Next
End Function
End Module
Wynik:
Powyższy kod tworzy również następujące dwa obrazy .png:
Która biblioteka ułatwia konwersję plików PDF do obrazów?
W porównaniu do PrizmDoc Viewer, IronPDF pozwala programistom na łatwe tworzenie obrazów każdej strony przy minimalnej ilości linii kodu, nawet bez iteracji stron.
Czy mogę używać tabel danych Bootstrap 5 z IronPDF?
Silnik renderujący IronPDF Chrome V8 zapewnia doskonałe wsparcie dla Bootstrap 5 data tables, umożliwiając programistom generowanie profesjonalnych raportów PDF ze złożonymi układami tabelarycznymi. Ten przykład demonstruje nagłówki gradientowe, plakietki stanu, kontrolki paginacji i podsumowania - funkcje, które podkreślają przewagę IronPDF nad tradycyjnymi przeglądarkami PDF, takimi jak PrizmDoc. IronPDF w pełni obsługuje nowoczesne funkcje CSS, w tym układy flexbox, gradienty i responsywny design.
using IronPdf;
var renderer = new ChromePdfRenderer();
string dataTableReport = @"
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<link href='___PROTECTED_URL_132___ rel='stylesheet'>
<style>
.table-header {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 30px;
border-radius: 10px 10px 0 0;
}
.table-container {
background: white;
border-radius: 0 0 10px 10px;
box-shadow: 0 10px 30px rgba(0,0,0,0.1);
overflow: hidden;
}
.table th {
background: #f8f9fa;
font-weight: 600;
text-transform: uppercase;
font-size: 0.85rem;
letter-spacing: 0.5px;
}
.status-badge {
padding: 0.35em 0.65em;
border-radius: 0.25rem;
font-weight: 600;
font-size: 0.75rem;
}
.trend-positive { color: #198754; font-weight: 700; }
.trend-negative { color: #dc3545; font-weight: 700; }
@media print {
.table-container { page-break-inside: avoid; }
}
</style>
</head>
<body class='bg-light'>
<div class='container py-5'>
<div class='table-container'>
<div class='table-header'>
<div class='row align-items-center'>
<div class='col-md-8'>
<h2 class='mb-2'>Sales Performance Report</h2>
<p class='mb-0 opacity-75'>Q4 2024 Regional Analysis</p>
</div>
<div class='col-md-4 text-end'>
<div class='btn-group btn-group-sm'>
<button class='btn btn-light'>Export</button>
<button class='btn btn-light'>Filter</button>
<button class='btn btn-light'>Sort</button>
</div>
</div>
</div>
</div>
<div class='p-4'>
<div class='row mb-3'>
<div class='col-md-4'>
<input type='text' class='form-control form-control-sm' placeholder='Search regions...'>
</div>
<div class='col-md-8 text-end'>
<span class='text-muted small'>Showing 1-10 of 48 results</span>
</div>
</div>
<div class='table-responsive'>
<table class='table table-hover align-middle'>
<thead>
<tr>
<th>Region</th>
<th>Revenue</th>
<th>Units Sold</th>
<th>Growth</th>
<th>Status</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<strong>North America</strong><br>
<small class='text-muted'>USA, Canada, Mexico</small>
</td>
<td>$4,280,000</td>
<td>12,450</td>
<td><span class='trend-positive'>↑ 18.5%</span></td>
<td><span class='status-badge bg-success text-white'>Exceeding</span></td>
<td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
</tr>
<tr>
<td>
<strong>Europe</strong><br>
<small class='text-muted'>EU, UK, Switzerland</small>
</td>
<td>$3,650 000</td>
<td>10,890</td>
<td><span class='trend-positive'>↑ 12.3%</span></td>
<td><span class='status-badge bg-success text-white'>On Track</span></td>
<td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
</tr>
<tr>
<td>
<strong>Asia Pacific</strong><br>
<small class='text-muted'>Japan, Australia, Singapore</small>
</td>
<td>$2,940,000</td>
<td>8,320</td>
<td><span class='trend-positive'>↑ 24.7%</span></td>
<td><span class='status-badge bg-primary text-white'>Growing</span></td>
<td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
</tr>
<tr>
<td>
<strong>Latin America</strong><br>
<small class='text-muted'>Brazil, Argentina, Chile</small>
</td>
<td>$1,580,000</td>
<td>4,670</td>
<td><span class='trend-positive'>↑ 8.9%</span></td>
<td><span class='status-badge bg-info text-white'>Stable</span></td>
<td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
</tr>
<tr>
<td>
<strong>Middle East</strong><br>
<small class='text-muted'>UAE, Saudi Arabia, Israel</small>
</td>
<td>$980,000</td>
<td>2,890</td>
<td><span class='trend-negative'>↓ 3.2%</span></td>
<td><span class='status-badge bg-warning text-dark'>Review</span></td>
<td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
</tr>
</tbody>
<tfoot class='table-light'>
<tr>
<td><strong>Total</strong></td>
<td><strong>$13,430,000</strong></td>
<td><strong>39,220</strong></td>
<td><strong class='trend-positive'>↑ 14.8%</strong></td>
<td colspan='2'></td>
</tr>
</tfoot>
</table>
</div>
<div class='d-flex justify-content-between align-items-center mt-4'>
<div>
<select class='form-select form-select-sm' style='width: auto; display: inline-block;'>
<option>10 per page</option>
<option>25 per page</option>
<option>50 per page</option>
</select>
</div>
<nav>
<ul class='pagination pagination-sm mb-0'>
<li class='page-item disabled'><a class='page-link' href='#'>Previous</a></li>
<li class='page-item active'><a class='page-link' href='#'>1</a></li>
<li class='page-item'><a class='page-link' href='#'>2</a></li>
<li class='page-item'><a class='page-link' href='#'>3</a></li>
<li class='page-item'><a class='page-link' href='#'>Next</a></li>
</ul>
</nav>
</div>
</div>
</div>
<div class='row g-3 mt-4'>
<div class='col-md-3'>
<div class='card text-center'>
<div class='card-body'>
<h3 class='text-primary mb-1'>$13.4M</h3>
<small class='text-muted'>Total Revenue</small>
</div>
</div>
</div>
<div class='col-md-3'>
<div class='card text-center'>
<div class='card-body'>
<h3 class='text-success mb-1'>39,220</h3>
<small class='text-muted'>Units Sold</small>
</div>
</div>
</div>
<div class='col-md-3'>
<div class='card text-center'>
<div class='card-body'>
<h3 class='text-info mb-1'>14.8%</h3>
<small class='text-muted'>Growth Rate</small>
</div>
</div>
</div>
<div class='col-md-3'>
<div class='card text-center'>
<div class='card-body'>
<h3 class='text-warning mb-1'>5</h3>
<small class='text-muted'>Active Regions</small>
</div>
</div>
</div>
</div>
</div>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(dataTableReport);
pdf.SaveAs("data-table-report.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
string dataTableReport = @"
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<link href='___PROTECTED_URL_132___ rel='stylesheet'>
<style>
.table-header {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 30px;
border-radius: 10px 10px 0 0;
}
.table-container {
background: white;
border-radius: 0 0 10px 10px;
box-shadow: 0 10px 30px rgba(0,0,0,0.1);
overflow: hidden;
}
.table th {
background: #f8f9fa;
font-weight: 600;
text-transform: uppercase;
font-size: 0.85rem;
letter-spacing: 0.5px;
}
.status-badge {
padding: 0.35em 0.65em;
border-radius: 0.25rem;
font-weight: 600;
font-size: 0.75rem;
}
.trend-positive { color: #198754; font-weight: 700; }
.trend-negative { color: #dc3545; font-weight: 700; }
@media print {
.table-container { page-break-inside: avoid; }
}
</style>
</head>
<body class='bg-light'>
<div class='container py-5'>
<div class='table-container'>
<div class='table-header'>
<div class='row align-items-center'>
<div class='col-md-8'>
<h2 class='mb-2'>Sales Performance Report</h2>
<p class='mb-0 opacity-75'>Q4 2024 Regional Analysis</p>
</div>
<div class='col-md-4 text-end'>
<div class='btn-group btn-group-sm'>
<button class='btn btn-light'>Export</button>
<button class='btn btn-light'>Filter</button>
<button class='btn btn-light'>Sort</button>
</div>
</div>
</div>
</div>
<div class='p-4'>
<div class='row mb-3'>
<div class='col-md-4'>
<input type='text' class='form-control form-control-sm' placeholder='Search regions...'>
</div>
<div class='col-md-8 text-end'>
<span class='text-muted small'>Showing 1-10 of 48 results</span>
</div>
</div>
<div class='table-responsive'>
<table class='table table-hover align-middle'>
<thead>
<tr>
<th>Region</th>
<th>Revenue</th>
<th>Units Sold</th>
<th>Growth</th>
<th>Status</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<strong>North America</strong><br>
<small class='text-muted'>USA, Canada, Mexico</small>
</td>
<td>$4,280,000</td>
<td>12,450</td>
<td><span class='trend-positive'>↑ 18.5%</span></td>
<td><span class='status-badge bg-success text-white'>Exceeding</span></td>
<td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
</tr>
<tr>
<td>
<strong>Europe</strong><br>
<small class='text-muted'>EU, UK, Switzerland</small>
</td>
<td>$3,650 000</td>
<td>10,890</td>
<td><span class='trend-positive'>↑ 12.3%</span></td>
<td><span class='status-badge bg-success text-white'>On Track</span></td>
<td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
</tr>
<tr>
<td>
<strong>Asia Pacific</strong><br>
<small class='text-muted'>Japan, Australia, Singapore</small>
</td>
<td>$2,940,000</td>
<td>8,320</td>
<td><span class='trend-positive'>↑ 24.7%</span></td>
<td><span class='status-badge bg-primary text-white'>Growing</span></td>
<td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
</tr>
<tr>
<td>
<strong>Latin America</strong><br>
<small class='text-muted'>Brazil, Argentina, Chile</small>
</td>
<td>$1,580,000</td>
<td>4,670</td>
<td><span class='trend-positive'>↑ 8.9%</span></td>
<td><span class='status-badge bg-info text-white'>Stable</span></td>
<td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
</tr>
<tr>
<td>
<strong>Middle East</strong><br>
<small class='text-muted'>UAE, Saudi Arabia, Israel</small>
</td>
<td>$980,000</td>
<td>2,890</td>
<td><span class='trend-negative'>↓ 3.2%</span></td>
<td><span class='status-badge bg-warning text-dark'>Review</span></td>
<td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
</tr>
</tbody>
<tfoot class='table-light'>
<tr>
<td><strong>Total</strong></td>
<td><strong>$13,430,000</strong></td>
<td><strong>39,220</strong></td>
<td><strong class='trend-positive'>↑ 14.8%</strong></td>
<td colspan='2'></td>
</tr>
</tfoot>
</table>
</div>
<div class='d-flex justify-content-between align-items-center mt-4'>
<div>
<select class='form-select form-select-sm' style='width: auto; display: inline-block;'>
<option>10 per page</option>
<option>25 per page</option>
<option>50 per page</option>
</select>
</div>
<nav>
<ul class='pagination pagination-sm mb-0'>
<li class='page-item disabled'><a class='page-link' href='#'>Previous</a></li>
<li class='page-item active'><a class='page-link' href='#'>1</a></li>
<li class='page-item'><a class='page-link' href='#'>2</a></li>
<li class='page-item'><a class='page-link' href='#'>3</a></li>
<li class='page-item'><a class='page-link' href='#'>Next</a></li>
</ul>
</nav>
</div>
</div>
</div>
<div class='row g-3 mt-4'>
<div class='col-md-3'>
<div class='card text-center'>
<div class='card-body'>
<h3 class='text-primary mb-1'>$13.4M</h3>
<small class='text-muted'>Total Revenue</small>
</div>
</div>
</div>
<div class='col-md-3'>
<div class='card text-center'>
<div class='card-body'>
<h3 class='text-success mb-1'>39,220</h3>
<small class='text-muted'>Units Sold</small>
</div>
</div>
</div>
<div class='col-md-3'>
<div class='card text-center'>
<div class='card-body'>
<h3 class='text-info mb-1'>14.8%</h3>
<small class='text-muted'>Growth Rate</small>
</div>
</div>
</div>
<div class='col-md-3'>
<div class='card text-center'>
<div class='card-body'>
<h3 class='text-warning mb-1'>5</h3>
<small class='text-muted'>Active Regions</small>
</div>
</div>
</div>
</div>
</div>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(dataTableReport);
pdf.SaveAs("data-table-report.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
Dim dataTableReport As String = "
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<link href='___PROTECTED_URL_132___ rel='stylesheet'>
<style>
.table-header {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 30px;
border-radius: 10px 10px 0 0;
}
.table-container {
background: white;
border-radius: 0 0 10px 10px;
box-shadow: 0 10px 30px rgba(0,0,0,0.1);
overflow: hidden;
}
.table th {
background: #f8f9fa;
font-weight: 600;
text-transform: uppercase;
font-size: 0.85rem;
letter-spacing: 0.5px;
}
.status-badge {
padding: 0.35em 0.65em;
border-radius: 0.25rem;
font-weight: 600;
font-size: 0.75rem;
}
.trend-positive { color: #198754; font-weight: 700; }
.trend-negative { color: #dc3545; font-weight: 700; }
@media print {
.table-container { page-break-inside: avoid; }
}
</style>
</head>
<body class='bg-light'>
<div class='container py-5'>
<div class='table-container'>
<div class='table-header'>
<div class='row align-items-center'>
<div class='col-md-8'>
<h2 class='mb-2'>Sales Performance Report</h2>
<p class='mb-0 opacity-75'>Q4 2024 Regional Analysis</p>
</div>
<div class='col-md-4 text-end'>
<div class='btn-group btn-group-sm'>
<button class='btn btn-light'>Export</button>
<button class='btn btn-light'>Filter</button>
<button class='btn btn-light'>Sort</button>
</div>
</div>
</div>
</div>
<div class='p-4'>
<div class='row mb-3'>
<div class='col-md-4'>
<input type='text' class='form-control form-control-sm' placeholder='Search regions...'>
</div>
<div class='col-md-8 text-end'>
<span class='text-muted small'>Showing 1-10 of 48 results</span>
</div>
</div>
<div class='table-responsive'>
<table class='table table-hover align-middle'>
<thead>
<tr>
<th>Region</th>
<th>Revenue</th>
<th>Units Sold</th>
<th>Growth</th>
<th>Status</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<strong>North America</strong><br>
<small class='text-muted'>USA, Canada, Mexico</small>
</td>
<td>$4,280,000</td>
<td>12,450</td>
<td><span class='trend-positive'>↑ 18.5%</span></td>
<td><span class='status-badge bg-success text-white'>Exceeding</span></td>
<td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
</tr>
<tr>
<td>
<strong>Europe</strong><br>
<small class='text-muted'>EU, UK, Switzerland</small>
</td>
<td>$3,650 000</td>
<td>10,890</td>
<td><span class='trend-positive'>↑ 12.3%</span></td>
<td><span class='status-badge bg-success text-white'>On Track</span></td>
<td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
</tr>
<tr>
<td>
<strong>Asia Pacific</strong><br>
<small class='text-muted'>Japan, Australia, Singapore</small>
</td>
<td>$2,940,000</td>
<td>8,320</td>
<td><span class='trend-positive'>↑ 24.7%</span></td>
<td><span class='status-badge bg-primary text-white'>Growing</span></td>
<td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
</tr>
<tr>
<td>
<strong>Latin America</strong><br>
<small class='text-muted'>Brazil, Argentina, Chile</small>
</td>
<td>$1,580,000</td>
<td>4,670</td>
<td><span class='trend-positive'>↑ 8.9%</span></td>
<td><span class='status-badge bg-info text-white'>Stable</span></td>
<td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
</tr>
<tr>
<td>
<strong>Middle East</strong><br>
<small class='text-muted'>UAE, Saudi Arabia, Israel</small>
</td>
<td>$980,000</td>
<td>2,890</td>
<td><span class='trend-negative'>↓ 3.2%</span></td>
<td><span class='status-badge bg-warning text-dark'>Review</span></td>
<td><button class='btn btn-sm btn-outline-primary'>Details</button></td>
</tr>
</tbody>
<tfoot class='table-light'>
<tr>
<td><strong>Total</strong></td>
<td><strong>$13,430,000</strong></td>
<td><strong>39,220</strong></td>
<td><strong class='trend-positive'>↑ 14.8%</strong></td>
<td colspan='2'></td>
</tr>
</tfoot>
</table>
</div>
<div class='d-flex justify-content-between align-items-center mt-4'>
<div>
<select class='form-select form-select-sm' style='width: auto; display: inline-block;'>
<option>10 per page</option>
<option>25 per page</option>
<option>50 per page</option>
</select>
</div>
<nav>
<ul class='pagination pagination-sm mb-0'>
<li class='page-item disabled'><a class='page-link' href='#'>Previous</a></li>
<li class='page-item active'><a class='page-link' href='#'>1</a></li>
<li class='page-item'><a class='page-link' href='#'>2</a></li>
<li class='page-item'><a class='page-link' href='#'>3</a></li>
<li class='page-item'><a class='page-link' href='#'>Next</a></li>
</ul>
</nav>
</div>
</div>
</div>
<div class='row g-3 mt-4'>
<div class='col-md-3'>
<div class='card text-center'>
<div class='card-body'>
<h3 class='text-primary mb-1'>$13.4M</h3>
<small class='text-muted'>Total Revenue</small>
</div>
</div>
</div>
<div class='col-md-3'>
<div class='card text-center'>
<div class='card-body'>
<h3 class='text-success mb-1'>39,220</h3>
<small class='text-muted'>Units Sold</small>
</div>
</div>
</div>
<div class='col-md-3'>
<div class='card text-center'>
<div class='card-body'>
<h3 class='text-info mb-1'>14.8%</h3>
<small class='text-muted'>Growth Rate</small>
</div>
</div>
</div>
<div class='col-md-3'>
<div class='card text-center'>
<div class='card-body'>
<h3 class='text-warning mb-1'>5</h3>
<small class='text-muted'>Active Regions</small>
</div>
</div>
</div>
</div>
</div>
</body>
</html>"
Dim pdf = renderer.RenderHtmlAsPdf(dataTableReport)
pdf.SaveAs("data-table-report.pdf")
Ten kod generuje zaawansowany raport tabeli danych z gradientowymi nagłówkami, responsywnymi tabelami, plakietkami stanu i podsumowaniem metryk. Silnik renderujący IronPDF w Chrome zachowuje wszystkie stylizacje Bootstrap, w tym efekty najechania kursorem na tabelę, kolory plakietek i elementy sterujące paginacją - możliwości, które wykraczają poza tradycyjne przeglądarki PDF. Silnik obsługuje również renderowanie JavaScript dla dynamicznej zawartości, niestandardowe czcionki oraz znaki międzynarodowe UDF-8.
Kluczowe zalety w porównaniu z przeglądarką PrizmDoc:
- Bezpośrednie renderowanie tabeli HTML bez konwersji
- Pełna obsługa komponentów Bootstrap
- Gradientowe tła i nowoczesny CSS
- Responsywne układy tabel z odpowiednią paginacją
- Obsługa złożonych wykresów JavaScript
- Obsługa CSS mediów PRINT
Aby uzyskać więcej informacji na temat generowania PDF w Bootstrap, zobacz pełną dokumentację renderowania. Programiści mogą również zapoznać się z konwersją z Angular do PDF i innymi obsługą frameworka JavaScript.## How Do License Costs Compare Between IronPDF and PrizmDoc Viewer?
Po zapoznaniu się ze strukturą techniczną i dostępnymi funkcjami obu komponentów, poniżej przedstawiono ceny licencji. Ma to kluczowe znaczenie, ponieważ programiści dążą do spełnienia wymagań w ramach ograniczeń budżetowych.
Jakie są opcje licencyjne IronPDF?
Licencje IronPDF zaczynają się od $699 dla pojedynczego projektu z jednym deweloperem. IronPDF zapewnia elastyczne opcje licencjonowania, w tym licencje deweloperskie, licencje wdrożeniowe oraz opcje rozszerzeń dla bieżącego wsparcia i aktualizacji.
W przypadku programistów w firmach lub agencjach obsługujących wielu klientów, licencje również zaczynają się od 699 USD i mogą być dostosowywane w zależności od wielkości zespołu i liczby projektów. IronPDF oferuje ścieżki aktualizacji licencji w miarę rozwoju potrzeb.
Poniższe licencje wymagają jednorazowej opłaty:
| Liczba programistów | Cena |
|---|---|
| 1-5 | $699 |
| 6-10 | $799 |
| 11-20 | $899 |
| 21-50 | $1,199 |
| Bez ograniczeń | $1,199 |
- Dla firm z wieloma lokalizacjami, licencje zaczynają się od 1199$
- W przypadku usług SaaS, licencje zaczynają się od 1099$
- W przypadku redystrybucji bez opłat licencyjnych OEM, licencje zaczynają się od 1599$
Uwaga: Wszystkie powyższe pakiety licencyjne obejmują 1 rok wsparcia i aktualizacji.
Czytaj więcej o wszystkich dostępnych pakietach licencyjnych IronPDF. Programiści mogą również zastosować klucze licencyjne na różne sposoby, w tym Web.config i zmienne środowiskowe.
Jakie są opcje licencji przeglądarki PrizmDoc?
Ile kosztuje samodzielnie hostowany `PrizmDoc`?
W przypadku samodzielnie zarządzanych serwerów cena licencji wynosi 7 900 USD rocznie ze standardowym wsparciem.
Read More o wszystkich dostępnych pakietach dla PrizmDoc Viewer.
Ile kosztuje `PrizmDoc` oparty na chmurze?
Niniejsza licencja obejmuje oparte na chmurze usługi PrizmDoc Viewer, skalowane w oparciu o liczbę transakcji.
Terminologie:
Transaction odnosi się do wysyłania żądania do serwera PrizmDoc Viewer i odbierania danych wyjściowych (dokumentu wynikowego).
Pakiety przedpłacone oznacza jednorazową płatność i otrzymywanie transakcji, które nie wygasają.
| Liczba transakcji | Pakiety przedpłacone | Miesięcznie | Rocznie |
|---|---|---|---|
| 200 | $18 | ||
| 1 000 | $89 | ||
| 2 000 | $119 | ||
| 6 000 | $254 | $169 | 1 859 USD (6 000 transakcji miesięcznie) |
| 12 000 | $434 | $289 | 3 179 USD (12 000 transakcji miesięcznie) |
| 25 000 | $699 | $499 | 5 459 USD (25 000 transakcji miesięcznie) |
| 50 000 | $1,199 | $799 | 8 789 USD (50 000 transakcji miesięcznie) |
| 100 000 | $1,199 | $1,199 | 10 989 USD (100 000 transakcji miesięcznie) |
| 200 000 | $2,549 | $1,699 | 19 188 USD (200 000 transakcji miesięcznie) |
| 300 000 | $3,299 | $2,199 | 25 188 USD (300 000 transakcji miesięcznie) |
| 400 000 | $4,049 | $2,699 | 31 188 USD (400 000 transakcji miesięcznie) |
| 500 000 | $4,799 | $3,199 | 37 188 USD (500 000 transakcji miesięcznie) |
Szybki dostęp do samouczka
Pobierz podręcznik szybkiego startu C# IronPDF
Bezpłatny przewodnik w formacie PDF, który ułatwia tworzenie plików PDF dla platformy .NET, zawierający instrukcje dotyczące typowych funkcji oraz przykłady manipulowania, edytowania, generowania i zapisywania plików PDF w językach C# i VB.NET na potrzeby projektów.
Pobierz przewodnikZapoznaj się z dokumentacją API IronPDF
Zapoznaj się z dokumentacją API biblioteki IronPDF C#, zawierającą szczegółowe informacje na temat wszystkich funkcji, klas, pól metod, przestrzeni nazw i wyliczeń IronPDF.
Zobacz Dokumentację APIPrizmDoc firmy Accusoft jest zastrzeżonym znakiem towarowym odpowiedniego właściciela. Ta strona nie jest powiązana, wspierana ani sponsorowana przez Accusoft's PrizmDoc Viewer. Wszystkie nazwy produktów, logo i marki są własnością ich odpowiednich właścicieli. Porównania mają charakter wyłącznie informacyjny i odzwierciedlają informacje dostępne publicznie w momencie pisania.Często Zadawane Pytania
Jak mogę przekonwertować HTML na PDF w języku C#?
Możesz użyć metody RenderHtmlAsPdf biblioteki IronPDF do konwersji ciągów HTML na pliki PDF. Możesz również konwertować pliki HTML na pliki PDF za pomocą metody RenderHtmlFileAsPdf.
Jakie są zalety korzystania z IronPDF w porównaniu do PrizmDoc Viewer dla konwersji PDF?
IronPDF oferuje proste lokalne rozwiązanie do renderowania PDF, obsługujące pracę offline bez konieczności programowania asynchronicznego. W przeciwieństwie do tego, PrizmDoc Viewer działa poprzez REST API, co wymaga połączenia internetowego do interakcji zdalnym serwerem.
Czy mogę łączyć wiele dokumentów PDF za pomocą biblioteki PDF?
Tak, dzięki IronPDF możesz łączyć wiele PDF za pomocą metody MergePdf, co pozwala na bezproblemowe łączenie dokumentów.
Jak IronPDF obsługuje konwersję PDF do obrazu?
IronPDF pozwala łatwo konwertować strony PDF do obrazów, korzystając z wbudowanych metod, oferując uproszczone podejście w porównaniu do innego oprogramowania.
Jakie są opcje dostosowywania nagłówków i stopki w IronPDF?
IronPDF zapewnia rozbudowane funkcje ustawiania właściwości nagłówków i stopek przy użyciu prostych struktur programowania, co ułatwia dostosowywanie dokumentów.
Czy IronPDF nadaje się do przetwarzania PDF offline?
Tak, IronPDF wspiera przetwarzanie PDF offline, co oznacza, że możesz pracować bez połączenia internetowego, w przeciwieństwie do niektórych innych rozwiązań wymagających interakcji zdalnym serwerem.
Jak wygląda struktura kosztów licencji IronPDF?
Licencje IronPDF zaczynają się od $699 za jeden projekt z jednym deweloperem, z możliwością skalowania dla firm i usług SaaS, oferując opłacalne rozwiązanie płatności jednorazowej.
Czy mogę rozwijać projekty z użyciem IronPDF za darmo?
Tak, IronPDF jest darmowy do celów rozwojowych bez limitu czasowego i oferuje 30-dniowy okres próbny na wdrożenie projektu na żywo.
Jak PrizmDoc Viewer obsługuje konwersję HTML do PDF?
PrizmDoc Viewer używa REST API do konwersji HTML do PDF, co wymaga programowania asynchronicznego i połączenia internetowego do interakcji zdalnym serwerem.
Jakie są wymagania systemowe dla hostingu serwera PrizmDoc?
Samodzielne hostowanie serwera PrizmDoc wymaga minimum 32 GB RAM i 4-rdzeniowego procesora CPU, aby sprostać wymaganiom przetwarzania.
Czy IronPDF jest w pełni kompatybilny z .NET 10?
Tak. IronPDF wspiera .NET 10 (oraz .NET 9, 8, 7, 6, .NET Core, .NET Standard i .NET Framework). Instalacja odbywa się za pośrednictwem NuGet, działa na Windows, Linux i macOS i używa natywnego renderera opartego na Chrome do zapewnienia perfekcyjnego renderowania HTML do PDF w aplikacjach .NET 10.












