Tworzenie PDF za pomocą Aspose C# i IronPDF
Full Comparison
Looking for a detailed feature-by-feature breakdown? See how IronPDF stacks up against Aspose PDF on pricing, HTML support, and licensing.
Zarówno Aspose PDF, jak i IronPDF umożliwiają programowe tworzenie dokumentów PDF w języku C#, przy czym IronPDF oferuje prostszą konwersję HTML do PDF przy użyciu renderowania Chrome, podczas gdy Aspose PDF zapewnia szczegółową kontrolę dzięki modelowi obiektowemu dokumentu.

Jakie są wymagania wstępne?
Przed rozpoczęciem tworzenia pliku PDF w języku C# upewnij się, że masz:
- .NET 10 lub zgodne środowisko uruchomieniowe .NET 6+
- Visual Studio 2022 lub kompatybilne środowisko IDE
- Podstawowa znajomość programowania w języku C#
- Skonfigurowany menedżer pakietów NuGet
Obie biblioteki obsługują środowiska Windows, Linux i macOS, przy czym dla każdej platformy obowiązują specyficzne wytyczne dotyczące instalacji. IronPDF obsługuje dodatkowo kontenery Docker oraz wszystkie główne platformy chmurowe.

Jak zainstalować Aspose PDF i IronPDF?
Jak zainstalować Aspose PDF za pomocą konsoli menedżera pakietów?
Otwórz konsolę menedżera pakietów w Visual Studio i uruchom:
Install-Package Aspose.PDF
Install-Package Aspose.PDF
Instalacja pobiera Aspose.PDF wraz z jego zależnościami. Biblioteka wymaga około 150 MB miejsca na dysku i zawiera kompletną dokumentację. W przypadku zaawansowanych scenariuszy instalacji z niestandardowymi źródłami pakietów może być konieczne ręczne skonfigurowanie dodatkowych zależności.

Jak zainstalować IronPDF za pomocą NuGet?
Użyj konsoli menedżera pakietów lub interfejsu CLI platformy .NET:
Install-Package IronPdf
Install-Package IronPdf
dotnet add package IronPdf
dotnet add package IronPdf
Instalacja IronPDF automatycznie zawiera silnik renderujący Chrome oraz wszystkie niezbędne zależności. W przypadku wdrożeń Docker może być wymagana dodatkowa konfiguracja specyficzna dla systemu Linux w celu zapewnienia prawidłowego renderowania.

Dlaczego IronPDF zawiera wbudowany silnik Chrome?
IronPDF zawiera wbudowany silnik Chrome, który zapewnia doskonałe renderowanie HTML w systemach Windows, Linux, macOS i Docker. Zapewnia to renderowanie z dokładnością co do piksela, zgodne z wyświetlaniem w przeglądarce, w tym obsługę nowoczesnych CSS, JavaScript i czcionek internetowych.

Jak utworzyć swój pierwszy dokument PDF?
Tworzenie plików PDF przy użyciu obu bibliotek ujawnia ich zasadniczo odmienne filozofie. Aspose tworzy dokumenty za pomocą jawnego modelu obiektowego, podczas gdy IronPDF konwertuje HTML bezpośrednio do formatu PDF przy użyciu przeglądarki Chrome. Poniższe przykłady pokazują te podejścia obok siebie, dzięki czemu można ocenić, które z nich pasuje do danego projektu.
W jaki sposób Aspose PDF tworzy dokumenty?
using Aspose.Pdf;
using Aspose.Pdf.Text;
// Create new instance of Document class
var document = new Document();
// Add pages to the document object
var page = document.Pages.Add();
// Create new TextFragment with Hello World text
var textFragment = new TextFragment("Hello World!");
textFragment.TextState.FontSize = 24;
// Add text to paragraphs collection
page.Paragraphs.Add(textFragment);
// Save the generated PDF document
document.Save("output.pdf");
using Aspose.Pdf;
using Aspose.Pdf.Text;
// Create new instance of Document class
var document = new Document();
// Add pages to the document object
var page = document.Pages.Add();
// Create new TextFragment with Hello World text
var textFragment = new TextFragment("Hello World!");
textFragment.TextState.FontSize = 24;
// Add text to paragraphs collection
page.Paragraphs.Add(textFragment);
// Save the generated PDF document
document.Save("output.pdf");
Imports Aspose.Pdf
Imports Aspose.Pdf.Text
' Create new instance of Document class
Dim document As New Document()
' Add pages to the document object
Dim page As Page = document.Pages.Add()
' Create new TextFragment with Hello World text
Dim textFragment As New TextFragment("Hello World!")
textFragment.TextState.FontSize = 24
' Add text to paragraphs collection
page.Paragraphs.Add(textFragment)
' Save the generated PDF document
document.Save("output.pdf")
Ten kod tworzy dokumenty PDF poprzez budowanie modelu obiektowego dokumentu. Tworzysz nowy dokument, dodajesz strony do kolekcji, a następnie dodajesz treść do tych stron. Klasa Document stanowi podstawę, a akapity zawierają treść. Podejście to wymaga zrozumienia hierarchii obiektów Aspose oraz wyraźnego zarządzania czcionkami. Oficjalna dokumentacja Aspose obejmuje pełny interfejs API oparty na DOM, dostępny na stronie aspose.com.
Jak wygląda plik PDF wygenerowany przez Aspose?

W jaki sposób IronPDF tworzy dokumenty?
using IronPdf;
// Create new instance of ChromePdfRenderer
var renderer = new ChromePdfRenderer();
// Convert HTML string to PDF file
var html = "<h1>Hello World!</h1>";
var pdf = renderer.RenderHtmlAsPdf(html);
// Save PDF files using SaveAs method
pdf.SaveAs("output.pdf");
using IronPdf;
// Create new instance of ChromePdfRenderer
var renderer = new ChromePdfRenderer();
// Convert HTML string to PDF file
var html = "<h1>Hello World!</h1>";
var pdf = renderer.RenderHtmlAsPdf(html);
// Save PDF files using SaveAs method
pdf.SaveAs("output.pdf");
Imports IronPdf
' Create new instance of ChromePdfRenderer
Dim renderer As New ChromePdfRenderer()
' Convert HTML string to PDF file
Dim html As String = "<h1>Hello World!</h1>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
' Save PDF files using SaveAs method
pdf.SaveAs("output.pdf")
IronPDF stosuje inne podejście — renderuje HTML bezpośrednio do formatu PDF przy użyciu przeglądarki Chrome. Pozwala to na pisanie standardowego kodu HTML i jego dokładne renderowanie w końcowym dokumencie. Można również renderować z lokalnych plików HTML lub adresów URL wskazujących na aktywne strony internetowe.
Jak wygląda wynik działania IronPDF?

Jak stworzyć prawdziwą fakturę w formacie PDF?
Generowanie faktur to jeden z najczęstszych przypadków użycia plików PDF w aplikacjach biznesowych. Poniższe przykłady przedstawiają prostą fakturę z tabelą pozycji. Porównanie tych dwóch podejść jasno pokazuje kompromisy między kontrolą modelu obiektowego a prostotą opartą na HTML.
Jak utworzyć fakturę za pomocą Aspose PDF?
using Aspose.Pdf;
using Aspose.Pdf.Text;
// Create new Document instance
var document = new Document();
var page = document.Pages.Add();
// Add title text
var title = new TextFragment("INVOICE");
title.TextState.FontSize = 28;
title.HorizontalAlignment = HorizontalAlignment.Center;
page.Paragraphs.Add(title);
// Create table object for invoice items
var table = new Table();
table.ColumnWidths = "200 100 100";
// Add header row to table
var headerRow = table.Rows.Add();
headerRow.Cells.Add("Description");
headerRow.Cells.Add("Quantity");
headerRow.Cells.Add("Price");
// Add data rows
var dataRow = table.Rows.Add();
dataRow.Cells.Add("Product A");
dataRow.Cells.Add("2");
dataRow.Cells.Add("$50.00");
// Add table to page paragraphs
page.Paragraphs.Add(table);
document.Save("invoice.pdf");
using Aspose.Pdf;
using Aspose.Pdf.Text;
// Create new Document instance
var document = new Document();
var page = document.Pages.Add();
// Add title text
var title = new TextFragment("INVOICE");
title.TextState.FontSize = 28;
title.HorizontalAlignment = HorizontalAlignment.Center;
page.Paragraphs.Add(title);
// Create table object for invoice items
var table = new Table();
table.ColumnWidths = "200 100 100";
// Add header row to table
var headerRow = table.Rows.Add();
headerRow.Cells.Add("Description");
headerRow.Cells.Add("Quantity");
headerRow.Cells.Add("Price");
// Add data rows
var dataRow = table.Rows.Add();
dataRow.Cells.Add("Product A");
dataRow.Cells.Add("2");
dataRow.Cells.Add("$50.00");
// Add table to page paragraphs
page.Paragraphs.Add(table);
document.Save("invoice.pdf");
Imports Aspose.Pdf
Imports Aspose.Pdf.Text
' Create new Document instance
Dim document As New Document()
Dim page As Page = document.Pages.Add()
' Add title text
Dim title As New TextFragment("INVOICE")
title.TextState.FontSize = 28
title.HorizontalAlignment = HorizontalAlignment.Center
page.Paragraphs.Add(title)
' Create table object for invoice items
Dim table As New Table()
table.ColumnWidths = "200 100 100"
' Add header row to table
Dim headerRow As Row = table.Rows.Add()
headerRow.Cells.Add("Description")
headerRow.Cells.Add("Quantity")
headerRow.Cells.Add("Price")
' Add data rows
Dim dataRow As Row = table.Rows.Add()
dataRow.Cells.Add("Product A")
dataRow.Cells.Add("2")
dataRow.Cells.Add("$50.00")
' Add table to page paragraphs
page.Paragraphs.Add(table)
document.Save("invoice.pdf")
Interfejs API Aspose PDF .NET wymaga programowego tworzenia każdego elementu. Tworzysz obiekt dokumentu, dodajesz strony, a następnie dodajesz treść do kolekcji akapitów. Takie podejście zapewnia wyraźne korzyści, gdy potrzebna jest precyzyjna kontrola, ale wymaga więcej kodu do uzyskania złożonych układów. Aby dodać nagłówki i stopki lub ustawić niestandardowe marginesy, przed zapisaniem należy zainicjować dodatkowe obiekty konfiguracyjne.
Jak utworzyć fakturę za pomocą IronPDF?
using IronPdf;
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;
// HTML string with invoice content
var html = @"
<html>
<head>
<style>
table { width: 100%; }
th, td { padding: 8px; }
</style>
</head>
<body>
<h1>INVOICE</h1>
<table>
<tr><th>Description</th><th>Quantity</th><th>Price</th></tr>
<tr><td>Product A</td><td>2</td><td>$50.00</td></tr>
</table>
</body>
</html>";
// Generate PDF from HTML
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("invoice.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;
// HTML string with invoice content
var html = @"
<html>
<head>
<style>
table { width: 100%; }
th, td { padding: 8px; }
</style>
</head>
<body>
<h1>INVOICE</h1>
<table>
<tr><th>Description</th><th>Quantity</th><th>Price</th></tr>
<tr><td>Product A</td><td>2</td><td>$50.00</td></tr>
</table>
</body>
</html>";
// Generate PDF from HTML
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("invoice.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.MarginTop = 25
renderer.RenderingOptions.MarginBottom = 25
' HTML string with invoice content
Dim html As String = "
<html>
<head>
<style>
table { width: 100%; }
th, td { padding: 8px; }
</style>
</head>
<body>
<h1>INVOICE</h1>
<table>
<tr><th>Description</th><th>Quantity</th><th>Price</th></tr>
<tr><td>Product A</td><td>2</td><td>$50.00</td></tr>
</table>
</body>
</html>"
' Generate PDF from HTML
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("invoice.pdf")
Dzięki IronPDF piszesz standardowy kod HTML, a silnik renderujący zajmuje się resztą. Twoja aplikacja może natychmiast odwoływać się do zewnętrznych arkuszy stylów, dodawać obrazy i zawierać linki. Opcje renderowania zapewniają precyzyjną kontrolę nad wynikiem, w tym niestandardowe rozmiary papieru i orientację strony.
Jak wygląda wydruk faktury?

Jakie zaawansowane funkcje są dostępne?
Obie biblioteki oferują możliwości znacznie wykraczające poza podstawowe tworzenie plików PDF. Zrozumienie tych zaawansowanych funkcji pomoże Ci określić, która biblioteka najlepiej odpowiada Twoim wymaganiom.
Jak konwertować strony internetowe do formatu PDF?
using IronPdf;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://example.com");
pdf.SaveAs("website.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://example.com");
pdf.SaveAs("website.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://example.com")
pdf.SaveAs("website.pdf")
IronPDF doskonale radzi sobie z konwersją adresów URL do formatu PDF, obsługując złożone strony internetowe z wykorzystaniem JavaScript, plików cookie i uwierzytelniania. Silnik Chrome zapewnia dokładne renderowanie nowoczesnych aplikacji internetowych, w tym aplikacji jednostronicowych zbudowanych przy użyciu Angular lub React.
Jak zwiększyć bezpieczeństwo plików PDF?
using IronPdf;
var renderer = new ChromePdfRenderer();
var html = "<h1>Confidential Report</h1>";
var pdf = renderer.RenderHtmlAsPdf(html);
// Apply password protection and print rights
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;
pdf.SaveAs("secured.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
var html = "<h1>Confidential Report</h1>";
var pdf = renderer.RenderHtmlAsPdf(html);
// Apply password protection and print rights
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;
pdf.SaveAs("secured.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
Dim html As String = "<h1>Confidential Report</h1>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
' Apply password protection and print rights
pdf.SecuritySettings.UserPassword = "user123"
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights
pdf.SaveAs("secured.pdf")
IronPDF oferuje intuicyjne metody dodawania zabezpieczeń i podpisów cyfrowych do dokumentów PDF. Można również łączyć lub dzielić pliki oraz wyodrębniać tekst i obrazy do dalszego przetwarzania.
Jak wygląda zabezpieczony plik PDF?

Jakie inne zaawansowane funkcje obsługuje IronPDF?
IronPDF obsługuje wiele dodatkowych scenariuszy, w tym:
- Zgodność z formatem PDF/A do długoterminowej archiwizacji
- Kompresja plików PDF w celu zmniejszenia rozmiaru plików
- Znakowanie wodne i stemplowanie
- Tworzenie i wypełnianie formularzy
- Numeracja stron i generowanie spisu treści
Jak wypada porównanie IronPDF i Aspose PDF?
Poniższa tabela podsumowuje kluczowe różnice między IronPDF a Aspose PDF, aby pomóc Ci w podjęciu szybkiej decyzji:
| Funkcja | IronPDF | Aspose PDF |
|---|---|---|
| Renderowanie HTML do PDF | Tak — oparty na przeglądarce Chrome, z idealną zgodnością pikselową | Ograniczone |
| Konwersja adresów URL do formatu PDF | Tak — obsługuje JavaScript i pliki cookie | Nie |
| Interfejs API modelu obiektowego dokumentu | Częściowe | Tak — pełna kontrola nad każdym elementem |
| Obsługa wielu platform | Windows, Linux, macOS, Docker | Windows, Linux, macOS |
| Podpisy cyfrowe | Tak | Tak |
| Zgodność z PDF/A | Tak | Tak |
| Cena wywoławcza licencji | $liteLicense (wraz z pomocą techniczną) | 1199 USD (plus wsparcie techniczne) |
| Bezpłatna wersja próbna | Tak — wszystkie funkcje, z znakiem wodnym | Tak — wersja próbna |
Porównanie pokazuje, że IronPDF jest lepszym wyborem, gdy Twój proces pracy koncentruje się na treściach HTML, stronach internetowych lub nowoczesnych technologiach front-endowych. Aspose PDF pozostaje konkurencyjny w przypadku czysto programowego tworzenia dokumentów, gdzie priorytetem jest szczegółowa kontrola poszczególnych elementów.
Którą bibliotekę wybrać?
Kiedy warto korzystać z IronPDF?
IronPDF to idealne rozwiązanie, gdy potrzebujesz:
- Konwersja HTML do PDF przy użyciu znanych technologii internetowych
- Renderowanie pełnych stron internetowych, w tym treści opartych na JavaScript
- Wdrażaj w środowiskach Docker lub chmurowych, takich jak Azure lub AWS
- Szybsze cykle rozwoju dzięki prostszemu API
- Stwórz wynik, który dokładnie odpowiada renderowaniu w przeglądarce

Kiedy warto korzystać z Aspose PDF?
Aspose PDF dla .NET sprawdza się dobrze, gdy:
- Twórz pliki PDF całkowicie od podstaw za pomocą programowego modelu obiektowego dokumentu
- Potrzebna jest szczegółowa kontrola nad układem każdego elementu
- Twórz aplikacje zorientowane na dokumenty, które nie opierają się na kodzie źródłowym HTML
- Wymagana zgodność z określonym formatem PDF, niezależnie od silnika renderującego
Szczegółowy opis możliwości Aspose PDF jest dostępny w rejestrze NuGet firmy Microsoft dla Aspose.PDF.
Jakie są kwestie związane z wydajnością?
Silnik Chrome firmy IronPDF zapewnia doskonałą wydajność renderowania HTML, natomiast Aspose PDF może działać lepiej w przypadku generowania czysto programowego bez żadnego źródła HTML. W przypadku operacji asynchronicznych obie biblioteki oferują interfejsy API oparte na zadaniach. Planując wdrożenia partii na dużą skalę, należy wziąć pod uwagę zużycie pamięci i limity czasu renderowania, a podczas skalowania w górę zapoznać się z wytycznymi dotyczącymi rozwiązywania problemów z wydajnością IronPDF.
Jak wypadają te licencje w porównaniu?
IronPDF oferuje prosty system licencjonowania już od $799, obejmujący wsparcie techniczne i aktualizacje. Bezpłatna wersja próbna zawiera wszystkie funkcje z znakiem wodnym do celów programistycznych i testowych. Wdrażanie licencji jest proste dzięki wielu opcjom konfiguracyjnym.

Ceny Aspose PDF zaczynają się od 1199 USD, a wsparcie techniczne i aktualizacje są rozliczane osobno. Obie biblioteki oferują wersje próbne do przetestowania przed podjęciem decyzji o zakupie. IronPDF oferuje bardziej elastyczne opcje, w tym modele licencyjne oparte na projektach i SaaS, co ułatwia planowanie budżetu dla rozwijających się zespołów.
Co należy zrobić dalej?
Obie biblioteki skutecznie tworzą dokumenty PDF w języku C#. Aspose PDF zapewnia precyzyjną kontrolę dzięki modelowi obiektowemu dokumentów, natomiast IronPDF wyróżnia się w konwersji HTML na PDF przy użyciu znanych technologii internetowych.
W przypadku większości nowoczesnych aplikacji .NET 10 IronPDF oferuje większą wartość dzięki intuicyjnemu interfejsowi API, doskonałemu renderowaniu HTML oraz wbudowanej obsłudze. Niezależnie od tego, czy chcesz ładować strony internetowe, dodawać obrazy czy tworzyć złożone układy, podejście IronPDF oparte na przeglądarce Chrome znacznie upraszcza ten proces. Zestaw funkcji biblioteki obejmuje wszystko, od podstawowego tworzenia plików PDF po zaawansowane podpisywanie i zabezpieczenia.
IronPDF obsługuje różne scenariusze wdrażania, w tym Azure Functions, AWS Lambda i aplikacje Blazor. W razie pytań do dyspozycji są zespół wsparcia technicznego oraz Dokumentacja API.
Zacznij od bezpłatnej wersji próbnej IronPDF, aby sprawdzić, czy spełnia ona Twoje potrzeby w zakresie generowania plików PDF. Możesz uzyskać dostęp do wszystkich funkcji umożliwiających tworzenie, konwertowanie i edycję plików PDF w swoim rozwiązaniu .NET bez żadnych zobowiązań z góry.
Aby porównać IronPDF z innymi popularnymi alternatywami, zapoznaj się z przewodnikami IronPDF vs. iTextSharp oraz IronPDF vs. PdfSharp.
Często Zadawane Pytania
Jaki jest główny cel używania Aspose C# i IronPDF do tworzenia plików PDF?
Głównym celem korzystania z Aspose C# i IronPDF jest programowe tworzenie plików PDF dla nowoczesnych aplikacji .NET, takich jak generowanie faktur, raportów lub konwersja treści internetowych do formatu PDF.
W jaki sposób IronPDF usprawnia tworzenie plików PDF w aplikacjach .NET?
IronPDF usprawnia tworzenie plików PDF w aplikacjach .NET, zapewniając kompleksowe narzędzia i przykłady kodu, które upraszczają ten proces, ułatwiając programistom generowanie plików PDF i manipulowanie nimi.
Czy mogę używać IronPDF do konwersji treści internetowych do formatu PDF?
Tak, IronPDF pozwala na płynną konwersję treści internetowych do formatu PDF, co idealnie nadaje się do tworzenia dokładnych i profesjonalnie wyglądających dokumentów na podstawie źródeł HTML.
Jakie są typowe przykłady zastosowań generowania plików PDF za pomocą IronPDF?
Typowe zastosowania generowania plików PDF za pomocą IronPDF obejmują tworzenie faktur, generowanie raportów oraz konwersję stron internetowych lub treści HTML na dokumenty PDF.
Czy IronPDF oferuje kompletne przykłady kodu dla programistów?
Tak, IronPDF udostępnia kompletne przykłady kodu, aby pomóc programistom w efektywnym korzystaniu z biblioteki do tworzenia plików PDF i zarządzania nimi.
Czy możliwe jest zintegrowanie IronPDF z innymi bibliotekami .NET w celu zwiększenia funkcjonalności?
Tak, IronPDF można zintegrować z innymi bibliotekami .NET, takimi jak Aspose C#, w celu zwiększenia funkcjonalności i możliwości tworzenia oraz edycji plików PDF.
Jakie są zalety korzystania z IronPDF w porównaniu z innymi bibliotekami PDF?
Zalety korzystania z IronPDF obejmują łatwość obsługi, obszerną dokumentację oraz dostępność kompletnych przykładów kodu, co sprawia, że jest to wszechstronny wybór dla programistów.
Czy IronPDF radzi sobie ze złożonymi zadaniami związanymi z tworzeniem plików PDF, takimi jak dodawanie znaków wodnych lub nagłówków?
Tak, IronPDF może obsługiwać złożone zadania związane z generowaniem plików PDF, w tym dodawanie znaków wodnych, nagłówków i stopek do dokumentów, zapewniając elastyczność w dostosowywaniu dokumentów.
Czy IronPDF jest odpowiedni dla początkujących programistów .NET?
IronPDF jest odpowiedni zarówno dla początkujących, jak i doświadczonych programistów, ponieważ oferuje przyjazne dla użytkownika funkcje oraz szczegółową dokumentację, która prowadzi użytkowników przez proces tworzenia plików PDF.
W jaki sposób IronPDF zapewnia jakość generowanych dokumentów PDF?
IronPDF zapewnia wysoką jakość dokumentów PDF, oferując solidne narzędzia do precyzyjnej kontroli układu oraz obsługę szerokiego zakresu funkcji i standardów PDF.




