Przejdź do treści stopki
KORZYSTANIE Z IRONPDF

Dodaj nagłówek i stopkę w PDF przy użyciu iTextSharp i IronPDF w C# z przykładem

Full Comparison

Looking for a detailed feature-by-feature breakdown? See how IronPDF stacks up against Itext on pricing, HTML support, and licensing.

View Full Comparison

Dodawanie nagłówków i stopek do dokumentów PDF w języku C

Dodawanie nagłówków i stopek do dokumentów PDF jest niezbędne do tworzenia profesjonalnych raportów, faktur i dokumentów biznesowych. Programiści poszukujący rozwiązań iTextSharp wykorzystujących PdfPageEventHelper i metodę OnEndPage przekonają się, że nowoczesne biblioteki .NET oferują znacznie prostsze sposoby osiągnięcia tych samych rezultatów.

W niniejszym przewodniku pokazano, jak dodawać nagłówki i stopki w plikach PDF przy użyciu języka C#, porównując tradycyjne podejście iText 7 z zwięzłym interfejsem API IronPDF. Na koniec zrozumiesz obie implementacje — od utworzenia nowego Document po wygenerowanie ostatecznego pliku PDF — i będziesz mógł wybrać podejście, które najlepiej odpowiada wymaganiom Twojego projektu.

Jak dodać nagłówek i stopkę do pliku PDF przy użyciu iTextSharp i IronPDF w języku C# wraz z przykładem: Obraz 1 – IronPDF

Dlaczego nagłówki i stopki w plikach PDF mają znaczenie w profesjonalnych dokumentach?

Nagłówki i stopki pełnią kluczowe funkcje w profesjonalnych dokumentach PDF. Zapewniają spójny wizerunek marki dzięki logo, umożliwiają nawigację po stronach za pomocą numerów stron, wyświetlają ważne metadane, takie jak daty i tytuły dokumentów, oraz potwierdzają autentyczność dokumentów poprzez znaczniki czasu i informacje o wersji.

W środowiskach korporacyjnych nagłówki i stopki często mają znaczenie prawne. Raporty finansowe wymagają znaczników czasu na potrzeby ścieżek audytu. Umowy wymagają numeracji stron w celu zapewnienia kompletności. Dokumenty wewnętrzne mogą wymagać umieszczenia informacji o poufności na każdej stronie. Spełnienie tych wymagań programowo wymaga biblioteki PDF, która niezawodnie obsługuje wstawianie treści na poziomie strony.

Główne powody, dla których warto programowo dodawać nagłówki i stopki, to:

  • Zgodność z audytem — znaczniki czasu i numery wersji na każdej stronie spełniają wymogi regulacyjne
  • Spójność marki — logo firmy i stylistyka stosowane jednolicie we wszystkich generowanych dokumentach
  • Nawigacja — numery stron i tytuły sekcji pomagają czytelnikom szybko znaleźć informacje
  • Autentyczność — nazwisko autora, data utworzenia i identyfikator dokumentu zapobiegają sporom dotyczącym integralności dokumentu

Jak dodać nagłówek i stopkę w pliku PDF przy użyciu iTextSharp i IronPDF w języku C# wraz z przykładem: Ilustracja 2 – Funkcje

Jak dodać nagłówek i stopkę tekstu w języku C#?

IronPDF zapewnia najbardziej bezpośrednie podejście do dodawania nagłówków i stopek do dokumentów PDF w aplikacjach .NET. Używając klasy ChromePdfRenderer w połączeniu z TextHeaderFooter lub HtmlHeaderFooter, można generować nagłówki i stopki przy użyciu minimalnej ilości kodu — nie ma potrzeby ręcznego tworzenia oddzielnych komórek ani zarządzania obiektem contentbyte.

Przed napisaniem jakiegokolwiek kodu dodaj IronPDF do swojego projektu za pomocą NuGet:

Install-Package IronPdf
dotnet add package IronPdf
Install-Package IronPdf
dotnet add package IronPdf
SHELL

Biblioteka nie wymaga żadnych zewnętrznych zależności i działa natychmiast po instalacji. Jest przeznaczony dla platform .NET 5, 6, 7, 8 i 10 i działa na systemach Windows, Linux oraz macOS bez konieczności konfiguracji specyficznej dla danej platformy.

W starszych wzorcach iTextSharp programiści tworzyli metody pomocnicze, takie jak private static void AddContent(), aby ręcznie wstawiać logikę nagłówków i stopek. IronPDF całkowicie eliminuje potrzebę stosowania takich szablonowych rozwiązań.

Oto kompletny przykład, który dodaje zarówno nagłówek, jak i stopkę do pliku PDF:

using IronPdf;

// Initialize the PDF renderer
var renderer = new ChromePdfRenderer();

// Configure the text header
renderer.RenderingOptions.TextHeader = new TextHeaderFooter
{
    CenterText = "Quarterly Sales Report",
    DrawDividerLine = true,
    FontSize = 14
};

// Configure the text footer with page number and date
renderer.RenderingOptions.TextFooter = new TextHeaderFooter
{
    LeftText = "{date}",
    RightText = "Page {page} of {total-pages}",
    DrawDividerLine = true,
    FontSize = 10
};

// Set margins to accommodate header and footer
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;

// Generate PDF from HTML content
var pdf = renderer.RenderHtmlAsPdf("<h1>Sales Data</h1><p>Content goes here...</p>");
pdf.SaveAs("report-with-headers.pdf");
using IronPdf;

// Initialize the PDF renderer
var renderer = new ChromePdfRenderer();

// Configure the text header
renderer.RenderingOptions.TextHeader = new TextHeaderFooter
{
    CenterText = "Quarterly Sales Report",
    DrawDividerLine = true,
    FontSize = 14
};

// Configure the text footer with page number and date
renderer.RenderingOptions.TextFooter = new TextHeaderFooter
{
    LeftText = "{date}",
    RightText = "Page {page} of {total-pages}",
    DrawDividerLine = true,
    FontSize = 10
};

// Set margins to accommodate header and footer
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;

// Generate PDF from HTML content
var pdf = renderer.RenderHtmlAsPdf("<h1>Sales Data</h1><p>Content goes here...</p>");
pdf.SaveAs("report-with-headers.pdf");
Imports IronPdf

' Initialize the PDF renderer
Dim renderer = New ChromePdfRenderer()

' Configure the text header
renderer.RenderingOptions.TextHeader = New TextHeaderFooter With {
    .CenterText = "Quarterly Sales Report",
    .DrawDividerLine = True,
    .FontSize = 14
}

' Configure the text footer with page number and date
renderer.RenderingOptions.TextFooter = New TextHeaderFooter With {
    .LeftText = "{date}",
    .RightText = "Page {page} of {total-pages}",
    .DrawDividerLine = True,
    .FontSize = 10
}

' Set margins to accommodate header and footer
renderer.RenderingOptions.MarginTop = 25
renderer.RenderingOptions.MarginBottom = 25

' Generate PDF from HTML content
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Sales Data</h1><p>Content goes here...</p>")
pdf.SaveAs("report-with-headers.pdf")
$vbLabelText   $csharpLabel

Klasa TextHeaderFooter udostępnia właściwości służące do pozycjonowania tekstu po lewej, w środku lub po prawej stronie obszaru nagłówka lub stopki. Właściwość DrawDividerLine dodaje profesjonalną linię oddzielającą nagłówek lub stopkę od głównej treści dokumentu. Pola scalane, takie jak {page}, {total-pages} i {date}, są automatycznie wypełniane wartościami dynamicznymi podczas generowania pliku PDF.

IronPDF automatycznie oblicza marginesy, zapewniając, że nagłówki i stopki nie nakładają się na treść dokumentu. Klasa TextHeaderFooter obsługuje typy czcionek z IronSoftware.Drawing.FontTypes, co daje Ci kontrolę nad typografią bez zewnętrznych zależności.

Wynik

Jak dodać nagłówek i stopkę w pliku PDF przy użyciu iTextSharp i IronPDF w języku C# wraz z przykładem: Obraz 4 – Wynik w formacie PDF

Zwróć uwagę, jak cała implementacja mieści się w jednym bloku kodu z jasnymi, czytelnymi przypisaniami właściwości. Nie ma potrzeby tworzenia oddzielnego pliku klasy, obliczania pozycji pikseli ani zarządzania obiektami canvas. Biblioteka abstrahuje te złożoności, pozwalając skupić się na treści, a nie na mechanizmach generowania plików PDF.

Jak tworzyć nagłówki i stopki w stylu HTML?

W przypadku bardziej zaawansowanych projektów klasa HtmlHeaderFooter biblioteki IronPDF umożliwia pełne stosowanie stylów HTML i CSS. Takie podejście jest szczególnie cenne, gdy nagłówki muszą zawierać logo w postaci obrazu, złożone układy lub stylizację charakterystyczną dla marki — bez ręcznego tworzenia obiektów PdfPCell lub używania konstruktorów new Phrase.

using IronPdf;
using System;

var renderer = new ChromePdfRenderer();

// Create an HTML header with logo and styling
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='width: 100%; font-family: Arial, sans-serif;'>
            <img src='logo.png' style='height: 30px; float: left;' />
            <span style='float: right; font-size: 12px; color: #666;'>
                Confidential Document
            </span>
        </div>",
    MaxHeight = 25,
    DrawDividerLine = true,
    BaseUrl = new Uri(@"C:\assets\").AbsoluteUri
};

// Create an HTML footer with page numbering
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='text-align: center; font-size: 10px; color: #999;'>
            <span>Generated on {date} at {time}</span>
            <br/>
            <span>Page {page} of {total-pages}</span>
        </div>",
    MaxHeight = 20
};

renderer.RenderingOptions.MarginTop = 30;
renderer.RenderingOptions.MarginBottom = 25;

var pdf = renderer.RenderHtmlAsPdf("<h1>Project Proposal</h1><p>Document content...</p>");
pdf.SaveAs("styled-document.pdf");
using IronPdf;
using System;

var renderer = new ChromePdfRenderer();

// Create an HTML header with logo and styling
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='width: 100%; font-family: Arial, sans-serif;'>
            <img src='logo.png' style='height: 30px; float: left;' />
            <span style='float: right; font-size: 12px; color: #666;'>
                Confidential Document
            </span>
        </div>",
    MaxHeight = 25,
    DrawDividerLine = true,
    BaseUrl = new Uri(@"C:\assets\").AbsoluteUri
};

// Create an HTML footer with page numbering
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='text-align: center; font-size: 10px; color: #999;'>
            <span>Generated on {date} at {time}</span>
            <br/>
            <span>Page {page} of {total-pages}</span>
        </div>",
    MaxHeight = 20
};

renderer.RenderingOptions.MarginTop = 30;
renderer.RenderingOptions.MarginBottom = 25;

var pdf = renderer.RenderHtmlAsPdf("<h1>Project Proposal</h1><p>Document content...</p>");
pdf.SaveAs("styled-document.pdf");
Imports IronPdf
Imports System

Dim renderer As New ChromePdfRenderer()

' Create an HTML header with logo and styling
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
    .HtmlFragment = "
        <div style='width: 100%; font-family: Arial, sans-serif;'>
            <img src='logo.png' style='height: 30px; float: left;' />
            <span style='float: right; font-size: 12px; color: #666;'>
                Confidential Document
            </span>
        </div>",
    .MaxHeight = 25,
    .DrawDividerLine = True,
    .BaseUrl = New Uri("C:\assets\").AbsoluteUri
}

' Create an HTML footer with page numbering
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
    .HtmlFragment = "
        <div style='text-align: center; font-size: 10px; color: #999;'>
            <span>Generated on {date} at {time}</span>
            <br/>
            <span>Page {page} of {total-pages}</span>
        </div>",
    .MaxHeight = 20
}

renderer.RenderingOptions.MarginTop = 30
renderer.RenderingOptions.MarginBottom = 25

Dim pdf = renderer.RenderHtmlAsPdf("<h1>Project Proposal</h1><p>Document content...</p>")
pdf.SaveAs("styled-document.pdf")
$vbLabelText   $csharpLabel

Ten przykładowy kod pokazuje, w jaki sposób nagłówki HTML mogą zawierać obrazy obok tekstu. Właściwość BaseUrl określa ścieżkę główną do rozpoznawania względnych adresów URL obrazów, co ułatwia umieszczanie logo firmy lub innych grafik. Właściwość MaxHeight gwarantuje, że nagłówek nie przekroczy określonych wymiarów, zachowując spójny układ dokumentu.

Pola, które można wstawiać ({page}, {total-pages}, {url}, {date}, {time}, {html-title}, {pdf-title}) działają identycznie w nagłówkach i stopkach HTML, umożliwiając dynamiczne wstawianie treści bez dodatkowego kodu. Wskazówki dotyczące stosowania różnych stylów nagłówków można znaleźć w poradniku "Nagłówki i stopki".

Podejście oparte na HTML sprawdza się doskonale podczas tworzenia dokumentów firmowych. Zespoły marketingowe mogą dostarczyć szablony HTML, które programiści mogą bezpośrednio zintegrować, zapewniając idealne odwzorowanie zatwierdzonych projektów. Właściwości CSS, takie jak font-family, color, background-color i border, działają zgodnie z oczekiwaniami, umożliwiając zaawansowaną obróbkę wizualną, która w innych bibliotekach wymagałaby rozbudowanego kodu niskopoziomowego.

Jak dodać nagłówek i stopkę w pliku PDF przy użyciu iTextSharp i IronPDF w języku C# wraz z przykładem: Obraz 3 – Jak dodać nagłówek i stopkę w pliku PDF – IronPDF

Jak dodać nagłówki do istniejących dokumentów PDF?

Częstym wymaganiem jest dodawanie nagłówków i stopek do istniejących plików PDF — niezależnie od tego, czy są to dokumenty przesłane, połączone pliki, czy pliki PDF wygenerowane przez inne systemy. IronPDF obsługuje ten scenariusz za pomocą metod AddHtmlHeaders i AddHtmlFooters.

using IronPdf;

// Load an existing PDF document
var pdf = PdfDocument.FromFile("customer-profile.pdf");

// Define the header to add
var header = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align: center;'>REVISED COPY - {date}</div>",
    MaxHeight = 20
};

// Define the footer to add
var footer = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align: right;'>Page {page}</div>",
    MaxHeight = 15
};

// Apply headers and footers to all pages
pdf.AddHtmlHeaders(header);
pdf.AddHtmlFooters(footer);
pdf.SaveAs("document-with-new-headers.pdf");
using IronPdf;

// Load an existing PDF document
var pdf = PdfDocument.FromFile("customer-profile.pdf");

// Define the header to add
var header = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align: center;'>REVISED COPY - {date}</div>",
    MaxHeight = 20
};

// Define the footer to add
var footer = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align: right;'>Page {page}</div>",
    MaxHeight = 15
};

// Apply headers and footers to all pages
pdf.AddHtmlHeaders(header);
pdf.AddHtmlFooters(footer);
pdf.SaveAs("document-with-new-headers.pdf");
Imports IronPdf

' Load an existing PDF document
Dim pdf = PdfDocument.FromFile("customer-profile.pdf")

' Define the header to add
Dim header As New HtmlHeaderFooter With {
    .HtmlFragment = "<div style='text-align: center;'>REVISED COPY - {date}</div>",
    .MaxHeight = 20
}

' Define the footer to add
Dim footer As New HtmlHeaderFooter With {
    .HtmlFragment = "<div style='text-align: right;'>Page {page}</div>",
    .MaxHeight = 15
}

' Apply headers and footers to all pages
pdf.AddHtmlHeaders(header)
pdf.AddHtmlFooters(footer)
pdf.SaveAs("document-with-new-headers.pdf")
$vbLabelText   $csharpLabel

Klasa PdfDocument reprezentuje załadowany lub wyrenderowany plik PDF i udostępnia metody do modyfikacji po wyrenderowaniu. To rozdzielenie renderowania od modyfikacji umożliwia realizację procesów, w których dokumenty PDF przechodzą przez wiele etapów przetwarzania. Metoda AddHtmlHeaders automatycznie stosuje nagłówek do każdej strony, choć można również wybrać konkretne strony, przekazując zbiór indeksów stron.

Dane wejściowe

Jak dodać nagłówek i stopkę w pliku PDF przy użyciu iTextSharp i IronPDF w języku C# wraz z przykładem: Ilustracja 6 – Przykładowe dane wejściowe

Wynik

Jak dodać nagłówek i stopkę do pliku PDF przy użyciu iTextSharp i IronPDF w języku C# wraz z przykładem: Ilustracja 7 – Wyjście istniejącego nagłówka PDF

Ta funkcja okazuje się nieoceniona w systemach zarządzania dokumentami, które otrzymują pliki PDF z różnych źródeł, takich jak zeskanowane dokumenty, pliki przesłane przez użytkowników lub odpowiedzi API stron trzecich. IronPDF standaryzuje branding lub numerację stron przed dystrybucją lub archiwizacją.

Jak dodać różne nagłówki na różnych stronach?

Niektóre dokumenty wymagają, aby pierwsza strona miała inny nagłówek (lub w ogóle nie miała nagłówka), podczas gdy kolejne strony mają standardowy format. IronPDF obsługuje to poprzez stosowanie nagłówków opartych na indeksie stron — nie ma potrzeby sprawdzania warunków wewnątrz procedur obsługi void OnEndPage ani ręcznego zarządzania licznikami pętli:

using IronPdf;
using System.Collections.Generic;
using System.Linq;
using System.Text;

var renderer = new ChromePdfRenderer();

// Build multi-page HTML with print page-breaks between pages
var pages = new List<string>
{
    "<section><h1>Title Page</h1><p>Intro text on page 1.</p></section>",
    "<section><h2>Report</h2><p>Detailed report content on page 2.</p></section>",
    "<section><h2>Appendix</h2><p>Appendix content on page 3.</p></section>"
};

var sb = new StringBuilder();
sb.AppendLine("<!doctype html><html><head><meta charset='utf-8'>");
sb.AppendLine("<style>");
sb.AppendLine("  body { font-family: Arial, sans-serif; margin: 20px; }");
sb.AppendLine("  .page-break { page-break-after: always; }");
sb.AppendLine("</style>");
sb.AppendLine("</head><body>");

for (int i = 0; i < pages.Count; i++)
{
    sb.AppendLine(pages[i]);
    if (i < pages.Count - 1)
        sb.AppendLine("<div class='page-break'></div>");
}
sb.AppendLine("</body></html>");

var pdf = renderer.RenderHtmlAsPdf(sb.ToString());

// Create the standard header for pages 2 onwards
var standardHeader = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align: center;'>Standard Header - Page {page}</div>",
    MaxHeight = 20
};

// Apply to all pages except the first (index 0)
var pageIndices = Enumerable.Range(1, pdf.PageCount - 1).ToList();
pdf.AddHtmlHeaders(standardHeader, 1, pageIndices);
pdf.SaveAs("document-skip-first-page-header.pdf");
using IronPdf;
using System.Collections.Generic;
using System.Linq;
using System.Text;

var renderer = new ChromePdfRenderer();

// Build multi-page HTML with print page-breaks between pages
var pages = new List<string>
{
    "<section><h1>Title Page</h1><p>Intro text on page 1.</p></section>",
    "<section><h2>Report</h2><p>Detailed report content on page 2.</p></section>",
    "<section><h2>Appendix</h2><p>Appendix content on page 3.</p></section>"
};

var sb = new StringBuilder();
sb.AppendLine("<!doctype html><html><head><meta charset='utf-8'>");
sb.AppendLine("<style>");
sb.AppendLine("  body { font-family: Arial, sans-serif; margin: 20px; }");
sb.AppendLine("  .page-break { page-break-after: always; }");
sb.AppendLine("</style>");
sb.AppendLine("</head><body>");

for (int i = 0; i < pages.Count; i++)
{
    sb.AppendLine(pages[i]);
    if (i < pages.Count - 1)
        sb.AppendLine("<div class='page-break'></div>");
}
sb.AppendLine("</body></html>");

var pdf = renderer.RenderHtmlAsPdf(sb.ToString());

// Create the standard header for pages 2 onwards
var standardHeader = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align: center;'>Standard Header - Page {page}</div>",
    MaxHeight = 20
};

// Apply to all pages except the first (index 0)
var pageIndices = Enumerable.Range(1, pdf.PageCount - 1).ToList();
pdf.AddHtmlHeaders(standardHeader, 1, pageIndices);
pdf.SaveAs("document-skip-first-page-header.pdf");
Imports IronPdf
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text

Dim renderer As New ChromePdfRenderer()

' Build multi-page HTML with print page-breaks between pages
Dim pages As New List(Of String) From {
    "<section><h1>Title Page</h1><p>Intro text on page 1.</p></section>",
    "<section><h2>Report</h2><p>Detailed report content on page 2.</p></section>",
    "<section><h2>Appendix</h2><p>Appendix content on page 3.</p></section>"
}

Dim sb As New StringBuilder()
sb.AppendLine("<!doctype html><html><head><meta charset='utf-8'>")
sb.AppendLine("<style>")
sb.AppendLine("  body { font-family: Arial, sans-serif; margin: 20px; }")
sb.AppendLine("  .page-break { page-break-after: always; }")
sb.AppendLine("</style>")
sb.AppendLine("</head><body>")

For i As Integer = 0 To pages.Count - 1
    sb.AppendLine(pages(i))
    If i < pages.Count - 1 Then
        sb.AppendLine("<div class='page-break'></div>")
    End If
Next
sb.AppendLine("</body></html>")

Dim pdf = renderer.RenderHtmlAsPdf(sb.ToString())

' Create the standard header for pages 2 onwards
Dim standardHeader As New HtmlHeaderFooter With {
    .HtmlFragment = "<div style='text-align: center;'>Standard Header - Page {page}</div>",
    .MaxHeight = 20
}

' Apply to all pages except the first (index 0)
Dim pageIndices = Enumerable.Range(1, pdf.PageCount - 1).ToList()
pdf.AddHtmlHeaders(standardHeader, 1, pageIndices)
pdf.SaveAs("document-skip-first-page-header.pdf")
$vbLabelText   $csharpLabel

Drugi parametr w AddHtmlHeaders określa numer strony początkowej dla pola scalalnego {page}, natomiast trzeci parametr przyjmuje zbiór indeksów stron, na których ma pojawić się nagłówek. Ta precyzyjna kontrola umożliwia tworzenie złożonych układów dokumentów bez skomplikowanej logiki warunkowej. Przykład "Zaawansowane nagłówki i stopki" obejmuje dodatkowe scenariusze, w tym rozróżnienie stron parzystych i nieparzystych.

Wynik

Jak dodać nagłówek i stopkę w pliku PDF przy użyciu iTextSharp i IronPDF w języku C# wraz z przykładem: Ilustracja 9 – Różne nagłówki dla różnych stron Wynik

Jak wdrożyć dynamiczne treści wykraczające poza numery stron?

System pól scalanych obsługuje kilka wartości dynamicznych, które są automatycznie wypełniane podczas renderowania. W poniższej tabeli wymieniono wszystkie dostępne pola wraz z ich znaczeniami:

Pola scalane obsługiwane w nagłówkach i stopkach IronPDF
Pole Wartość dodana Typowe zastosowanie
{page} Numer bieżącej strony Stopki z napisem "Strona 3"
{total-pages} Łączna liczba stron Stopki z napisem "Strona 3 z 10"
{data} Aktualna data w formacie lokalnym Znaczniki czasu audytu, daty raportów
{time} Aktualny czas w formacie lokalnym Stopki dotyczące zgodności z przepisami
{html-title} Zawartość tagu HTML </code></td> <td>Nagłówki dokumentów zawierające tytuł strony</td> </tr> <tr> <td><code>{pdf-title}</code></td> <td>Tytuł metadanych dokumentu PDF</td> <td>Stopki z nazwą dokumentu</td> </tr> <tr> <td><code>{url}</code></td> <td>Adres źródłowy podczas renderowania z adresu internetowego</td> <td>Stopki archiwalne dla treści internetowych</td> </tr> </tbody> </table> <p>W przypadku prawdziwie dynamicznej zawartości — wartości określanych w czasie wykonywania — można skonstruować ciąg fragmentu HTML z wartościami interpolowanymi przed przypisaniem go do właściwości <code>HtmlFragment</code>. Takie podejście umożliwia tworzenie nagłówków zawierających wartości pobrane z bazy danych, informacje o użytkowniku lub dane obliczeniowe:</p> <pre class='naked-code'><code class="language-csharp">using IronPdf; string userName = GetCurrentUserName(); string documentVersion = "v2.3.1"; var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter { HtmlFragment = $"<div style='font-size:10px;'>Prepared by: {userName} " + $"| Version: {documentVersion} " + "| Page {page} of {total-pages}</div>", MaxHeight = 20 }; var pdf = renderer.RenderHtmlAsPdf("<h1>Annual Report</h1><p>Body content here.</p>"); pdf.SaveAs("dynamic-header-report.pdf");</code></pre> <div class="code-content code-content-inner"> <div class="code_window" > <div class="language-selection__content-page-wrapper"> </div> <div class="code_window_content"> <div class="code-window__action-buttons-wrapper code-window__action-buttons-wrapper--content-page"> <button title="Kliknij, aby skopiować" class="code-window__action-button code-window__action-button--copy copy-clipboard" data-copy-text="Kliknij, aby skopiować" data-copied-text="Skopiowano do schowka" data-clipboard-id="code-explorer" data-placement="bottom" > <i class="fa-kit fa-copy-example"></i> </button> <button title="Tryb pełnoekranowy" class="code-window__action-button code-window__action-button--full-screen js-full-screen-code-example-modal" > <i class="fas fa-expand"></i> </button> <button title="Wyjdź z trybu pełnoekranowego" class="code-window__action-button code-window__action-button--exit-full-screen js-exit-full-screen-code-example-modal" > <i class="fas fa-compress"></i> </button> </div> <pre class="prettyprint linenums lang-cs"><code>using IronPdf; string userName = GetCurrentUserName(); string documentVersion = "v2.3.1"; var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter { HtmlFragment = $"<div style='font-size:10px;'>Prepared by: {userName} " + $"| Version: {documentVersion} " + "| Page {page} of {total-pages}</div>", MaxHeight = 20 }; var pdf = renderer.RenderHtmlAsPdf("<h1>Annual Report</h1><p>Body content here.</p>"); pdf.SaveAs("dynamic-header-report.pdf");</code></pre> <pre class="prettyprint linenums lang-vb"><code>Imports IronPdf Dim userName As String = GetCurrentUserName() Dim documentVersion As String = "v2.3.1" Dim renderer As New ChromePdfRenderer() renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With { .HtmlFragment = $"<div style='font-size:10px;'>Prepared by: {userName} " & $"| Version: {documentVersion} " & "| Page {page} of {total-pages}</div>", .MaxHeight = 20 } Dim pdf = renderer.RenderHtmlAsPdf("<h1>Annual Report</h1><p>Body content here.</p>") pdf.SaveAs("dynamic-header-report.pdf")</code></pre> </div> <div class="code_window_bottom"> <span class="language_selection"> <span class="ls-span">$vbLabelText  </span> <span> <label class="switch"> <input type="checkbox" checked="checked"> <span class="slider round"></span> </label> </span> <span class="ls-span">$csharpLabel</span> </span> </div> </div> </div> <p>Należy pamiętać, że tokeny <code>{page}</code> i <code>{total-pages}</code> pozostają zwykłymi ciągami znaków w ramach konkatenacji ciągów znaków w języku C# — nie znajdują się one w części interpolowanej. Podczas renderowania plików PDF IronPDF automatycznie zastępuje te tokeny. Ten wzorzec działa dla dowolnej wartości środowiska uruchomieniowego: nazw użytkowników z Active Directory, identyfikatorów dokumentów z bazy danych, ciągów znaków wersji z potoku kompilacji lub obliczonych sum z silnika raportowania.</p> <p>Połączenie pól scalanych i interpolacji ciągów znaków umożliwia tworzenie zaawansowanych projektów stopek, powszechnie stosowanych w dokumentach biznesowych. Działy prawne często wymagają stopek zawierających tytuł dokumentu, datę i liczbę stron. Raporty finansowe mogą wymagać oznaczenia daty i godziny w celu zapewnienia zgodności z przepisami. Wymagania te są spełnione bez konieczności tworzenia niestandardowego kodu dla każdego typu dokumentu.</p> </section> <section class="md__article-chunk md__article-chunk__level-2" aria-labelledby="anchor-jak-wygl36-49da-podej36-49cie-itext-7" data-heading-level="2" data-heading-text="Jak wygląda podejście iText 7?"> <h2 id="anchor-jak-wygl36-49da-podej36-49cie-itext-7">Jak wygląda podejście iText 7?</h2> <p>Programiści zaznajomieni z iText 7 (następcą iTextSharp) wiedzą, że dodanie nagłówków i stopek wymaga zaimplementowania procedur obsługi zdarzeń. Biblioteka wykorzystuje system zdarzeń strony, w którym tworzy się klasę reagującą na zdarzenia cyklu życia dokumentu, takie jak <code>OnEndPage</code> i <code>OnCloseDocument</code>.</p> <p>Oto jak wygląda ta sama implementacja nagłówka i stopki w iText 7, przy użyciu wzorca <code>ITextEvents</code>:</p> <pre class='naked-code'><code class="language-csharp">using iText.Kernel.Pdf; using iText.Layout; using iText.Layout.Element; using iText.Kernel.Events; using iText.Kernel.Geom; using iText.Layout.Properties; // Event handler class for headers and footers -- similar to PdfPageEventHelper public class ITextEvents : IEventHandler { private string _header; public string Header { get { return _header; } set { _header = value; } } public void HandleEvent(Event currentEvent) { PdfDocumentEvent docEvent = (PdfDocumentEvent)currentEvent; PdfDocument pdfDoc = docEvent.GetDocument(); PdfPage page = docEvent.GetPage(); Rectangle pageSize = page.GetPageSize(); // Create a new PdfCanvas for the contentbyte object PdfCanvas pdfCanvas = new PdfCanvas( page.NewContentStreamBefore(), page.GetResources(), pdfDoc); Canvas canvas = new Canvas(pdfCanvas, pageSize); // Add header text at calculated position canvas.ShowTextAligned( new Paragraph("Quarterly Sales Report"), pageSize.GetWidth() / 2, pageSize.GetTop() - 20, TextAlignment.CENTER); // Add footer with page number int pageNumber = pdfDoc.GetPageNumber(page); canvas.ShowTextAligned( new Paragraph($"Page {pageNumber}"), pageSize.GetWidth() / 2, pageSize.GetBottom() + 20, TextAlignment.CENTER); canvas.Close(); } } // Usage in main code var writer = new PdfWriter("report.pdf"); var pdfDoc = new PdfDocument(writer); var document = new Document(pdfDoc); // Register the event handler for END_PAGE pdfDoc.AddEventHandler(PdfDocumentEvent.END_PAGE, new ITextEvents()); document.Add(new Paragraph("Sales Data")); document.Add(new Paragraph("Content goes here...")); document.Close();</code></pre> <div class="code-content code-content-inner"> <div class="code_window" > <div class="language-selection__content-page-wrapper"> </div> <div class="code_window_content"> <div class="code-window__action-buttons-wrapper code-window__action-buttons-wrapper--content-page"> <button title="Kliknij, aby skopiować" class="code-window__action-button code-window__action-button--copy copy-clipboard" data-copy-text="Kliknij, aby skopiować" data-copied-text="Skopiowano do schowka" data-clipboard-id="code-explorer" data-placement="bottom" > <i class="fa-kit fa-copy-example"></i> </button> <button title="Tryb pełnoekranowy" class="code-window__action-button code-window__action-button--full-screen js-full-screen-code-example-modal" > <i class="fas fa-expand"></i> </button> <button title="Wyjdź z trybu pełnoekranowego" class="code-window__action-button code-window__action-button--exit-full-screen js-exit-full-screen-code-example-modal" > <i class="fas fa-compress"></i> </button> </div> <pre class="prettyprint linenums lang-cs"><code>using iText.Kernel.Pdf; using iText.Layout; using iText.Layout.Element; using iText.Kernel.Events; using iText.Kernel.Geom; using iText.Layout.Properties; // Event handler class for headers and footers -- similar to PdfPageEventHelper public class ITextEvents : IEventHandler { private string _header; public string Header { get { return _header; } set { _header = value; } } public void HandleEvent(Event currentEvent) { PdfDocumentEvent docEvent = (PdfDocumentEvent)currentEvent; PdfDocument pdfDoc = docEvent.GetDocument(); PdfPage page = docEvent.GetPage(); Rectangle pageSize = page.GetPageSize(); // Create a new PdfCanvas for the contentbyte object PdfCanvas pdfCanvas = new PdfCanvas( page.NewContentStreamBefore(), page.GetResources(), pdfDoc); Canvas canvas = new Canvas(pdfCanvas, pageSize); // Add header text at calculated position canvas.ShowTextAligned( new Paragraph("Quarterly Sales Report"), pageSize.GetWidth() / 2, pageSize.GetTop() - 20, TextAlignment.CENTER); // Add footer with page number int pageNumber = pdfDoc.GetPageNumber(page); canvas.ShowTextAligned( new Paragraph($"Page {pageNumber}"), pageSize.GetWidth() / 2, pageSize.GetBottom() + 20, TextAlignment.CENTER); canvas.Close(); } } // Usage in main code var writer = new PdfWriter("report.pdf"); var pdfDoc = new PdfDocument(writer); var document = new Document(pdfDoc); // Register the event handler for END_PAGE pdfDoc.AddEventHandler(PdfDocumentEvent.END_PAGE, new ITextEvents()); document.Add(new Paragraph("Sales Data")); document.Add(new Paragraph("Content goes here...")); document.Close();</code></pre> <pre class="prettyprint linenums lang-vb"><code>Imports iText.Kernel.Pdf Imports iText.Layout Imports iText.Layout.Element Imports iText.Kernel.Events Imports iText.Kernel.Geom Imports iText.Layout.Properties ' Event handler class for headers and footers -- similar to PdfPageEventHelper Public Class ITextEvents Implements IEventHandler Private _header As String Public Property Header As String Get Return _header End Get Set(value As String) _header = value End Set End Property Public Sub HandleEvent(currentEvent As [Event]) Implements IEventHandler.HandleEvent Dim docEvent As PdfDocumentEvent = CType(currentEvent, PdfDocumentEvent) Dim pdfDoc As PdfDocument = docEvent.GetDocument() Dim page As PdfPage = docEvent.GetPage() Dim pageSize As Rectangle = page.GetPageSize() ' Create a new PdfCanvas for the contentbyte object Dim pdfCanvas As New PdfCanvas(page.NewContentStreamBefore(), page.GetResources(), pdfDoc) Dim canvas As New Canvas(pdfCanvas, pageSize) ' Add header text at calculated position canvas.ShowTextAligned(New Paragraph("Quarterly Sales Report"), pageSize.GetWidth() / 2, pageSize.GetTop() - 20, TextAlignment.CENTER) ' Add footer with page number Dim pageNumber As Integer = pdfDoc.GetPageNumber(page) canvas.ShowTextAligned(New Paragraph($"Page {pageNumber}"), pageSize.GetWidth() / 2, pageSize.GetBottom() + 20, TextAlignment.CENTER) canvas.Close() End Sub End Class ' Usage in main code Dim writer As New PdfWriter("report.pdf") Dim pdfDoc As New PdfDocument(writer) Dim document As New Document(pdfDoc) ' Register the event handler for END_PAGE pdfDoc.AddEventHandler(PdfDocumentEvent.END_PAGE, New ITextEvents()) document.Add(New Paragraph("Sales Data")) document.Add(New Paragraph("Content goes here...")) document.Close()</code></pre> </div> <div class="code_window_bottom"> <span class="language_selection"> <span class="ls-span">$vbLabelText  </span> <span> <label class="switch"> <input type="checkbox" checked="checked"> <span class="slider round"></span> </label> </span> <span class="ls-span">$csharpLabel</span> </span> </div> </div> </div> <p>To wdrożenie pokazuje podstawową różnicę architektoniczną między tymi dwiema bibliotekami. iText 7 wymaga utworzenia oddzielnej klasy obsługi, która implementuje <code>IEventHandler</code> (podobnie jak starsza wersja <code>PdfPageEventHelper</code>), ręczne obliczanie pozycji stron przy użyciu współrzędnych typu float oraz zarządzanie obiektami <code>PdfCanvas</code> i <code>Canvas</code> w celu wykonywania operacji rysowania. Obsługa odbiera zdarzenia dla każdej strony poprzez typ zdarzenia <code>END_PAGE</code> — jest to szczegół, który sprawia trudności wielu programistom, którzy błędnie używają <code>START_PAGE</code>.</p> <section class="md__article-chunk md__article-chunk__level-3" aria-labelledby="anchor-wynik" data-heading-level="3" data-heading-text="Wynik"> <h3 id="anchor-wynik">Wynik</h3> <p><img src="/static-assets/pdf/blog/read-header-footer-itextsharp/read-header-footer-itextsharp-8.webp" alt="Jak dodać nagłówek i stopkę w pliku PDF przy użyciu iTextSharp i IronPDF w języku C# wraz z przykładem: Ilustracja 8 – Jak dodać nagłówek i stopkę w pliku PDF przy użyciu iTextSharp w języku C# wraz z przykładem" loading="lazy" class="img-responsive add-shadow img-popup" width="883" height="951" /></p> <p>Układ współrzędnych w iText 7 ma swój początek w lewym dolnym rogu strony, co wymaga wyraźnych obliczeń w celu ustalenia położenia. Uzyskanie ostatecznej liczby stron wymaga dodatkowego wysiłku ze względu na wzorce <code>PdfTemplate</code>, które są wypełniane podczas <code>OnCloseDocument</code> — wzorca, który dodaje więcej standardowego kodu do i tak już skomplikowanego przepływu pracy.</p> <p>Dla programistów wywodzących się ze środowiska tworzenia stron internetowych to podejście oparte na współrzędnych wydaje się obce w porównaniu z deklaratywnym modelem HTML/CSS. Każda decyzja dotycząca pozycjonowania wymaga zrozumienia wymiarów strony, przesunięć marginesów i pomiarów tekstu — kwestii, które są pomijane w podejściach opartych na HTML.</p> <p>iText 7 działa również na licencji AGPL, co oznacza, że aplikacje korzystające z iTextSharp lub iText 7 muszą być oprogramowaniem open source, chyba że zakupiono licencję komercyjną. Jest to ważny czynnik, który należy wziąć pod uwagę przy wyborze bibliotek do projektów komercyjnych.</p> </section> </section> <section class="md__article-chunk md__article-chunk__level-2" aria-labelledby="anchor-jak-wypadaj36-49-te-dwa-podej36-49cia-w-por36-49wnaniu" data-heading-level="2" data-heading-text="Jak wypadają te dwa podejścia w porównaniu?"> <h2 id="anchor-jak-wypadaj36-49-te-dwa-podej36-49cia-w-por36-49wnaniu">Jak wypadają te dwa podejścia w porównaniu?</h2> <p>Różnice stają się bardziej widoczne, gdy porównamy konkretne możliwości obok siebie. Poniższa tabela podsumowuje kluczowe różnice:</p> <table class="content__data-table" data-content-table> <caption>Porównanie funkcji nagłówków i stopek w IronPDF i iText 7</caption> <thead> <tr> <th>Funkcja</th> <th>IronPDF</th> <th>iText 7 / iTextSharp</th> </tr> </thead> <tbody> <tr> <td>Styl realizacji</td> <td>Przypisanie właściwości w opcjach renderera</td> <td>Klasa obsługi zdarzeń implementująca interfejs IEventHandler</td> </tr> <tr> <td>Obsługa HTML/CSS</td> <td>Pełny kod HTML i CSS za pośrednictwem HtmlHeaderFooter</td> <td>Brak natywnej obsługi HTML; wymaga rysowania na płótnie na niskim poziomie</td> </tr> <tr> <td>Łączna liczba stron</td> <td>Automatycznie poprzez pole <code>{total-pages}</code></td> <td>Wymaga wypełnienia szablonu PdfTemplate w metodzie OnCloseDocument</td> </tr> <tr> <td>Zdjęcie w nagłówku</td> <td>Standardowy tag HTML <code><img loading="lazy" class=" img-responsive add-shadow img-popup"></code> z atrybutem BaseUrl</td> <td>Wymaga obiektu Image i ręcznego pozycjonowania</td> </tr> <tr> <td>Dodaj do istniejącego pliku PDF</td> <td>Metody AddHtmlHeaders / AddHtmlFooters</td> <td>Wymaga ponownego przetworzenia za pomocą stampera lub pętli zdarzeń</td> </tr> <tr> <td>Kierowanie na poszczególne strony</td> <td>Lista indeksów stron przekazanych do metody</td> <td>Logika warunkowa wewnątrz procedury obsługi zdarzeń</td> </tr> <tr> <td>Model licencji</td> <td>Wersja komercyjna z bezpłatną wersją próbną</td> <td>AGPL (open source) lub komercyjne</td> </tr> <tr> <td>Wieloplatformowe</td> <td>Windows, Linux, macOS; Obsługa Docker</td> <td>Windows, Linux, macOS</td> </tr> </tbody> </table> <p>Doświadczenie programistyczne różni się również znacznie podczas rozwiązywania problemów. Podejście oparte na HTML stosowane przez IronPDF oznacza, że możesz wyświetlić podgląd projektu nagłówka w przeglądarce przed zintegrowaniem go z kodem generującym pliki PDF. Jeśli coś wygląda nieprawidłowo, możesz dostosować kod HTML i CSS za pomocą znanych narzędzi programistycznych przeglądarki. W przypadku iText 7 debugowanie problemów z pozycjonowaniem wymaga wielokrotnego generowania testowych plików PDF i ręcznego mierzenia współrzędnych.</p> <p>Podejście oparte na HTML oznacza, że możesz bezpośrednio wykorzystać swoje dotychczasowe umiejętności w zakresie tworzenia stron internetowych. W nagłówkach i stopkach IronPDF można zastosować dowolny układ możliwy do uzyskania za pomocą HTML i CSS, od układów flexbox po siatki obrazów. <a href="/pl/examples/html-headers-and-footers/" target="_blank">Przykład nagłówków i stopek HTML</a> pokazuje dodatkowe możliwości stylizacji.</p> <section class="md__article-chunk md__article-chunk__level-3" aria-labelledby="anchor-dostosowywanie-wygl36-49du-nag36-49wka-i-stopki" data-heading-level="3" data-heading-text="Dostosowywanie wyglądu nagłówka i stopki"> <h3 id="anchor-dostosowywanie-wygl36-49du-nag36-49wka-i-stopki">Dostosowywanie wyglądu nagłówka i stopki</h3> <p>Dopracowanie nagłówków i stopek obejmuje kilka właściwości, które wpływają na pozycjonowanie i prezentację wizualną. Klasa <code>TextHeaderFooter</code> udostępnia następujące opcje dostosowywania:</p> <pre class='naked-code'><code class="language-csharp">using IronPdf; using IronSoftware.Drawing; var renderer = new ChromePdfRenderer(); var footer = new TextHeaderFooter { LeftText = "Confidential", CenterText = "{pdf-title}", RightText = "Page {page} of {total-pages}", Font = FontTypes.Arial, FontSize = 9, DrawDividerLine = true, DrawDividerLineColor = Color.Gray }; renderer.RenderingOptions.TextFooter = footer; renderer.RenderingOptions.MarginBottom = 20; var pdf = renderer.RenderHtmlAsPdf("<h1>Board Report</h1><p>Executive summary content.</p>"); pdf.SaveAs("board-report.pdf");</code></pre> <div class="code-content code-content-inner"> <div class="code_window" > <div class="language-selection__content-page-wrapper"> </div> <div class="code_window_content"> <div class="code-window__action-buttons-wrapper code-window__action-buttons-wrapper--content-page"> <button title="Kliknij, aby skopiować" class="code-window__action-button code-window__action-button--copy copy-clipboard" data-copy-text="Kliknij, aby skopiować" data-copied-text="Skopiowano do schowka" data-clipboard-id="code-explorer" data-placement="bottom" > <i class="fa-kit fa-copy-example"></i> </button> <button title="Tryb pełnoekranowy" class="code-window__action-button code-window__action-button--full-screen js-full-screen-code-example-modal" > <i class="fas fa-expand"></i> </button> <button title="Wyjdź z trybu pełnoekranowego" class="code-window__action-button code-window__action-button--exit-full-screen js-exit-full-screen-code-example-modal" > <i class="fas fa-compress"></i> </button> </div> <pre class="prettyprint linenums lang-cs"><code>using IronPdf; using IronSoftware.Drawing; var renderer = new ChromePdfRenderer(); var footer = new TextHeaderFooter { LeftText = "Confidential", CenterText = "{pdf-title}", RightText = "Page {page} of {total-pages}", Font = FontTypes.Arial, FontSize = 9, DrawDividerLine = true, DrawDividerLineColor = Color.Gray }; renderer.RenderingOptions.TextFooter = footer; renderer.RenderingOptions.MarginBottom = 20; var pdf = renderer.RenderHtmlAsPdf("<h1>Board Report</h1><p>Executive summary content.</p>"); pdf.SaveAs("board-report.pdf");</code></pre> <pre class="prettyprint linenums lang-vb"><code>Imports IronPdf Imports IronSoftware.Drawing Dim renderer As New ChromePdfRenderer() Dim footer As New TextHeaderFooter With { .LeftText = "Confidential", .CenterText = "{pdf-title}", .RightText = "Page {page} of {total-pages}", .Font = FontTypes.Arial, .FontSize = 9, .DrawDividerLine = True, .DrawDividerLineColor = Color.Gray } renderer.RenderingOptions.TextFooter = footer renderer.RenderingOptions.MarginBottom = 20 Dim pdf = renderer.RenderHtmlAsPdf("<h1>Board Report</h1><p>Executive summary content.</p>") pdf.SaveAs("board-report.pdf")</code></pre> </div> <div class="code_window_bottom"> <span class="language_selection"> <span class="ls-span">$vbLabelText  </span> <span> <label class="switch"> <input type="checkbox" checked="checked"> <span class="slider round"></span> </label> </span> <span class="ls-span">$csharpLabel</span> </span> </div> </div> </div> <p>Właściwość <code>Font</code> akceptuje wartości z <code>IronSoftware.Drawing.FontTypes</code>, w tym Helvetica, Arial, Courier i Times New Roman. Właściwość <code>DrawDividerLine</code> dodaje profesjonalną poziomą linię między stopką a główną treścią. Możesz dostosować kolor linii za pomocą <code>DrawDividerLineColor</code>, aby dopasować go do kolorów marki lub motywu dokumentu.</p> <p>W przypadku nagłówków i stopek opartych na HTML właściwość <code>LoadStylesAndCSSFromMainHtmlDocument</code> opcjonalnie dziedziczy style z renderowanego dokumentu głównego, zapewniając spójność wizualną między nagłówkami a treścią. Jest to szczególnie przydatne, gdy główny dokument wykorzystuje niestandardowy CSS, który powinien mieć również zastosowanie do obszarów nagłówka i stopki.</p> <p><img src="/static-assets/pdf/blog/read-header-footer-itextsharp/read-header-footer-itextsharp-5.webp" alt="Jak dodać nagłówek i stopkę do pliku PDF przy użyciu iTextSharp i IronPDF w języku C# wraz z przykładem: Ilustracja 5 – Kompatybilność międzyplatformowa" loading="lazy" class="img-responsive add-shadow img-popup" width="1530" height="655" /></p> </section> <section class="md__article-chunk md__article-chunk__level-3" aria-labelledby="anchor-wdro36-49enia-wieloplatformowe-i-w-kontenerach" data-heading-level="3" data-heading-text="Wdrożenia wieloplatformowe i w kontenerach"> <h3 id="anchor-wdro36-49enia-wieloplatformowe-i-w-kontenerach">Wdrożenia wieloplatformowe i w kontenerach</h3> <p>Nowoczesne aplikacje .NET są często wdrażane w kontenerach Linux, usługach Azure App Services lub funkcjach AWS Lambda. IronPDF obsługuje wdrażanie na wielu platformach, w tym Windows, Linux i macOS, bez konieczności dodatkowej konfiguracji. Biblioteka działa w kontenerach Docker od razu po uruchomieniu, dzięki czemu nadaje się do architektur mikrousług i aplikacji natywnych dla chmury.</p> <p>Ta wieloplatformowość obejmuje również funkcje nagłówków i stopek — ten sam kod, który generuje pliki PDF z nagłówkami na komputerze deweloperskim z systemem Windows, tworzy identyczne wyniki po wdrożeniu na serwerze produkcyjnym z systemem Linux. Nie ma potrzeby instalowania dodatkowych czcionek, konfigurowania silników renderujących ani obsługi ścieżek kodu specyficznych dla platformy.</p> <p>Dla zespołów korzystających z kontenerowych środowisk pracy <a href="/pl/get-started/linux/" target="_blank">dokumentacja wdrożenia IronPDF Docker</a> zawiera wskazówki dotyczące konfiguracji różnych obrazów bazowych i platform orkiestracji. Spójne działanie biblioteki w różnych środowiskach eliminuje częste źródło błędów w procesach generowania plików PDF.</p> <p>Zgodnie z <a href="https://learn.microsoft.com/en-us/dotnet/core/deploying/" target="_blank" rel="nofollow noopener noreferrer">dokumentacją platformy .NET firmy Microsoft</a>, aplikacje .NET w kontenerach korzystają ze spójnego zachowania w czasie wykonywania w różnych środowiskach — jest to zasada, którą silnik renderujący IronPDF wzmacnia w zadaniach generowania plików PDF. Podobnie <a href="https://docs.docker.com/get-started/" target="_blank" rel="nofollow noopener noreferrer">oficjalna dokumentacja Docker</a> wyjaśnia najlepsze praktyki dotyczące konteneryzacji obciążeń .NET, które mają bezpośrednie zastosowanie do usług generowania plików PDF.</p> <p><a href="https://itextpdf.com/resources/api-documentation" target="_blank" rel="nofollow noopener noreferrer">Dokumentacja</a> <a href="https://itextpdf.com/resources/api-documentation" target="_blank" rel="nofollow noopener noreferrer">iText 7</a> potwierdza również obsługę wielu platform, ale dodatkowa złożoność modelu sterowanego zdarzeniami oznacza, że debugowanie problemów z renderowaniem na wielu platformach może być bardziej skomplikowane niż w przypadku deklaratywnego podejścia opartego na HTML.</p> </section> </section> <section class="md__article-chunk md__article-chunk__level-2" aria-labelledby="anchor-jakie-s36-49-twoje-kolejne-kroki" data-heading-level="2" data-heading-text="Jakie są Twoje kolejne kroki?"> <h2 id="anchor-jakie-s36-49-twoje-kolejne-kroki">Jakie są Twoje kolejne kroki?</h2> <p>Wprowadzenie nagłówków i stopek do dokumentów PDF zajmuje zaledwie kilka minut dzięki IronPDF. Zainstaluj bibliotekę za pomocą menedżera pakietów NuGet:</p> <pre class='naked-code'><code class="language-bash">Install-Package IronPdf dotnet add package IronPdf</code></pre> <div class="code-content code-content-inner" > <div class="code_window" > <div class="code_window_content"> <div class="code-window__action-buttons-wrapper code-window__action-buttons-wrapper--content-page"> <button title="Kliknij, aby skopiować" class="code-window__action-button code-window__action-button--copy copy-clipboard" data-copy-text="Kliknij, aby skopiować" data-copied-text="Skopiowano do schowka" data-clipboard-id="code-explorer" data-placement="bottom" > <i class="fa-kit fa-copy-example"></i> </button> <button title="Tryb pełnoekranowy" class="code-window__action-button code-window__action-button--full-screen js-full-screen-code-example-modal" > <i class="fas fa-expand"></i> </button> <button title="Wyjdź z trybu pełnoekranowego" class="code-window__action-button code-window__action-button--exit-full-screen js-exit-full-screen-code-example-modal" > <i class="fas fa-compress"></i> </button> </div> <pre class="prettyprint linenums lang-shell"><code>Install-Package IronPdf dotnet add package IronPdf</code></pre> </div> <div class="code_window_bottom"> <span class="pull-right"><span class="ls-span" style='font-weight: 600'>SHELL</span> </div> </div> </div> <p><img src="/static-assets/pdf/blog/read-header-footer-itextsharp/read-header-footer-itextsharp-10.webp" alt="Jak dodać nagłówek i stopkę do pliku PDF przy użyciu iTextSharp i IronPDF w języku C# wraz z przykładem: Ilustracja 10 – Instalacja" loading="lazy" class="img-responsive add-shadow img-popup" width="1280" height="818" /></p> <p>Poniższe zasoby pomogą Ci poszerzyć wiedzę:</p> <ul> <li><strong><a href="/pl/docs/" target="_blank">Dokumentacja "Pierwsze kroki"</a></strong> — obejmuje pełen zakres możliwości generowania i edycji plików PDF</li> <li><strong><a href="/pl/how-to/headers-and-footers/" target="_blank">Przewodnik dotyczący nagłówków i stopek</a></strong> — instrukcje krok po kroku dla wszystkich scenariuszy związanych z nagłówkami i stopkami</li> <li><strong><a href="/pl/examples/html-headers-and-footers/" target="_blank">Przykłady nagłówków i stopek HTML</a></strong> — gotowe do użycia fragmenty kodu dla nagłówków opartych na HTML</li> <li><strong><a href="/pl/examples/adding-headers-and-footers-advanced/" target="_blank">Przykład zaawansowanych nagłówków i stopek</a></strong> — kierowanie na poszczególne strony oraz rozróżnienie stron parzystych i nieparzystych</li> <li><strong><a href="/pl/object-reference/api/IronPdf.TextHeaderFooter.html" target="_blank">Dokumentacja API TextHeaderFooter</a></strong> — pełna lista właściwości dla nagłówków i stopek tekstowych</li> <li><strong><a href="/pl/object-reference/api/IronPdf.HtmlHeaderFooter.html" target="_blank">Dokumentacja API HtmlHeaderFooter</a></strong> — pełne API dla nagłówków i stopek opartych na HTML</li> <li><strong><a href="/pl/get-started/linux/" target="_blank">Przewodnik wdrażania Docker</a></strong> — konfiguracja dla kontenerów Linux i środowisk chmurowych</li> <li><strong><a href="/pl/licensing/" target="_blank">Opcje licencyjne IronPDF</a></strong> — plany dla indywidualnych programistów aż po zespoły korporacyjne</li> </ul> <p><a href="#trial-license" data-modal-id="trial-license" class="js-modal-open">Rozpocznij bezpłatny okres próbny,</a> aby przetestować implementacje nagłówków i stopek we własnych projektach. Wersja próbna zawiera wszystkie funkcje bez ograniczeń czasowych, co pozwala na ocenę biblioteki pod kątem rzeczywistych wymagań dotyczących dokumentów PDF przed podjęciem decyzji o zakupie licencji.</p> <p><img src="/static-assets/pdf/blog/read-header-footer-itextsharp/read-header-footer-itextsharp-11.webp" alt="Jak dodać nagłówek i stopkę w pliku PDF przy użyciu iTextSharp i IronPDF w języku C# wraz z przykładem: Ilustracja 11 – Licencjonowanie" loading="lazy" class="img-responsive add-shadow img-popup" width="1757" height="741" /></p> <p>Dodawanie nagłówków i stopek do dokumentów PDF w języku C# może być zadaniem prostym lub skomplikowanym, w zależności od wybranej biblioteki. Podczas gdy iText 7 zapewnia kontrolę niskiego poziomu poprzez procedury obsługi zdarzeń i operacje na obszarze roboczym, IronPDF oferuje tę samą funkcjonalność poprzez API, które wykorzystuje znane koncepcje HTML i CSS. Dla programistów, dla których priorytetem jest szybkie wdrożenie i łatwy w utrzymaniu kod, IronPDF redukuje implementację nagłówków i stopek z kilkudziesięciu linii — w tym klas obsługi, konfiguracji komórek i struktur tabel — do zaledwie kilku przypisów właściwości.</p></section> </div> <section id="article__faqs" class="bg" style="min-height: 500px; contain-intrinsic-size: auto 1065px;"> <h2 class="article__faqs__heading-title">Często Zadawane Pytania</h2> <div class="article__faqs__questions-and-answers container-fluid"> <div class="tab-pane in active" id="ta-faq"> <div class="faq-item"> <div class="faq-collapse"> <i class="fa-solid fa-plus"></i> <i class="fa-solid fa-minus"></i> </div> <div class="faq-content"> <h3 class="question-header">Jak mogę dodać nagłówki i stopki do plików PDF za pomocą iTextSharp?</h3> <p class="question-answer">Aby dodać nagłówki i stopki do plików PDF za pomocą iTextSharp, można zdefiniować procedurę obsługi zdarzeń strony, która dostosowuje strony dokumentu podczas procesu tworzenia pliku PDF. Wymaga to nadpisania metody OnEndPage w celu dodania żądanej treści nagłówka i stopki.</p> </div> </div> <div class="faq-item"> <div class="faq-collapse"> <i class="fa-solid fa-plus"></i> <i class="fa-solid fa-minus"></i> </div> <div class="faq-content"> <h3 class="question-header">Jakie są zalety korzystania z IronPDF do dodawania nagłówków i stopek?</h3> <p class="question-answer">IronPDF upraszcza proces dodawania nagłówków i stopek, zapewniając proste API i obsługując różne opcje stylizacji. Integruje się płynnie z projektami C# i oferuje dodatkowe funkcje, takie jak konwersja HTML do PDF, co czyni go wszechstronnym narzędziem do obróbki plików PDF.</p> </div> </div> <div class="faq-item"> <div class="faq-collapse"> <i class="fa-solid fa-plus"></i> <i class="fa-solid fa-minus"></i> </div> <div class="faq-content"> <h3 class="question-header">Czy IronPDF i iTextSharp mogą być używane razem?</h3> <p class="question-answer">Tak, IronPDF i iTextSharp mogą być używane razem w projekcie C#. Podczas gdy iTextSharp świetnie nadaje się do programowej manipulacji plikami PDF, IronPDF uzupełnia go, zapewniając dodatkowe funkcje, takie jak konwersja HTML do PDF, co może być przydatne do dynamicznego generowania nagłówków i stopek.</p> </div> </div> <div class="faq-item"> <div class="faq-collapse"> <i class="fa-solid fa-plus"></i> <i class="fa-solid fa-minus"></i> </div> <div class="faq-content"> <h3 class="question-header">Czy istnieje sposób na formatowanie nagłówków i stopek za pomocą IronPDF?</h3> <p class="question-answer">IronPDF pozwala stylizować nagłówki i stopki przy użyciu HTML i CSS. Daje to programistom elastyczność w tworzeniu atrakcyjnych wizualnie projektów i układów dokumentów PDF.</p> </div> </div> <div class="faq-item"> <div class="faq-collapse"> <i class="fa-solid fa-plus"></i> <i class="fa-solid fa-minus"></i> </div> <div class="faq-content"> <h3 class="question-header">W jaki sposób IronPDF obsługuje numery stron w nagłówkach i stopkach?</h3> <p class="question-answer">IronPDF może automatycznie wstawiać numery stron do nagłówków i stopek. Oferuje opcje formatowania numerów stron zgodnie z potrzebami, takie jak uwzględnienie całkowitej liczby stron lub dostosowanie numeru strony początkowej.</p> </div> </div> <div class="faq-item"> <div class="faq-collapse"> <i class="fa-solid fa-plus"></i> <i class="fa-solid fa-minus"></i> </div> <div class="faq-content"> <h3 class="question-header">Jaka jest zaleta używania języka C# do manipulacji plikami PDF za pomocą IronPDF?</h3> <p class="question-answer">Wykorzystanie języka C# do manipulacji plikami PDF za pomocą IronPDF zapewnia wysokie bezpieczeństwo typów, łatwą integrację z aplikacjami .NET oraz dostęp do szerokiej gamy bibliotek i narzędzi usprawniających proces tworzenia oprogramowania. Interfejs API IronPDF dla języka C# został zaprojektowany tak, aby był intuicyjny i przyjazny dla użytkownika, dzięki czemu jest dostępny dla programistów o każdym poziomie umiejętności.</p> </div> </div> <div class="faq-item"> <div class="faq-collapse"> <i class="fa-solid fa-plus"></i> <i class="fa-solid fa-minus"></i> </div> <div class="faq-content"> <h3 class="question-header">Czy mogę konwertować istniejące dokumenty do formatu PDF za pomocą IronPDF?</h3> <p class="question-answer">Tak, IronPDF może konwertować różne formaty dokumentów, w tym HTML, ASPX i inne treści internetowe, do formatu PDF. Ta funkcja jest szczególnie przydatna do tworzenia plików PDF ze stron internetowych lub treści generowanych dynamicznie.</p> </div> </div> </div> </div> </section> <script> document.addEventListener("DOMContentLoaded", function() { onViewLoadAsync( "#article__faqs", function() { }, ["common__faqs.js", "content__faqs.css", "article__faqs.css"] ); const articleFaqs = document.querySelector("#article__faqs .tab-pane"); if (!articleFaqs) return; articleFaqs.addEventListener("click", (evt) => { const targeted = evt.target.closest(".faq-item"); if (!targeted) return; targeted.classList.toggle("faq-item--active"); }); }); </script> <div class="author-details" id="author"> <div class="d-flex column-gap-4"> <div class="col_image"> <img loading="lazy" src="/img/how-tos/authors/curtis.png" alt="Curtis Chau" class="author-image" width="64" height="64"> </div> <div class="col_detail"> <div class="author-details__connect"> <div class="d-flex align-items-center flex-wrap"> <div class="author-details__connect__author"> <div class="author-name text-no-wrap"> <a href="https://ironsoftware.com/pl/about-us/authors/curtis/" aria-label="">Curtis Chau</a> </div> <div class="author-details__connect__linkedin"> <a href="https://www.linkedin.com/in/curtis-chau-937368213/" target="_blank"><i class="fa-brands fa-linkedin" target="_blank" rel="nofollow"></i></a> </div> <div class="author-details__connect__website"> <a href="https://github.com/CurtisChau" target="_blank"><i class="fa-solid fa-globe"></i></a> </div> </div> <div class="author-details__chat"> <a href="#live-chat-support"><i class="fa-solid fa-comments"></i>  <span class="d-none d-md-inline">Czat z zespołem inżynierów teraz </a></span> </div> </div> </div> <div class="author-job-title">Autor tekstów technicznych</div> <div class="author-bio"><p>Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...</div><a class="author-job-title__read-more" href="https://ironsoftware.com/pl/about-us/authors/curtis/">Czytaj więcej</a> </div> </div> </div> <div class="feedback_form"> </div> <div class="blog_end_line"></div> <div class="page_blog_listing module section_blog_listing"> <section class="col-12" id="blog_post--related-articles"> <h2>Powiązane artykuły</h2> <div class="container-fluid blog_post--related-articles__list"> <div class="row row-cols-1 row-cols-sm-2 row-cols-lg-3 g-4"> <div class="col"> <article class="h-100"> <a href="/pl/blog/using-ironpdf/ironpdf-monthly-statements/" class="d-block h-100 item_box" title="Generowanie miesięcznych wyciągów z konta w formacie PDF"> <div class="ratio ratio-16x9 blog_listing_image_placeholder ironpdf"><img class="object-fit-cover" alt="Generowanie miesięcznych wyciągów z konta w formacie PDF" src="/static-assets/pdf/blog/ironpdf-monthly-statements/ironpdf-monthly-statements-1.webp" width="1865" height="487" decoding="async" loading="lazy"></div> <div class="p-4"> <div class="info d-flex"><span class="post_date d-block flex-grow-1">Zaktualizowano <time datetime="2026-03-31">30 marca, 2026</time></span></div> <h3 class="post_header">Generowanie miesięcznych wyciągów z konta w formacie PDF</h3> <p class="post_description">Korzystając z biblioteki IronPDF C# PDF, programiści mogą konwertować HTML na niezawodne pliki PDF w ramach projektu .NET bez konieczności korzystania z usług zewnętrznych.</p> <p class="read_more">Czytaj więcej<i class="fa-solid fa-chevron-right"></i></p> </div> </a> </article> </div> <div class="col"> <article class="h-100"> <a href="/pl/blog/using-ironpdf/ironpdf-form-to-pdf/" class="d-block h-100 item_box" title="Przekształcanie internetowych formularzy zgłoszeniowych w podsumowania w formacie PDF za pomocą IronPDF"> <div class="ratio ratio-16x9 blog_listing_image_placeholder ironpdf"><img class="object-fit-cover" alt="Przekształcanie internetowych formularzy zgłoszeniowych w podsumowania w formacie PDF za pomocą IronPDF" src="/static-assets/pdf/blog/ironpdf-form-to-pdf/ironpdf-form-to-pdf-1.webp" width="1865" height="487" decoding="async" loading="lazy"></div> <div class="p-4"> <div class="info d-flex"><span class="post_date d-block flex-grow-1">Zaktualizowano <time datetime="2026-03-31">30 marca, 2026</time></span></div> <h3 class="post_header">Przekształcanie internetowych formularzy zgłoszeniowych w podsumowania w formacie PDF za pomocą IronPDF</h3> <p class="post_description">Dowiedz się, jak używać IronPDF do tworzenia identyfikowalnego zapisu przesłania formularza internetowego — przydatnego do celów zgodności z przepisami rządowymi.</p> <p class="read_more">Czytaj więcej<i class="fa-solid fa-chevron-right"></i></p> </div> </a> </article> </div> <div class="col"> <article class="h-100"> <a href="/pl/blog/using-ironpdf/ironpdf-fintech-receipts/" class="d-block h-100 item_box" title="C# PDF-owe pokwitowania i rejestry transakcji dla aplikacji FinTech"> <div class="ratio ratio-16x9 blog_listing_image_placeholder ironpdf"><img class="object-fit-cover" alt="C# PDF-owe pokwitowania i rejestry transakcji dla aplikacji FinTech" src="/static-assets/pdf/blog/ironpdf-fintech-receipts/ironpdf-fintech-receipts-1.webp" width="1865" height="487" decoding="async" loading="lazy"></div> <div class="p-4"> <div class="info d-flex"><span class="post_date d-block flex-grow-1">Zaktualizowano <time datetime="2026-03-31">30 marca, 2026</time></span></div> <h3 class="post_header">C# PDF-owe pokwitowania i rejestry transakcji dla aplikacji FinTech</h3> <p class="post_description">Przeczytaj, aby dowiedzieć się, jak używać IronPDF do tworzenia identyfikowalnych, opatrzonych datą i godziną zapisów transakcji w punkcie obsługi</p> <p class="read_more">Czytaj więcej<i class="fa-solid fa-chevron-right"></i></p> </div> </a> </article> </div> </div> </div> </section> </div> <div class="blog_end_line"></div> <div class="blog_bottom_nav"><div class="blog_bottom_nav row row-cols-2"><div class="text-start text-truncate"><a href="/pl/blog/using-ironpdf/dynamic-pdf-generation/" class="link previous">Jak dynamicznie generować PDF-y w .NET z użyciem IronPDF</a></div><div class="text-end text-truncate"><a href="/pl/blog/using-ironpdf/retrieve-pdf-file-from-database-apr-net/" class="link next">Jak pobrać pliki PDF z bazy danych...</a></div></div></div> </article> </div> <div id="blog_sidebar--right" class="blog_sidebar--right"> <aside id="blog_post--right_content" class="right_column right_sidebar_wrapper"> <div class="sticky-top z-0 specific_sticky_height"> <!-- Tutorial Videos Start --> <!-- Tutorial Videos End --> <div class="block_on_this_page"> <div id="blog_right_scrollspy_menu" class="menu_wrapper"> <h2 class="table_of_contents--header">Na tej stronie</h2> <ul id="scroll-menu" class="blog_post_on_this_page"> <li> <a href="#anchor-dodawanie-nag36-49wk36-49w-i-stopek-do-dokument36-49w-pdf-w-j36-49zyku-c" class=""><span>Dodawanie nagłówków i stopek do dokumentów PDF w języku C</span></a> </li> <li> <a href="#anchor-dlaczego-nag36-49wki-i-stopki-w-plikach-pdf-maj36-49-znaczenie-w-profesjonalnych-dokumentach" class=""><span>Dlaczego nagłówki i stopki w plikach PDF mają znaczenie w profesjonalnych dokumentach?</span></a> </li> <li> <a href="#anchor-jak-doda36-49-nag36-49wek-i-stopk36-49-tekstu-w-j36-49zyku-c" class=""><span>Jak dodać nagłówek i stopkę tekstu w języku C#?</span></a> <ul class=""> <li class=""> <a href="#anchor-wynik"><span>Wynik</span></a> </li> </ul> </li> <li> <a href="#anchor-jak-tworzy36-49-nag36-49wki-i-stopki-w-stylu-html" class=""><span>Jak tworzyć nagłówki i stopki w stylu HTML?</span></a> </li> <li> <a href="#anchor-jak-doda36-49-nag36-49wki-do-istniej36-49cych-dokument36-49w-pdf" class=""><span>Jak dodać nagłówki do istniejących dokumentów PDF?</span></a> <ul class=""> <li class=""> <a href="#anchor-dane-wej36-49ciowe"><span>Dane wejściowe</span></a> </li> <li class=""> <a href="#anchor-wynik"><span>Wynik</span></a> </li> </ul> </li> <li> <a href="#anchor-jak-doda36-49-r36-49ne-nag36-49wki-na-r36-49nych-stronach" class=""><span>Jak dodać różne nagłówki na różnych stronach?</span></a> <ul class=""> <li class=""> <a href="#anchor-wynik"><span>Wynik</span></a> </li> </ul> </li> <li> <a href="#anchor-jak-wdro36-49y36-49-dynamiczne-tre36-49ci-wykraczaj36-49ce-poza-numery-stron" class=""><span>Jak wdrożyć dynamiczne treści wykraczające poza numery stron?</span></a> </li> <li> <a href="#anchor-jak-wygl36-49da-podej36-49cie-itext-7" class=""><span>Jak wygląda podejście iText 7?</span></a> <ul class=""> <li class=""> <a href="#anchor-wynik"><span>Wynik</span></a> </li> </ul> </li> <li> <a href="#anchor-jak-wypadaj36-49-te-dwa-podej36-49cia-w-por36-49wnaniu" class=""><span>Jak wypadają te dwa podejścia w porównaniu?</span></a> <ul class=""> <li class=""> <a href="#anchor-dostosowywanie-wygl36-49du-nag36-49wka-i-stopki"><span>Dostosowywanie wyglądu nagłówka i stopki</span></a> </li> <li class=""> <a href="#anchor-wdro36-49enia-wieloplatformowe-i-w-kontenerach"><span>Wdrożenia wieloplatformowe i w kontenerach</span></a> </li> </ul> </li> <li> <a href="#anchor-jakie-s36-49-twoje-kolejne-kroki" class=""><span>Jakie są Twoje kolejne kroki?</span></a> </li> </ul> </div> </div> <div> <div class="nuget-sidebar-wrapper nuget-sidebar-wrapper--right-sidebar nuget-variant-3"> <div class="nuget-sidebar-header-block"> <div class="nuget-sidebar-header-block__logo-block"> <a href="https://nuget.org/packages/IronPdf" target="_blank"><img loading="lazy" src="/img/nuget.blue.svg" alt="Darmowe do programowania na NuGet" width="38" height="38" data-modal-id="trial-license-after-download" class="js-modal-open"></a> </div> <div class="nuget-sidebar-header-block__text-block" data-bs-toggle="modal"> <p class="nuget-sidebar-header-block__text-block__big-text"> <a href="https://nuget.org/packages/IronPdf" target="_blank" data-modal-id="trial-license-after-download" class="js-modal-open"> Zainstaluj za pomocą <span class="nuget-sidebar-header-block__text-block__big-text--blue">NuGet</span> <span class="nuget-sidebar-header-block__text-block__small-text">nuget.org/packages/<span class="text-block__small-text--inline-block">IronPdf</span></span> </a> </p> </div> </div> <div class="nuget-sidebar-cli vwo-nuget-copy vwo-nuget-copy--ironpdf" data-bs-custom-class="tooltipCopyToClipboard"> <div class="nuget-sidebar-cli__command"> <p class="nuget-sidebar-cli__command__text"> PM > <span class="js-nuget-sidebar-cli__command__text">Install-Package IronPdf</span> </p> </div> <div class="nuget-sidebar-cli__copy-block"> <span class="fas copy-icon-white"></span> </div> </div> </div> </div> <div class="join_bug_bounty"> <h2>Zgłoś problem</h2> <ul class="list-unstyled rt-list"> <li class="list-unstyled__item-flex-align-items-center"><i class="fa-regular fa-pen-to-square"></i>   <button class="js-modal-open" data-modal-id="article-feedback-modal">Dołącz do naszego Bug Bounty dla Iron Swag</button> </li> </ul> </div> </div> </div> </aside> </div> </div> <!-- offcanvas menu --> <div id="offcanvas_blog_right_sidebar" class="offcanvas offcanvas-end offcanvas_blog_right_sidebar" data-bs-scroll="true" data-bs-backdrop="false" tabindex="-1" aria-labelledby="offcanvas_blog_right_sidebar"> <!-- button toggle offcanvas right sidebar --> <div id="button_toggle_blog_right_sidebar" class="button_toggle_blog_right_sidebar" data-bs-toggle="offcanvas" data-bs-target="#offcanvas_blog_right_sidebar" aria-controls="offcanvasScrolling"> <div class="button_icons_open_offcanvas"><i class="fa-solid fa-angle-left"></i><i class="fa-solid fa-list-ul ms-1"></i></div> <div class="button_icons_close_offcanvas" style="display:none;"><i class="fa-solid fa-x"></i></div> </div> <div class="offcanvas-body" style="box-shadow: 0px 4px 12px 0px rgba(0, 0, 0, 0.25); background-color:#fafafb; padding:0 20px 0;"> <div id="place_holder_offcanvas_blog_right_sidebar"></div> </div> </div> <!-- A/B test new content layout 2025 May, end --> <section style="container-type: inline-size;"></section> </main> <section class="bifrost"></section> <div class="modal fade img-popup-modal" id="img-popup-modal" tabindex="-1" role="dialog" aria-hidden="true"> <div class="modal-dialog" data-bs-dismiss="modal"> <div class="modal-loaded donotdelete" style="font-size: 1px; display: none;"></div> <div class="modal-content" > <div class="modal-title"> <!--<button type="button" class="close" data-bs-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>--> <i data-bs-dismiss="modal" aria-hidden="true" class="fas fa-times slide-out-close"></i> </div> <div class="modal-body"> <img class="img-popup-fullsize" loading="lazy" src="" alt=" related to Dodaj nagłówek i stopkę w PDF przy użyciu iTextSharp i IronPDF w C# z przykładem"> <p class="img-popup-caption"></p> </div> </div> </div> </div> <script> document.addEventListener("DOMContentLoaded", function() { var element = document.querySelector("#img-popup-modal"); document.onElementViewportIntersect(element, function() { importModal(["image-popup.js", "modals/image-popup.css"], "img-popup-modal"); }); }) </script> <div class="modal cv-auto" id="download-modal"> <div class="modal-dialog products-download dm-IronPDF ironpdf"> <div class="modal-loaded donotdelete"></div> <div class="modal-content"> <div class="modal-header"> <i data-bs-dismiss="modal" aria-hidden="true" class="fas fa-times slide-out-close"></i> </div> <div class="modal-body"> <div class="dm-col-left"> <div class="products-title">Wypróbuj IronPDF za darmo</div> <div class="subtitle">Gotowy do pracy w 5 minut</div> <div class="image-box"> <img class="img-responsive" loading="lazy" src="/img/license-types/icon-lightbulb.svg" alt="Icon Lightbulb related to Dodaj nagłówek i stopkę w PDF przy użyciu iTextSharp i IronPDF w C# z przykładem"> </div> </div> <div class="dm-col-right"> <div class="row"> <div class="col-md-6"> <div class="js-modal-open product-item nuget vwo-nuget-copy" data-modal-id="trial-license-after-download" > <div class="product-section" style="padding: 33px 25px 28px;"> <div class="row"> <div class="col-lg-2 product-image"> <img class="img-responsive add-shadow" loading="lazy" src="/img/nuget-logo.svg" alt="Biblioteka C# NuGet dla plików PDF" > </div> <div class="col-lg-10 product-info"> <div class="products-title">Zainstaluj za pomocą <span>NuGet</span></div> <div class="subtitle"><strong>Wersja:</strong> 2026.4</div> </div> </div> <div class="js-open-modal-ignore copy-nuget-section" data-toggle="tooltip" data-copy-text="Kliknij, aby skopiować" , data-copied-text="Skopiowano do schowka" data-placement="top" title="Kliknij, aby skopiować"> <div class="copy-nuget-row vwo-nuget-copy"> <pre class="install-script">Install-Package IronPdf</pre> <div class="copy-button"> <button class="btn btn-default copy-nuget-script" type="button" data-toggle="popover" data-placement="top" data-content="Skopiowano do schowka" aria-label="Skopiuj polecenie menadżera pakietów" data-original-title="Kliknij, aby skopiować" title="Kliknij, aby skopiować"> <span class="fas copy-icon-white"></span> </button> </div> </div> </div> <div class="nuget-link"> nuget.org/packages/IronPdf/ </div> </div> <div class="product-section"> <ol class="product-description"> <li><span>W Eksploratorze Rozwiązań, kliknij prawym przyciskiem Myszy na Odwołania, Zarządzaj pakietami NuGet</span></li> <li><span>Wybierz opcję Przeglądaj i wyszukaj „IronPdf”</span></li> <li><span>Wybierz pakiet i zainstaluj</span></li> </ol> </div> </div> </div> <div class="col-md-6"> <div class="js-modal-open product-item dll" data-modal-id="trial-license-after-download" > <div class="product-section"> <div class="row"> <div class="col-lg-2 product-image"> <img class="img-responsive add-shadow" loading="lazy" src="/img/dll-img.png" alt="C# PDF DLL" > </div> <div class="col-lg-10 product-info"> <div class="products-title">Pobierz <span>DLL</span></div> <div class="subtitle"><strong>Wersja:</strong> 2026.4</div> </div> </div> <div class="download-dll-section"> <a class="btn btn-red download-library-dropdown dark-version" href="/packages/IronPdf.zip" data-toggle="tooltip" data-placement="bottom" data-html="true" title="<div class='library_download_dropdown_tooltip'><div class='library_download_dropdown_tooltip__menuitem' data-download-link='/packages/IronPdf.zip'><span class='library_download_dropdown_tooltip__menuitem_text'><i class='library_download_dropdown_tooltip__menuitem_fa-icon fab fa-microsoft'></i><span class='library_download_dropdown_tooltip_menuitem_text-label'>Windows</span></span></div><div class='library_download_dropdown_tooltip__menuitem' data-download-link='/packages/IronPdf.MacOs.zip'><span class='library_download_dropdown_tooltip__menuitem_text'><i class='library_download_dropdown_tooltip__menuitem_fa-icon fab fa-apple'></i><span class='library_download_dropdown_tooltip_menuitem_text-label'>macOS</span></span></div><div class='library_download_dropdown_tooltip__menuitem' data-download-link='/packages/IronPdf.Linux.zip'><span class='library_download_dropdown_tooltip__menuitem_text'><i class='library_download_dropdown_tooltip__menuitem_fa-icon fab fa-linux'></i><span class='library_download_dropdown_tooltip_menuitem_text-label'>Linux</span></span></div></div>" download><i class="fas fa-download"></i> Pobierz teraz</a> <div class="subtitle">lub pobierz instalator Windows <a href="/packages/IronPdfInstaller.zip" class="ga-windows-installer" title="Download Iron Software Installer for Windows">tutaj</a>.</div> </div> </div> <div class="product-section"> <ol class="product-description"> <li><span>Pobierz i rozpakuj IronPDF do lokalizacji takiej jak ~/Libs w katalogu Solution</span></li> <li><span>W Eksploratorze rozwiązań programu Visual Studio kliknij prawym przyciskiem myszy opcję Odwołania. Wybierz opcję Przeglądaj, „IronPdf.dll”</span></li> </ol> </div> </div> </div> </div> <div class="licensing-link"> Licencje od <a href="/pl/licensing/" target="_blank">749 USD</a> </div> </div> </div> <div class="dm-modal-footer"> <div class="dm-col-left"> </div> <div class="dm-col-right"> <p class="helpscout-text">Masz pytanie? <a href="#live-chat-support">Skontaktuj się</a> z naszym zespołem programistycznym.</p> </div> </div> </div> </div> </div> <script> document.addEventListener("DOMContentLoaded", function() { setupModalPopup("#download-modal", "download-modal", ["modals/download.css", "download-modal.js"], () => { const dlSection = qs("#download-modal .col-md-6, #download-modal .ironpdf-java__maven-install-section"); const packageUrl = "/packages/IronPdf.zip"; const filename = "IronPdf.zip" if (!dlSection) return; registerDownloadAction(dlSection, "click", packageUrl, filename); }); }); </script> <div class="modal cv-auto" id="trial-license-after-download" tabindex="-1" data-bs-backdrop="true" data-form-id="b93685fb-4445-4114-8b0a-4af3ec564c41" data-ironproduct-key="ironpdf" data-js-modal-id="trial-license-after-download"> <div class="modal-config" data-for-product="ironpdf"> <span class="trial-license-inactive-timeout" data-trial-license-inactive-timeout="15">15</span> <span class="trial-license-inactive-timeout-interval" data-trial-license-inactive-timeout-interval="1000">1000</span> <span class="trial-license-reset-state-in-days" data-trial-license-reset-state-in-days="1">1</span> </div> <div class="modal-dialog"> <div class="modal-content modal-content_border-0 modal-content_padding-0"> <div class="trial-license-after-download-modal__status__css-loaded" style="display:none; font-size:0px;"><!-- a place holder, when css completely load the font-size will change to 1px; then it will trigger js to make modal visible --></div> <div class="modal-header"> <i class="slide-out-close-bold" data-bs-dismiss="modal" aria-hidden="true"></i> </div> <div class="modal-body modal-body_padding-0"> <div class="modal-loaded donotdelete"></div> <div class="trial-license trial-license_light"> <div class="trial-license__info_2410 d-none d-lg-block"> <div class="bg_product_logo d-none d-xl-block ironpdf"><!-- bg-product-logo --></div> <div class="content_wrapper pt-4 pt-lg-5"> <div class="header type_installed flex-column flex-lg-row js_control_type_installed"> <div class="header__animate_icon installed"> <div class="package_icon_bg"><img class="platform_logo" src="/img/modals/new-design-2410/logo_nuget.svg" width="43" height="42" alt="Nuget Logo" loading="lazy"></div> </div> <div> <div class="header__title text-center text-lg-start"> Teraz, gdy zainstalowałeś przez NuGet </div> </div> </div> <div class="header type_downloading flex-column flex-lg-row js_control_type_downloading"> <div class="header__animate_icon downloading"></div> <div> <div class="header__title text-center text-lg-start"> Twoja przeglądarka pobiera <span class="header__title__product_name">IronPDF</span> </div> </div> </div> <h3 class="header_subtitle text-center text-lg-start type_installed">Następny krok: Rozpocznij darmową 30-dniową wersję próbną</h3> <p class="text-center text-lg-start">Nie wymaga karty kredytowej</p> <ul class="highlight d-none d-lg-block"> <li><span class="icon_test"></span>Testuj w środowisku na żywo</li><li><span class="icon_calendar"></span>W pełni funkcjonalny produkt</li><li><span class="icon_support"></span>Wsparcie techniczne 24/5</li> </ul> </div> </div> <style> /* @media (min-width: 992px) { #trial-license-after-download .trial-license__action { } } */ </style> <div class="trial-license__action" style="min-height: 550px;" > <div class="trial-license__action-title" style=" "> Otrzymaj swój darmowy <strong>Klucz Próbny na 30 dni</strong> natychmiast. </div> <div class="trial-license__exit-intent-form-sent-title"> Dziękuję.<br>Jeśli chciałbyś porozmawiać z naszym zespołem ds. licencji: </div> <div id="hubspot-form__thank_you" class="hubspot-form__thank_you"> <p><section class="formright_submitted"><img loading="lazy" src="/img/icons/greencheck_in_yellowcircle.svg" width="100" height="100" alt="badge_greencheck_in_yellowcircle"><div class="thank-you__header">Formularz próbny został przesłany<br><em>pomyślnie</em>.</div><p>Twój klucz próbny powinien być w e-mailu.<br>Jeśli go nie ma, skontaktuj się<br><a href="mailto:support@ironsoftware.com">support@ironsoftware.com</a></p></section></p> </div> <div id="hubspot-form__form__trial-license-after-download" class="hubspot-form__form-wrapper"> <script data-hbspt-form> document.addEventListener("DOMContentLoaded", function() { var trialLicenseHbsptOptions_form_1a = { region: "na1", portalId: "22630553", formId: "b93685fb-4445-4114-8b0a-4af3ec564c41", locale: "pl", target: "#trial-license-after-download .place_holder--form_1a", cssClass: "hsform_error_v2 hsform_floating_label hsform_intl_phone", onFormReady: function ($form) { var hsFormErrorTooltipMessages = {"email":"Prosz\u0119 wprowadzi\u0107 prawid\u0142owy adres e-mail","firstname":"Prosz\u0119 wprowadzi\u0107 swoje imi\u0119","countrycode":"","phone":"Prawid\u0142owy numer telefonu mo\u017ce zawiera\u0107 tylko cyfry, +()-. lub x","preferred_communication":"Prosz\u0119 wybra\u0107 preferowan\u0105 metod\u0119 kontaktu"}; buildFormErrorTooltips($form, hsFormErrorTooltipMessages); buildCountryCodeForPhoneFields($form, 'div.hs-fieldtype-phonenumber'); removeHSFormPlaceHolder($form); }, onFormSubmitted: function($form, data) { trigger_goal('trial_form_submitted'); // trigger goal start // Fire Custom Event when form submited dataLayer.push({'event':'trial-from-submitted'}); // HubSpot hubspot_custom_conversion_trigger("pe22630553_trial_from_submitted_v2"); // trigger goal end setTimeout(function () { $("#trial-license-after-download .trial-license__action-features").hide(); }, 0); // hide 1st form place holder $("#trial-license-after-download .place_holder--form_1a").hide(); $("#trial-license-after-download .place_holder--form_1b").hide(); // show 2nd form place holder $("#trial-license-after-download .place_holder--form_2").show(); /// push submited data to 2nd form setTimeout(function() { $("#trial-license-after-download .trialFormTwo input[name='email']").val(data.submissionValues.email).change(); }, 1000); history.pushState("", document.title, window.location.pathname + "#trial-license-after-download-form-sent"); }, translations: { pl: { fieldLabels: {"email":"Tw\u00f3j e-mail s\u0142u\u017cbowy","firstname":"Imi\u0119","countrycode":"Kod wybierania","phone":"Numer telefonu","preferred_communication":"Preferowana metoda kontaktu"} } }, submitText: "Continue", submitButtonClass: "hs-button primary large arrow_right", inlineMessage: "<div class=\"d-none\"></div>", }; // var for form 1b var trialLicenseHbsptOptions_form_1b = Object.assign({}, trialLicenseHbsptOptions_form_1a); trialLicenseHbsptOptions_form_1b.formId = "8c54dcae-960c-4452-b83c-06affb378052"; trialLicenseHbsptOptions_form_1b.target = "#trial-license-after-download .place_holder--form_1b"; // var for form 2 var trialLicenseHbsptOptions_form_2 = { region: "na1", portalId: "22630553", formId: "febf5e33-1edd-45f9-b9b0-6ead75fb1b9a", locale: "pl", cssClass: "trialFormTwo", target: "#trial-license-after-download .place_holder--form_2", inlineMessage: "<div class=\"d-none\"></div>", onFormSubmitted: function ($form, data) { // setCookie("stopFlag", "1", 1); setLocalStorageIfTrialSubmitted(); // Trigger HubSpot goal trigger_goal('second_trial_form_submitted'); $(".hubspot-form__form-wrapper").css("display", "none"); $("#trial-license-after-download .hubspot-form__thank_you").css("padding-top", "60px").show(); // Specific to modal #trial-license-after-download $("#trial-license-after-download .hubspot-form__thank_you section.formright_submitted").css("display", "block"); $("#trial-license-after-download .hubspot-form__thank_you").css("display", "block"); $("#trial-license-after-download .trial-license__action-title").css("display", "none"); $("#trial-license-after-download .trial-license__action-features-single, #trial-license .trial-license__action-features-single").css("display", "none"); // Specific to modal #trial-license $("#trial-license .trial-license__action-title").css("display", "none"); }, }; var selector = document.querySelector("#hubspot-form__form__trial-license-after-download"); const modalSelector = document.querySelector("#trial-license-after-download"); modalSelector?.addEventListener("shown.bs.modal", function() { embedCustomHubspotForm(selector, trialLicenseHbsptOptions_form_1a); embedCustomHubspotForm(selector, trialLicenseHbsptOptions_form_1b); embedCustomHubspotForm(selector, trialLicenseHbsptOptions_form_2); }, { once: true }); });</script> <div class="place_holder--form_1a vwo_ab_test_phone_extension_a"></div> <div class="place_holder--form_1b vwo_ab_test_phone_extension_b"></div> <div class="place_holder--form_2"></div> </div> <div class="trial-license__exit-intent-form-sent-action-button"> <a class="btn btn-red btn-red--exit-intent-form-sent" href="https://help.ironsoftware.com/meetings/ironsoftware/schedule-a-call-with-sales" target="_blank"> <i class="fa fa-phone-alt" aria-hidden="true"></i> Umów się na rozmowę </a> </div> <div class="trial-license__exit-intent-form-sent-description"> Masz pytanie? <a href="#live-chat-support" onclick="return show_helpscout(event)">Skontaktuj się</a> z naszym zespołem programistycznym. </div> <div class="flex-grow-1"><!-- spacer --></div> <div class="trial-license__action-features"> <div class="trial-license__action-features-single"> Nie wymaga karty kredytowej ani tworzenia konta </div> </div> </div> </div> </div> </div> </div> </div> <script> document.addEventListener("DOMContentLoaded", function() { var selector = "#trial-license-after-download"; document.onElementViewportIntersect(selector, function() { var modals = ["trial-license.util.js", "modals/trial-license.css"]; importModal(modals, "trial-license-after-download", debug()); }); }); </script> <div class="modal cv-auto" id="trial-license-after-download-form-sent" tabindex="-1" data-bs-backdrop="true" data-form-id="b93685fb-4445-4114-8b0a-4af3ec564c41" data-ironproduct-key="ironpdf" data-js-modal-id="trial-license-after-download-form-sent"> <div class="modal-config" data-for-product="ironpdf"> <span class="trial-license-inactive-timeout" data-trial-license-inactive-timeout="15">15</span> <span class="trial-license-inactive-timeout-interval" data-trial-license-inactive-timeout-interval="1000">1000</span> <span class="trial-license-reset-state-in-days" data-trial-license-reset-state-in-days="1">1</span> </div> <div class="modal-dialog"> <div class="modal-content modal-content_border-0 modal-content_padding-0"> <div class="trial-license-after-download-form-sent-modal__status__css-loaded" style="display:none; font-size:0px;"><!-- a place holder, when css completely load the font-size will change to 1px; then it will trigger js to make modal visible --></div> <div class="modal-header"> <i class="slide-out-close-bold" data-bs-dismiss="modal" aria-hidden="true"></i> </div> <div class="modal-body modal-body_padding-0"> <div class="modal-loaded donotdelete"></div> <div class="trial-license trial-license_light"> <div class="trial-license__info_2410 d-none d-lg-block"> <div class="bg_product_logo d-none d-xl-block ironpdf"><!-- bg-product-logo --></div> <div class="content_wrapper pt-4 pt-lg-5"> <div class="header type_installed flex-column flex-lg-row js_control_type_installed"> <div class="header__animate_icon installed"> <div class="package_icon_bg"><img class="platform_logo" src="/img/modals/new-design-2410/logo_nuget.svg" width="43" height="42" alt="Nuget Logo" loading="lazy"></div> </div> <div> <div class="header__title text-center text-lg-start"> Teraz, gdy zainstalowałeś przez NuGet </div> </div> </div> <div class="header type_downloading flex-column flex-lg-row js_control_type_downloading"> <div class="header__animate_icon downloading"></div> <div> <div class="header__title text-center text-lg-start"> Twoja przeglądarka pobiera <span class="header__title__product_name">IronPDF</span> </div> </div> </div> <h3 class="header_subtitle text-center text-lg-start type_installed">Następny krok: Rozpocznij darmową 30-dniową wersję próbną</h3> <p class="text-center text-lg-start">Nie wymaga karty kredytowej</p> <ul class="highlight d-none d-lg-block"> <li><span class="icon_test"></span>Testuj w środowisku na żywo</li><li><span class="icon_calendar"></span>W pełni funkcjonalny produkt</li><li><span class="icon_support"></span>Wsparcie techniczne 24/5</li> </ul> </div> </div> <style> /* @media (min-width: 992px) { #trial-license-after-download-form-sent .trial-license__action { padding-top: 3px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; } } */ </style> <div class="trial-license__action" style="min-height: 270px;" > <div class="trial-license__action-title" style=" "> <strong>Dziękuję.<br> Zobacz swoje opcje licencji:</strong> </div> <div class="trial-license__exit-intent-form-sent-title"> Dziękuję.<br>Jeśli chciałbyś porozmawiać z naszym zespołem ds. licencji: </div> <div class="trial-license__action-buttons" style=" "> <a class="trial-license__action-button trial-license__action-button_red trial-license__action-button_wide" style=" " href="/pl/licensing/" > <span class="trial-license__action-button-text"> Zobacz licencjonowanie </span> </a> </div> <div class="trial-license__exit-intent-form-sent-action-button"> <a class="btn btn-red btn-red--exit-intent-form-sent" href="https://help.ironsoftware.com/meetings/ironsoftware/schedule-a-call-with-sales" target="_blank"> <i class="fa fa-phone-alt" aria-hidden="true"></i> Umów się na rozmowę </a> </div> <div class="trial-license__action-description trial-license__action-description_highlighted" style=" "> Masz pytanie? <!-- --><a href="#live-chat-support" >Skontaktuj się</a><!-- --> z naszym zespołem programistycznym. </div> <div class="trial-license__exit-intent-form-sent-description"> Masz pytanie? <a href="#live-chat-support" onclick="return show_helpscout(event)">Skontaktuj się</a> z naszym zespołem programistycznym. </div> </div> </div> </div> </div> </div> </div> <script> document.addEventListener("DOMContentLoaded", function() { var selector = "#trial-license-after-download-form-sent"; document.onElementViewportIntersect(selector, function() { var modals = ["trial-license.util.js", "modals/trial-license.css"]; importModal(modals, "trial-license-after-download-form-sent", debug()); }); }); </script> <script> function getHsProductCodeFromUrl() { const url = window.location.href; if (url.includes("ironpdf.com") || url.includes("ironpdf.local")) { if (url.includes("/java/")) return "pdf-java"; if (url.includes("/python/")) return "pdf-python"; if (url.includes("/nodejs/")) return "pdf-nodejs"; return "pdf"; } else if (url.includes("ironsoftware.com") || url.includes("ironsoftware.local")) { if (url.includes("/word/")) return "word"; if (url.includes("/ocr/")) return "ocr"; if (url.includes("/webscraper/")) return "webscraper"; if (url.includes("/barcode/")) return "barcode"; if (url.includes("/excel/")) return "excel"; if (url.includes("/qr/")) return "qr"; if (url.includes("/zip/")) return "zip"; if (url.includes("/word/")) return "word"; if (url.includes("/print/")) return "print"; if (url.includes("/securedoc/")) return "securedoc"; if (url.includes("/ppt/")) return "ppt"; if (url.includes("/python/excel/")) return "excel-python"; return "suite"; } } function enabledAbandonTrialForm() { function s(e = "") { const headers = new Headers(); headers.append("Content-Type", "application/json"); const body = JSON.stringify({ "fields": [{ "name": "email", "value": e }, { "name": "interested_products", "value": getHsProductCodeFromUrl() } ], "context": { "pageUri": window.location.href, "pageName": window.location.href.split('#')[0] } }); fetch("https://api.hsforms.com/submissions/v3/integration/submit/22630553/e036830d-c04a-4cb9-a5a0-2ba606d5de9f", { method: "POST", headers: headers, body: body, redirect: "follow" }).then((response) => response.text()).then((result) => console.log(result)).catch((error) => console.error(error)); } const w = 'email'; const t = 'trial-license'; const l = 'trial-license-new'; const f = 'name'; const fullScreenTrialModal = document.getElementById(t); if (fullScreenTrialModal && fullScreenTrialModal.classList.contains(l)) { fullScreenTrialModal.addEventListener('hide.bs.modal', function() { let e = []; document.querySelectorAll('#' + t + ' input[' + f + '="' + w + '"]').forEach(function(input) { if (input.value != '' && input.value != null && input.value.length >= 4) { e.push(input.value); } }); if (e.length > 0) { s(e[0]); } }); } }; function enabledSocialTrial() { const target = '.modal#trial-license .right_content.page_one'; const insertAfter = '.no_credit_required'; // Add place holder for social login document.querySelector(target + ' ' + insertAfter).insertAdjacentHTML("afterend", '<div id="firebaseui-auth-container"><div class="or_separator">OR</div></div>'); const firebaseuiAuthContainer = document.querySelector(target + ' #firebaseui-auth-container'); const currentPageUri = window.location.href; function submitHsform(formData) { const myHeaders = new Headers(); const hsu = "https://api.hsforms.com/submissions/v3/integration/submit/23795711/98897ae8-f5f7-4636-ae9e-98d808bc59b7"; myHeaders.append("Content-Type", "application/json"); const raw = JSON.stringify({ "fields": [{ "name": "email", "value": formData.email }, { "name": "firstname", "value": formData.name }, { "name": "comment", "value": "Submit via social login" } ], "context": { "pageUri": currentPageUri, "pageName": "Trial Submit" } }); fetch(hsu, { method: "POST", headers: myHeaders, body: raw, redirect: "follow" }) .then((response) => response.text()) .then((result) => console.log(result)) .catch((error) => console.error(error)); } // helper to load a script function loadScript(src) { return new Promise(resolve => { const s = document.createElement('script'); s.src = src; s.onload = resolve; document.head.appendChild(s); }); } // helper to load CSS function loadCSS(href) { const l = document.createElement('link'); l.rel = "stylesheet"; l.href = href; document.head.appendChild(l); } // Make sure related files are loaded, prevent miss behavior. Promise.all([ loadScript("https://www.gstatic.com/firebasejs/9.23.0/firebase-app-compat.js"), loadScript("https://www.gstatic.com/firebasejs/9.23.0/firebase-auth-compat.js"), loadScript("https://www.gstatic.com/firebasejs/ui/6.0.1/firebase-ui-auth.js"), loadCSS("https://www.gstatic.com/firebasejs/ui/6.0.1/firebase-ui-auth.css"), ]).then(() => { // Firebase config const firebaseConfig = { apiKey: "AIzaSyCsJiQyqdfI_YcNRxxpVUJ_pvicKmH9dX4", authDomain: "iron-authentication.firebaseapp.com", projectId: "iron-authentication", storageBucket: "iron-authentication.firebasestorage.app", messagingSenderId: "381801101678", appId: "1:381801101678:web:2d637bb0cdf2377998e97f" }; // init authn app firebase.initializeApp(firebaseConfig); // FirebaseUI const ui = new firebaseui.auth.AuthUI(firebase.auth()); ui.start('#firebaseui-auth-container', { signInFlow: 'popup', signInOptions: [{ provider: firebase.auth.GoogleAuthProvider.PROVIDER_ID, scopes: [ 'email', 'profile', ], customParameters: { prompt: 'select_account' } }, { provider: firebase.auth.GithubAuthProvider.PROVIDER_ID, scopes: [ 'user:email', 'read:user', ], customParameters: { prompt: 'select_account' } }, ], callbacks: { signInSuccessWithAuthResult: function(authResult) { const user = authResult.user; const userEmail = user.email || user.providerData[0]?.email; const userName = user.displayName; // Place info into the HS form const emailInput = document.querySelector('.modal#trial-license .right_content.page_two .placeholder__hsform--two form input[name="email"]'); const nameInput = document.querySelector('.modal#trial-license .right_content.page_two .placeholder__hsform--two form input[name="firstname"]'); // interact the dom document.querySelector('.modal#trial-license .right_content.page_one').style.display = 'none'; document.querySelector('.modal#trial-license .right_content.page_two').style.display = 'block'; var emailInputField = document.querySelector('.modal#trial-license .placeholder__hsform--two input[name="email"]'); if (emailInputField) { emailInputField.readOnly = true; emailInputField.value = userEmail; emailInputField.dispatchEvent(new Event('change', { bubbles: true })); } if (emailInput) { emailInput.value = userEmail; emailInput.dispatchEvent(new InputEvent('input', { bubbles: true, cancelable: true })); } if (nameInput) { nameInput.value = userName; nameInput.dispatchEvent(new InputEvent('input', { bubbles: true, cancelable: true })); } submitHsform({ "email": userEmail, "name": userName }) firebaseuiAuthContainer.style.display = 'none'; return false; } } }); }); return; } // enabledAbandonTrialForm(); // enabledSocialTrial(); </script> <script> /* trialFormSetStep("#trial-license", 1); modalId = "#trial-license"; */ function trialFormSetStep(modal_id, step) { // check is suite modal const isSuite = getHsProductCodeFromUrl() === 'suite'; const modal = document.querySelector(modal_id); const show = (selector) => modal.querySelector(selector).style.display = 'block'; const hide = (selector) => modal.querySelector(selector).style.display = 'none'; if (step === 1) { // left contents show('.group__started_for_free'); hide('.group__started_for_free_completed'); hide('.group__booking'); hide('.group__booking_completed'); // right forms show('.page_one'); hide('.page_two'); hide('.page_three'); hide('.page_submitted'); } else if (step === 2) { // left contents show('.group__started_for_free'); hide('.group__started_for_free_completed'); hide('.group__booking'); hide('.group__booking_completed'); // right forms hide('.page_one'); show('.page_two'); hide('.page_three'); hide('.page_submitted'); } else if (step === 3) { // left contents hide('.group__started_for_free'); show('.group__started_for_free_completed'); show('.group__booking'); hide('.group__booking_completed'); // right forms hide('.page_one'); hide('.page_two'); show('.page_three'); hide('.page_submitted'); hide('.right .trusted_by'); show('.right .trial_key_sent'); } else if (step === 4) { // left contents hide('.group__started_for_free'); show('.group__started_for_free_completed'); show('.group__booking'); hide('.group__booking_completed'); // right forms hide('.page_one'); hide('.page_two'); hide('.page_three'); show('.page_submitted'); show('.right .trusted_by'); hide('.right .trial_key_sent'); } /* override for suite modal */ if (isSuite == true) { // left contents for suite hide('.group__started_for_free'); hide('.group__started_for_free_completed'); hide('.group__booking'); hide('.group__booking_completed'); show('.group__suite'); hide('.formright_submitted--products'); show('.formright_submitted--suite'); } } window.addEventListener("load", function() { // enabled 3 steps form (won test) window.IRON = window.IRON || {}; window.IRON.enabled3StepsTrialForm = true; }); window.addEventListener("DOMContentLoaded", function() { trialFormSetStep("#trial-license", 1); }); </script> <script data-hbspt-form> /* settings of from one */ var hsFormOptions_one = { region: "na1", portalId: "22630553", formId: "78c61202-075f-4baa-909b-54216b9dede2", // new form information form for all product formInstanceId: "modal-trial-license", locale: "pl", target: "#trial-license .placeholder__hsform--one", cssClass: "hsform_error_v2 hsform_floating_label", submitButtonClass: "hs-button primary large", submitText: "Kontynuuj →", inlineMessage: "<div class=\"d-none\"></div>", onFormReady: function ($form) { var hsFormErrorTooltipMessages = {"email":"Prosz\u0119 wprowadzi\u0107 prawid\u0142owy adres e-mail","firstname":"Prosz\u0119 wprowadzi\u0107 swoje imi\u0119","countrycode":"","phone":"Prawid\u0142owy numer telefonu mo\u017ce zawiera\u0107 tylko cyfry, +()-. lub x","preferred_communication":"Prosz\u0119 wybra\u0107 preferowan\u0105 metod\u0119 kontaktu"}; buildFormErrorTooltips($form, hsFormErrorTooltipMessages); removeHSFormPlaceHolder($form); }, onFormSubmitted: function ($form, data) { trialFormSetStep("#trial-license", 2); // trigger goal start trigger_goal('trial_form_submitted'); setLocalStorageIfTrialSubmitted(); // trigger VWO goal window._vis_opt_queue = window._vis_opt_queue || []; window._vis_opt_queue.push(function() {_vis_opt_goal_conversion(238);}); // Fire Custom Event when form submited dataLayer.push({'event':'trial-from-submitted'}); // HubSpot hubspot_custom_conversion_trigger("pe22630553_trial_from_submitted_v2"); // trigger goal end /// push submited data to 2nd form and mark readonly setTimeout(function() { $(".modal#trial-license .placeholder__hsform--two input[name='email']").attr('readonly', true).val(data.submissionValues.email).change(); }, 200); }, translations: { pl: { fieldLabels: {"email":"Tw\u00f3j e-mail s\u0142u\u017cbowy","firstname":"Imi\u0119","countrycode":"Kod wybierania","phone":"Numer telefonu","preferred_communication":"Preferowana metoda kontaktu"} } }, }; /* settings of from two */ var hsFormOptions_two = { region: "na1", portalId: "22630553", formId: "dbd072d1-1098-4c98-bdc3-7255fc2e0d6b", // existing trial form for each product locale: "pl", target: "#trial-license .placeholder__hsform--two", cssClass: "trialFormTwo hsform_error_v2 hsform_floating_label", submitButtonClass: "hs-button primary large", submitText: "Kontynuuj →", inlineMessage: "<div class=\"d-none\"></div>", onFormReady: function ($form) { var hsFormErrorTooltipMessages = {"email":"Prosz\u0119 wprowadzi\u0107 prawid\u0142owy adres e-mail","firstname":"Prosz\u0119 wprowadzi\u0107 swoje imi\u0119","countrycode":"","phone":"Prawid\u0142owy numer telefonu mo\u017ce zawiera\u0107 tylko cyfry, +()-. lub x","preferred_communication":"Prosz\u0119 wybra\u0107 preferowan\u0105 metod\u0119 kontaktu"}; buildFormErrorTooltips($form, hsFormErrorTooltipMessages); removeHSFormPlaceHolder($form); }, onFormSubmitted: function ($form, data) { // change step to meeting form trialFormSetStep("#trial-license", 3); // trigger window resize for HubSpot meeting form to recalculate the height after update data-src window.dispatchEvent(new Event('resize')); setTimeout(function() { // update iframe from data-src, start const email = data['submissionValues']['email']; const name = data['submissionValues']['firstname']; const phone = data['submissionValues']['phone']; var bookingFormUrl = $('#trial-license .hsform_schedule_meeting .meetings-iframe-container').attr('data-src'); // generate new data-src bookingFormUrl = bookingFormUrl + '&email=' + email; bookingFormUrl = bookingFormUrl + '&firstname=' + name; bookingFormUrl = bookingFormUrl + '&phone=' + phone; $('#trial-license .hsform_schedule_meeting .meetings-iframe-container').attr('data-src', bookingFormUrl); // update iframe from data-src, end // call next form manually after update data-src $.getScript('https://static.hsappstatic.net/MeetingsEmbed/ex/MeetingsEmbedCode.js', function() { }); // listen for the meeting form submit, start // const meetingEventOrigin = 'https://meetings.hubspot.com'; const meetingEventOrigin = 'https://hub.ironsoftware.com'; function handleMessage(event) { // Validate the origin first if (event.origin === meetingEventOrigin) { // only if meetingBookSucceeded if (event.data?.meetingBookSucceeded === true) { // goal for meeting form of 3 steps trial window._vis_opt_queue = window._vis_opt_queue || []; window._vis_opt_queue.push(function() {_vis_opt_goal_conversion(239);}); // Remove this listener after success window.removeEventListener('message', handleMessage); trialFormSetStep("#trial-license", 4); } } } // Register the listener window.addEventListener('message', handleMessage); // listen for the meeting form submit, end }, 200); }, translations: { pl: { fieldLabels: {"email":"Tw\u00f3j e-mail s\u0142u\u017cbowy","firstname":"Imi\u0119","countrycode":"Kod wybierania","phone":"Numer telefonu","preferred_communication":"Preferowana metoda kontaktu"} } }, } // load embed forms after hsoptions is ready document.addEventListener("DOMContentLoaded", function() { const selector = document.querySelector("#trial-license .placeholder__hsform--one"); const modalSelector = document.querySelector("#trial-license.modal_new"); modalSelector.addEventListener("shown.bs.modal", function() { embedCustomHubspotForm(selector, hsFormOptions_one); embedCustomHubspotForm(selector, hsFormOptions_two, false); }, { once: true }); }); </script> <div class="modal modal_new trial-license-new cv-auto" id="trial-license" tabindex="-1" data-bs-backdrop="true" data-form-id="dbd072d1-1098-4c98-bdc3-7255fc2e0d6b" style="" data-js-modal-id="trial-license"> <div class="modal-dialog modal-dialog-scrollable modal-fullscreen"> <div class="modal-content p-0"> <div class="position-relative z-1"> <i class="fa-solid fa-x" data-bs-dismiss="modal" aria-hidden="true" style="position:absolute; top:12px; right:12px; width:40px; height:40px; cursor:pointer; display:flex; align-items:center; justify-content:center;font-size:18px; color:#181818;"></i> </div> <div class="modal-body p-0"> <div id="formtrial" class="modal_body"> <div class="modal-loaded donotdelete"></div> <div class="d-flex h-100 gap-0"> <div class="left d-none d-lg-block"> <div class="wrapper"> <div style="flex:0 1 56px;"><!-- spacer --></div> <div><img src="/img/products/ironpdf-logo-text-dotnet.svg" alt="ironpdf_for_dotnet_log2o" class="product_logo" loading="lazy"></div> <div style="flex:0 1 48px;"><!-- spacer --></div> <div class="bg_wrapper group__started_for_free"> <section class="title"> <div class="h1"><img src="/img/modals/trial-license-new/key_circle_blue.svg" width="40" height="40" alt="Niebieski klucz w kole" loading="lazy">Rozpocznij za DARMO</div> <div class="subtitle">Nie wymaga karty kredytowej</div> </section> <section class="content"> <article> <div class="h2">Przetestuj w żywym środowisku</div> <p>Przetestuj w produkcji bez znaków wodnych.<br>Działa tam, gdzie tego potrzebujesz.</p> <div class="floating_icon"><i class="fa-kit fa-square-arrow-in"></i></div> </article> <article> <div class="h2">Pełni funkcjonalny produkt</div> <p>Uzyskaj 30 dni pełni funkcjonalnego produktu.<br>Uruchom w ciągu kilku minut.</p> <div class="floating_icon"><i class="fa-kit fa-calendar-bottom-check"></i></div> </article> <article> <div class="h2">Pomoc techniczna dostępna 24 godziny na dobę, 5 dni w tygodniu</div> <p>Pełny dostęp do naszego zespołu wsparcia technicznego podczas okresu próbnego</p> <div class="floating_icon"><i class="fa-regular fa-messages-question"></i></i></div> </article> </section> </div> <div class="bg_wrapper group__started_for_free_completed"> <section class="title"> <div class="h1"><img src="/img/modals/trial-license-new/checked_circle_grey.svg" width="40" height="40" alt="Szary klucz w kole" loading="lazy">Rozpocznij za DARMO</div> <div class="subtitle">Formularz próbny został pomyślnie wysłany.</div> </section> <section class="content"> </section> </div> <div class="bg_wrapper group__booking"> <section class="title"> <div class="h1"><img src="/img/modals/trial-license-new/calendar_circle_blue.svg" width="40" height="40" alt="Kalendarz w kole" loading="lazy">Zarezerwuj darmowe Demo na żywo</div> <div class="subtitle">Bez kontaktu, bez danych z karty, bez zobowiązań <span class="detail">Zarezerwuj 30-minutową, osobistą demonstrację.<span></div> </section> <section class="content"> <div class="title_of_listing">Oto, czego można się spodziewać:</div> <article> <p>Demonstrowanie na żywo naszego produktu i jego kluczowych funkcji</p> <div class="floating_icon"><i class="fa-regular fa-circle-check"></i></div> </article> <article> <p>Zyskaj rekomendacje funkcji specyficznych dla projektu</p> <div class="floating_icon"><i class="fa-regular fa-circle-check"></i></div> </article> <article> <p>Wszystkie twoje pytania zostaną odpowiednio wyjaśnione, abyś miał wszystkie potrzebne informacje. (Bez żadnych zobowiązań.)</p> <div class="floating_icon"><i class="fa-regular fa-circle-check"></i></div> </article> </section> </div> <div class="bg_wrapper group__booking_completed"> <section class="title"> <div class="h1"><img src="/img/modals/trial-license-new/checked_circle_grey.svg" width="40" height="40" alt="Szary klucz w kole" loading="lazy">Zarezerwuj darmowe Demo na żywo</div> <div class="subtitle">Twoja rezerwacja została zakończona <span class="detail">Sprawdź e-mail, aby uzyskać potwierdzenie</span></div> </section> <section class="content"> </section> </div> <style> ul.suite_features { list-style: none; li + li { margin-top: 6px } } .grid_listing_products { margin-top: 48px; display: grid; grid-template-columns: auto auto; row-gap:16px; justify-content: space-between; } </style> <div class="group__suite" style="display:none;"> <h2 class="iron_color--deep_blue iron_font--black iron_fs--30" style="margin:0 0 16px;">Want to deploy IronSuite to a live project for FREE?</h2> <h3 class="iron_color--pink iron_font--bold iron_fs--20" style="margin:24px 0 16px;">What’s included?</h3> <ul class="suite_features iron_color--black iron_font--normal iron_fs--18 p-0 m-0"> <li><i class="fa-solid fa-check iron_color--green me-2"></i>Test in production without watermarks</li> <li><i class="fa-solid fa-check iron_color--green me-2"></i>30 days fully functional product</li> <li><i class="fa-solid fa-check iron_color--green me-2"></i>24/5 technical support during trial</li> </ul> <div class="grid_listing_products"> <div><img src="\img\products\h-126\logo-ironpdf.svg" height="32" width="auto" alt="ironpdf Logo" loading="lazy"></div> <div><img src="\img\products\h-126\logo-ironword.svg" height="32" width="auto" alt="ironword Logo" loading="lazy"></div> <div><img src="\img\products\h-126\logo-ironxl.svg" height="32" width="auto" alt="ironxl Logo" loading="lazy"></div> <div><img src="\img\products\h-126\logo-ironppt.svg" height="32" width="auto" alt="ironppt Logo" loading="lazy"></div> <div><img src="\img\products\h-126\logo-ironocr.svg" height="32" width="auto" alt="ironocr Logo" loading="lazy"></div> <div><img src="\img\products\h-126\logo-ironbarcode.svg" height="32" width="auto" alt="ironbarcode Logo" loading="lazy"></div> <div><img src="\img\products\h-126\logo-ironqr.svg" height="32" width="auto" alt="ironqr Logo" loading="lazy"></div> <div><img src="\img\products\h-126\logo-ironprint.svg" height="32" width="auto" alt="ironprint Logo" loading="lazy"></div> <div><img src="\img\products\h-126\logo-ironzip.svg" height="32" width="auto" alt="ironzip Logo" loading="lazy"></div> <div><img src="\img\products\h-126\logo-ironwebscraper.svg" height="32" width="auto" alt="ironwebscraper Logo" loading="lazy"></div> </div> </div> <div style="flex:1 1 auto;"><!-- spacer --></div> <div class="modal_new_trial__support_team"> <div class="image_wrapper"> <img class="lazy" width="64" height="64" aria-label="" src="/img/support-team/support-team-member-6.webp" loading="lazy" alt="Support Team Member 6 related to Dodaj nagłówek i stopkę w PDF przy użyciu iTextSharp i IronPDF w C# z przykładem"> <img class="lazy" width="64" height="64" aria-label="" src="/img/support-team/support-team-member-14.webp" loading="lazy" alt="Support Team Member 14 related to Dodaj nagłówek i stopkę w PDF przy użyciu iTextSharp i IronPDF w C# z przykładem"> <img class="lazy" width="64" height="64" aria-label="" src="/img/support-team/support-team-member-4.webp" loading="lazy" alt="Support Team Member 4 related to Dodaj nagłówek i stopkę w PDF przy użyciu iTextSharp i IronPDF w C# z przykładem"> <img class="lazy" width="64" height="64" aria-label="" src="/img/support-team/support-team-member-2.webp" loading="lazy" alt="Support Team Member 2 related to Dodaj nagłówek i stopkę w PDF przy użyciu iTextSharp i IronPDF w C# z przykładem"> </div> <div class="online">Online 24/5</div> </div> <div class="need_help"><strong>Potrzebujesz pomocy?</strong> Nasz zespół sprzedaży z przyjemnością Ci pomoże.</div> <a href="https://ironsoftware.com/pl/enterprise/trial" class="enterprise-trial__cta">Wypróbuj Testu Enterprise<i class="fa-solid fa-arrow-right"></i></a> <div style="flex:0 1 48px;"><!-- spacer --></div> </div> </div> <div class="right" style="flex:1 1 auto;"> <div class="wrapper"> <div style="flex:0 1 80px;"><!-- spacer --></div> <div class="d-none text-center"> <img loading="lazy" src="/img/products/ironpdf-logo-text-dotnet.svg" alt="ironpdf_for_dotnet_log2o" class="product_logo" style="max-height:50px;" height="50" width="auto"> </div> <!-- Page One --> <div class="right_content page_one"> <div class="header"> <div><img src="/img/modals/trial-license-new/key_circle_blue.svg" width="80" height="80" alt="Klucz w niebieskim kole" loading="lazy"></div> <div class="h2">Uzyskaj natychmiast swój darmowy <strong class="visible-xs-block visible-sm-inline visible-md-inline visible-lg-inline">30-dniowy Klucz Testowy</strong>.</div> </div> <div style="height:48px;"><!-- spacer --></div> <div class="placeholder__hsform--one"></div> <div> <div class="no_credit_required"><img loading="lazy" src="/img/modals/trial-license-new/bullet_checked.svg" width="16" height="16" alt="bullet_checked">Nie wymaga karty kredytowej ani tworzenia konta</div> </div> </div> <!-- Page Two --> <div class="right_content page_two" style="display:none;"> <div class="header"> <div><img src="/img/modals/trial-license-new/key_circle_blue.svg" width="80" height="80" alt="Klucz w niebieskim kole" loading="lazy"></div> <div class="h2">Uzyskaj natychmiast swój darmowy <strong class="visible-xs-block visible-sm-inline visible-md-inline visible-lg-inline">30-dniowy Klucz Testowy</strong>.</div> </div> <div style="height:24px;"><!-- spacer --></div> <div class="placeholder__hsform--two"></div> <div> <div class="no_credit_required"><img loading="lazy" src="/img/modals/trial-license-new/bullet_checked.svg" width="16" height="16" alt="Niebieski klucz w kole">Nie wymaga karty kredytowej ani tworzenia konta</div> </div> </div> <!-- Page Three (meeting form) --> <div class="right_content page_three" style="display:none;"> <div class="header"> <div><img src="/img/modals/trial-license-new/green_check_in_orange_circle.svg" width="80" height="80" alt="Green Check in orange circle" loading="lazy"></div> <div class="h2">Formularz próbny został przesłany <span class="iron_font--bold">pomyślnie</span>.</div> </div> <div style="height:24px;"><!-- spacer --></div> <div class="hsform_schedule_meeting"> <!-- Start of Meetings Embed Script --> <div class="meetings-iframe-container" data-src="https://hub.ironsoftware.com/meetings/iron-software-sales/demo-trial?embed=true"></div> <!-- End of Meetings Embed Script --> </div> </div> <!-- Page Submitted --> <div class="right_content page_submitted formright_submitted" style="display:none;"> <div class="d-none d-md-block" style="flex:0 1 80px;"><!-- spacer --></div> <div class="d-block d-md-none" style="flex:0 1 24px;"><!-- spacer --></div> <!-- submitted for products --> <div class="formright_submitted--products" style="display:block;"> <div><img loading="lazy" src="/img/modals/trial-license-new/green_check_in_orange_circle.svg" width="100" height="100" alt="badge_greencheck_in_yellowcircle"></div> <div class="title">Dziękujemy za rozpoczęcie wersji próbnej</div> <div class="text p-3"><p>Proszę sprawdzić swoją pocztę e-mail, aby uzyskać klucz licencyjny wersji próbnej.</p><p>Jeśli nie otrzymasz wiadomości e-mail, rozpocznij <a href="#livechat" onclick="return window.HubSpotConversations.widget.open()">czat na żywo</a> lub wyślij wiadomość e-mail na <a href="mailto:support@ironsoftware.com">support@ironsoftware.com</a></p></div> <div> <div style="margin:0 auto; width:100%; max-width:248px;"> <div class="my-3"><a class="trial-license__action-button trial-license__action-button_red m-0" style="width:100%; font-size:14px;" href="https://www.nuget.org/packages/IronPdf/" target="_blank"><i class="trial-license__action-button-icon nuget-icon-white2"></i><span class="trial-license__action-button-text">Zainstaluj za pomocą NuGet</span></a></div> <div class="my-3"><a class="trial-license__action-button trial-license__action-button_white m-0" style="width:100%; font-size:14px;" href="/pl/licensing/"><span class="trial-license__action-button-text">Zobacz licencjonowanie</span></a></div> </div></div> </div> <!-- submitted for suite --> <div class="formright_submitted--suite" style="display:none; padding-top:80px;"> <div><img loading="lazy" src="/img/modals/trial-license-new/green_check_in_orange_circle.svg" width="100" height="100" alt="badge_greencheck_in_yellowcircle"></div> <div class="title">Dziękujemy</div> <div class="text p-3">Twój klucz do wersji próbnej powinien być w emailu.<br>Jeśli go tam nie ma, skontaktuj się z <a href="mailto:support@ironsoftware.com" aria-label="Contact support" class="iron_color--deep_blue iron_font--medium iron_hover_color--pink">support@ironsoftware.com</a></div> </div> </div> <div style="flex:1 1 96px"><!-- spacer --></div> <section class="trusted_by"> <ul class="our_clients"><li><img class="img-fluid" loading="lazy" src="/img/modals/trial-license-new/logo_aetna.svg" alt="Logo Aetna" width="80" height="20"></li><li><img class="img-fluid" loading="lazy" src="/img/modals/trial-license-new/logo_nasa.svg" alt="Logo NASA" width="64" height="52"></li><li><img class="img-fluid" loading="lazy" src="/img/modals/trial-license-new/logo_ge.svg" alt="Logo GE" width="54" height="54"></li><li><img class="img-fluid" loading="lazy" src="/img/modals/trial-license-new/logo_porsche.svg" alt="Logo Porsche" width="40" height="52"></li><li><img class="img-fluid" loading="lazy" src="/img/modals/trial-license-new/logo_usds.svg" alt="Logo USDA" width="54" height="54"></li><li><img class="img-fluid" loading="lazy" src="/img/modals/trial-license-new/logo_qatar.svg" alt="Logo Katar" width="114" height="32"></li></ul> <div class="h2">Dołącz do Milionów Inżynierów, którzy wypróbowali IronPDF</div> </section> <section class="trial_key_sent text-center iron_color--black iron_font--normal iron_fs--14 iron_lh--16" style="display:none;"> Twój klucz do wersji próbnej powinien być w emailu.<br>Jeśli go tam nie ma, skontaktuj się z <a href="mailto:support@ironsoftware.com" aria-label="Contact support" class="iron_color--deep_blue iron_font--medium iron_hover_color--pink">support@ironsoftware.com</a> </section> <div style="flex:0 1 80px"><!-- spacer --></div> </div> </div> </div> </div> </div> </div> </div> </div> <script> document.addEventListener("DOMContentLoaded", function() { var selector = "#trial-license"; document.onElementViewportIntersect(selector, function() { var modals = ["trial-license.util.js", "modals/trial-license.css", "modals/trial-license-new.css"]; importModal(modals, "trial-license", debug()); }); }); </script> <script> function getHsProductCodeFromUrl() { const url = window.location.href; if (url.includes("ironpdf.com") || url.includes("ironpdf.local")) { if (url.includes("/java/")) return "pdf-java"; if (url.includes("/python/")) return "pdf-python"; if (url.includes("/nodejs/")) return "pdf-nodejs"; return "pdf"; } else if (url.includes("ironsoftware.com") || url.includes("ironsoftware.local")) { if (url.includes("/word/")) return "word"; if (url.includes("/ocr/")) return "ocr"; if (url.includes("/webscraper/")) return "webscraper"; if (url.includes("/barcode/")) return "barcode"; if (url.includes("/excel/")) return "excel"; if (url.includes("/qr/")) return "qr"; if (url.includes("/zip/")) return "zip"; if (url.includes("/word/")) return "word"; if (url.includes("/print/")) return "print"; if (url.includes("/securedoc/")) return "securedoc"; if (url.includes("/ppt/")) return "ppt"; if (url.includes("/python/excel/")) return "excel-python"; return "suite"; } } function enabledAbandonTrialForm() { function s(e = "") { const headers = new Headers(); headers.append("Content-Type", "application/json"); const body = JSON.stringify({ "fields": [{ "name": "email", "value": e }, { "name": "interested_products", "value": getHsProductCodeFromUrl() } ], "context": { "pageUri": window.location.href, "pageName": window.location.href.split('#')[0] } }); fetch("https://api.hsforms.com/submissions/v3/integration/submit/22630553/e036830d-c04a-4cb9-a5a0-2ba606d5de9f", { method: "POST", headers: headers, body: body, redirect: "follow" }).then((response) => response.text()).then((result) => console.log(result)).catch((error) => console.error(error)); } const w = 'email'; const t = 'trial-license'; const l = 'trial-license-new'; const f = 'name'; const fullScreenTrialModal = document.getElementById(t); if (fullScreenTrialModal && fullScreenTrialModal.classList.contains(l)) { fullScreenTrialModal.addEventListener('hide.bs.modal', function() { let e = []; document.querySelectorAll('#' + t + ' input[' + f + '="' + w + '"]').forEach(function(input) { if (input.value != '' && input.value != null && input.value.length >= 4) { e.push(input.value); } }); if (e.length > 0) { s(e[0]); } }); } }; function enabledSocialTrial() { const target = '.modal#trial-license .right_content.page_one'; const insertAfter = '.no_credit_required'; // Add place holder for social login document.querySelector(target + ' ' + insertAfter).insertAdjacentHTML("afterend", '<div id="firebaseui-auth-container"><div class="or_separator">OR</div></div>'); const firebaseuiAuthContainer = document.querySelector(target + ' #firebaseui-auth-container'); const currentPageUri = window.location.href; function submitHsform(formData) { const myHeaders = new Headers(); const hsu = "https://api.hsforms.com/submissions/v3/integration/submit/23795711/98897ae8-f5f7-4636-ae9e-98d808bc59b7"; myHeaders.append("Content-Type", "application/json"); const raw = JSON.stringify({ "fields": [{ "name": "email", "value": formData.email }, { "name": "firstname", "value": formData.name }, { "name": "comment", "value": "Submit via social login" } ], "context": { "pageUri": currentPageUri, "pageName": "Trial Submit" } }); fetch(hsu, { method: "POST", headers: myHeaders, body: raw, redirect: "follow" }) .then((response) => response.text()) .then((result) => console.log(result)) .catch((error) => console.error(error)); } // helper to load a script function loadScript(src) { return new Promise(resolve => { const s = document.createElement('script'); s.src = src; s.onload = resolve; document.head.appendChild(s); }); } // helper to load CSS function loadCSS(href) { const l = document.createElement('link'); l.rel = "stylesheet"; l.href = href; document.head.appendChild(l); } // Make sure related files are loaded, prevent miss behavior. Promise.all([ loadScript("https://www.gstatic.com/firebasejs/9.23.0/firebase-app-compat.js"), loadScript("https://www.gstatic.com/firebasejs/9.23.0/firebase-auth-compat.js"), loadScript("https://www.gstatic.com/firebasejs/ui/6.0.1/firebase-ui-auth.js"), loadCSS("https://www.gstatic.com/firebasejs/ui/6.0.1/firebase-ui-auth.css"), ]).then(() => { // Firebase config const firebaseConfig = { apiKey: "AIzaSyCsJiQyqdfI_YcNRxxpVUJ_pvicKmH9dX4", authDomain: "iron-authentication.firebaseapp.com", projectId: "iron-authentication", storageBucket: "iron-authentication.firebasestorage.app", messagingSenderId: "381801101678", appId: "1:381801101678:web:2d637bb0cdf2377998e97f" }; // init authn app firebase.initializeApp(firebaseConfig); // FirebaseUI const ui = new firebaseui.auth.AuthUI(firebase.auth()); ui.start('#firebaseui-auth-container', { signInFlow: 'popup', signInOptions: [{ provider: firebase.auth.GoogleAuthProvider.PROVIDER_ID, scopes: [ 'email', 'profile', ], customParameters: { prompt: 'select_account' } }, { provider: firebase.auth.GithubAuthProvider.PROVIDER_ID, scopes: [ 'user:email', 'read:user', ], customParameters: { prompt: 'select_account' } }, ], callbacks: { signInSuccessWithAuthResult: function(authResult) { const user = authResult.user; const userEmail = user.email || user.providerData[0]?.email; const userName = user.displayName; // Place info into the HS form const emailInput = document.querySelector('.modal#trial-license .right_content.page_two .placeholder__hsform--two form input[name="email"]'); const nameInput = document.querySelector('.modal#trial-license .right_content.page_two .placeholder__hsform--two form input[name="firstname"]'); // interact the dom document.querySelector('.modal#trial-license .right_content.page_one').style.display = 'none'; document.querySelector('.modal#trial-license .right_content.page_two').style.display = 'block'; var emailInputField = document.querySelector('.modal#trial-license .placeholder__hsform--two input[name="email"]'); if (emailInputField) { emailInputField.readOnly = true; emailInputField.value = userEmail; emailInputField.dispatchEvent(new Event('change', { bubbles: true })); } if (emailInput) { emailInput.value = userEmail; emailInput.dispatchEvent(new InputEvent('input', { bubbles: true, cancelable: true })); } if (nameInput) { nameInput.value = userName; nameInput.dispatchEvent(new InputEvent('input', { bubbles: true, cancelable: true })); } submitHsform({ "email": userEmail, "name": userName }) firebaseuiAuthContainer.style.display = 'none'; return false; } } }); }); return; } // enabledAbandonTrialForm(); // enabledSocialTrial(); </script> <script> document.addEventListener("DOMContentLoaded", function() { var selector = "#trial-license-form-sent"; document.onElementViewportIntersect(selector, function() { var modals = ["trial-license.util.js", "modals/trial-license.css", "modals/trial-license-new.css"]; importModal(modals, "trial-license-form-sent", debug()); }); }); </script> <div class="modal fade" id="talk-to-sales" tabindex="-1"> <div class="modal-dialog modal-fullscreen modal-dialog-scrollable"> <div class="modal-content talk_to_sales"> <div class="modal-loaded donotdelete"></div> <!-- close modal button --> <button type="button" class="button_close_modal" data-bs-dismiss="modal"><img src="/img/modals/talk_to_sales/icon_close_modal.svg" width="20" height="20" alt="close modal" loading="lazy"></button> <!-- modal content, start --> <div class=""> <div class="d-flex align-items-stretch vh-100"> <div class="content_left d-none d-md-flex flex-column"> <div class="product_logo"><img src="/img/modals/talk_to_sales/main_logo.svg" width="220" height="40" alt="Logo Iron Suite Enterprise" loading="lazy"></div> <div class="h2">Porozmawiaj z Zespołem Sprzedaży</div> <p class="sub_title">Zarezerwuj Konsultację Bez Zobowiązań</p> <div class="team_expert_photo"> <img src="/img/modals/talk_to_sales/team_expert.webp" width="248" height="56" alt="Zespół konsultacyjny Iron Software Enterprise" class="img-fluid" loading="lazy"> </div> <div class="how_we_help"> <div class="h3">Jak możemy pomóc:</div> <ul> <li><span class="d-block"><i class="far fa-check-circle"></i></span><span class="d-block flex-grow-1">Konsultacja Twojego przepływu pracy i punktów bólu</span></li><li><span class="d-block"><i class="far fa-check-circle"></i></span><span class="d-block flex-grow-1">Zobacz, jak inne firmy rozwiązują swoje potrzeby dokumentacyjne .NET</span></li><li><span class="d-block"><i class="far fa-check-circle"></i></span><span class="d-block flex-grow-1">Wszystkie Twoje pytania zostaną odpowiedziane, aby upewnić się, że masz wszystkie potrzebne informacje. (Żadne zobowiązania.)</span></li><li><span class="d-block"><i class="far fa-check-circle"></i></span><span class="d-block flex-grow-1">Otrzymaj dostosowaną wycenę dla potrzeb Twojego projektu</span></li> </ul> </div> </div> <div class="content_right d-flex flex-column"> <div style="flex:0 1 84px;"><!-- spacer --></div> <div class="content_right__hsform_header"> <div class="form_title">Otrzymaj swoje Konsultacja Bez Zobowiązań</div> <p class="sub_title">Wypełnij poniższy formularz lub wyślij e-mail na <a href="mailto:sales@ironsoftware.com" aria-title="">sales@ironsoftware.com</a></p> </div> <div id="form_wrapper" class="form_wrapper" style="min-height: 488px;"> <div class="form_placeholder"></div> <p class="text_below_form"><i class="fa-solid fa-shield-heart"></i>Twoje dane zawsze będą <strong>utrzymywane w tajemnicy.</strong></p> </div> <div style="flex:0 1 98px; min-height:24px;"><!-- spacer --></div> <div class="trusted_by"> <div class="h3">Zaufane przez miliony inżynierów na całym świecie</div> <div><img src="/img/modals/talk_to_sales/trusted_by_logos.webp" width="552" height="97" alt="Logotypy klientów Iron Software" class="img-fluid" loading="lazy"></div> </div> </div> </div> </div> <!-- modal content, end --> </div> </div> </div> <script data-hbspt-form> document.addEventListener("DOMContentLoaded", function() { // iron_hsform_error_v2 (2024 DEC) // required: css group ".iron_hsform_error_v2" // required: label from hubspot // HubSpot form CSS is global; with multiple instances it can affect the wrong form. // Toggle the stylesheet with the modal to prevent modal submissions // from visually updating the page form. let hsCss; var salesTalkSelector = document.querySelector("#talk-to-sales"); salesTalkSelector?.addEventListener("hidden.bs.modal", (evt) => { if (evt.target.id === "talk-to-sales") { hsCss = document.querySelector(`link[rel="stylesheet"][type="text/css"][href="/front/css/hbsptforms.css?v=1776102026"]`); hsCss && (hsCss.disabled = true); } }); salesTalkSelector?.addEventListener("show.bs.modal", (evt) => { if (evt.target.id === "talk-to-sales") { hsCss && (hsCss.disabled = false); } }); var this_hsFormID = "dd27b8f3-83d9-4518-8fbc-8d07ec8b0761"; var this_hsFormSubmitText = "Poproś o Wycenię"; var this_hsFormSubmittedText = '<div class="hsform_submitted_badge"></div><div class="hsform_submitted_text">Dziękuję! za przesłanie formularza</div>'; var this_hsFormConfig = { region: "na1", portalId: "22630553", formId: this_hsFormID, locale: "pl", inlineMessage: this_hsFormSubmittedText, submitText: this_hsFormSubmitText, target: "#form_wrapper", cssClass: "hsform_talk-to-sales iron_hsform_error_v2", translations: { "pl": { fieldLabels: {"email":"Twój e-mail służbowy","firstname":"Imię","countrycode":"Kod wybierania","phone":"Numer telefonu","preferred_communication":"Preferowana metoda kontaktu"} } }, onFormReady: function($form) { // alway scoped with $form // inject error element (icon and tooltip) var this_hsFormErrors = {"email":"Proszę wprowadzić prawidłowy adres e-mail","firstname":"Proszę wprowadzić swoje imię","countrycode":"","phone":"Prawidłowy numer telefonu może zawierać tylko cyfry, +()-. lub x","preferred_communication":"Proszę wybrać preferowaną metodę kontaktu"}; var this_hsFormErrorTooltipMessages = { ".hs-form-field.hs-firstname": this_hsFormErrors.firstname || "Proszę wprowadzić swoje imię", ".hs-form-field.hs-email": this_hsFormErrors.email || "Proszę wprowadzić prawidłowy adres e-mail", ".hs-form-field.hs-phone": this_hsFormErrors.phone || "Prawidłowy numer telefonu może zawierać tylko cyfry, +()-. lub x", } for (var classname in this_hsFormErrorTooltipMessages) { const errorElement = $('<div/>', { class: 'iron-hsform-error-element', 'data-toggle': 'tooltip', 'data-placement': 'top', title: this_hsFormErrorTooltipMessages[classname] }); $form.find(classname).append(errorElement); } // create bootstrap's tooltip inside this form only $form.find('[data-toggle="tooltip"]').each(function(index, el) { bootstrap.Tooltip.getOrCreateInstance(this); }); }, onFormSubmitted: function($form) { // hide form header, form making sense of submitted form $form.parent().parent().parent().find('.content_right__hsform_header').hide(); window._vis_opt_queue = window._vis_opt_queue || []; window._vis_opt_queue.push(function() {_vis_opt_goal_conversion(229);}); } }; setupModalPopupWithHubSpotForm(salesTalkSelector, "talk-to-sales", ["modals/talk_to_sales.css"], this_hsFormConfig, "#talk-to-sales div.form_wrapper"); }); </script> <!-- modal start --> <div class="modal fade cv-auto" id="booking-demo" tabindex="-1"> <div class="modal-dialog modal-fullscreen modal-dialog-scrollable"> <div class="modal-content modal_booking_demo"> <div class="modal-loaded donotdelete"></div> <!-- close modal button --> <button type="button" class="button_close_modal" data-bs-dismiss="modal" aria-label="Close"><img src="/img/modals/booking_demo/icon_close_modal.svg" width="20" height="20" alt="close modal button" loading="lazy"></button> <!-- modal content, start --> <div class=""> <div class="d-flex align-items-stretch vh-100"> <div class="content_left d-none d-md-flex flex-column"> <div class="product_logo_wrapper"><img class="product_logo" src="/img/products/ironpdf-logo-text-dotnet-white.svg" width="170" height="28" alt="IronPDF for .Net" loading="lazy"></div> <div style="flex:0 1 56px;"><!-- spacer --></div> <div class="h2">Zarezerwuj darmowe Demo na żywo</div> <p class="sub_title">Zarezerwuj 30-minutowe, osobiste demo.</p> <p class="sub_title_emphasis">Bez umowy, brak danych karty, brak zobowiązań.</p> <div style="flex:0 1 12px;"><!-- spacer --></div> <div class="team_expert_photo_wrapper"> <img loading="lazy" src="/img/modals/booking_demo/team_expert.webp" width="496" height="112" alt="Zespół Iron Software Product Demo" class="team_expert_photo"> </div> <div style="flex:0 1 40px;"><!-- spacer --></div> <div class="how_we_help"> <span class="h3">Oto, czego można się spodziewać:</h3> <ul> <li><span class="d-block"><i class="far fa-check-circle"></i></span><span class="d-block flex-grow-1">Demonstrowanie na żywo naszego produktu i jego kluczowych funkcji</span></li><li><span class="d-block"><i class="far fa-check-circle"></i></span><span class="d-block flex-grow-1">Zyskaj rekomendacje funkcji specyficznych dla projektu</span></li><li><span class="d-block"><i class="far fa-check-circle"></i></span><span class="d-block flex-grow-1">Wszystkie Twoje pytania zostaną odpowiedziane, aby upewnić się, że masz wszystkie potrzebne informacje.<br>(Żadne zobowiązania.)</span></li> </ul> </div> </div> <div class="content_right d-flex flex-column"> <div class="d-none d-md-block" style="flex:0 0 48px;"><!-- spacer --></div> <div class="d-none d-md-block hsform_progress"> <div class="line"></div> <div class="dot step-1"></div> <div class="dot step-2"></div> <div class="text step-1">WYBIERZ CZAS</div> <div class="text step-2">TWOJE DANE</div> </div> <div class="form_title">Zarezerwuj swoje darmowe <strong>Demo na żywo</strong></div> <div class="d-none d-md-block" style="height:72px;"><!-- spacer --></div> <div class="content_right__hsform_header"> <div class="text-center"> <img loading="lazy" src="/img/modals/booking_demo/booking_badge.svg" class="img-fluid mx-auto" width="234" height="170" alt="Booking Badge related to Dodaj nagłówek i stopkę w PDF przy użyciu iTextSharp i IronPDF w C# z przykładem"> </div> </div> <div class="hsform_loader_wrapper"> <div class="hsform_loader"></div> </div> <div class="form_wrapper hsform_schedule_email" style="min-height: 201px;"></div> <div class="hsform_schedule_meeting"> <!-- Start of Meetings Embed Script --> <div class="meetings-iframe-container" data-src="https://hub.ironsoftware.com/meetings/ironsoftware/demo?embed=true"></div> <!-- End of Meetings Embed Script --> </div> <div style="flex:0 0 24px;"><!-- spacer --></div> <div style="flex:0 1 98px;"><!-- spacer --></div> <div class="trusted_by"> <h3 class="h3">Zaufane przez miliony inżynierów na całym świecie</h3> <div><img loading="lazy" src="/img/modals/booking_demo/trusted_by_logos.webp" width="574" height="54" alt="Logotypy klientów Iron Software" class="img-fluid"></div> </div> </div> </div> </div> <!-- modal content, end --> </div> </div> </div> <script data-hbspt-form> document.addEventListener("DOMContentLoaded", function() { var bookingDemoSelector = document.querySelector("#booking-demo"); // iron_hsform_error_v2 (2024 DEC) // required: css group ".iron_hsform_error_v2" // required: label from hubspot window.currentModalID = "#booking-demo"; var this_hsFormID = "28570e7d-08f2-41c5-ab5b-b00342515d68"; var this_hsFormSubmitText = "Rozpocznij rezerwację"; var this_hsFormConfig = { region: "na1", portalId: "22630553", formId: this_hsFormID, locale: 'en', submitText: this_hsFormSubmitText, cssClass: "iron_hsform_meeting iron_hsform_error_v2", onFormReady: function($form) { /* create error tooltip, start */ // alway scoped with $form // inject error element (icon and tooltip), then hide them var this_hsFormErrorTooltipMessages = { ".hs-form-field.hs-firstname": "Proszę wprowadzić swoje imię", ".hs-form-field.hs-email": "Proszę wprowadzić prawidłowy adres e-mail", ".hs-form-field.hs-phone": "", }; for (var classname in this_hsFormErrorTooltipMessages) { const invalidAttr = $('<div/>', { class: 'invalid-field', 'data-toggle': 'tooltip', 'data-placement': 'top', title: this_hsFormErrorTooltipMessages[classname] }); $form.find(classname).append(invalidAttr); } // create bootstrap's tooltip inside this form only $form.find('[data-toggle="tooltip"]').each(function(index, element) { bootstrap.Tooltip.getOrCreateInstance(element); }); /* create error tooltip, end */ }, onFormSubmitted: function($form, data) { $(currentModalID + ' .content_right__hsform_header').hide(); $(currentModalID + ' .hsform_schedule_email').hide(); $(currentModalID + ' .trusted_by').hide(); $(currentModalID + ' .hsform_loader_wrapper').show(); dataLayer.push({ 'event': 'book_live_demo' }); window._vis_opt_queue = window._vis_opt_queue || []; window._vis_opt_queue.push(function() { _vis_opt_goal_conversion(234); }); setTimeout(function() { // collect email address after form submitted const email = data['submissionValues']['email']; // get data-src from next form var nextFormDataSrc = $('.hsform_schedule_meeting .meetings-iframe-container').attr('data-src'); // generate new data-src nextFormDataSrc = nextFormDataSrc + '&email=' + email // inject new data-src to next form $(currentModalID + ' .hsform_schedule_meeting .meetings-iframe-container').attr('data-src', nextFormDataSrc); // call next form manually after update data-src $.getScript('https://static.hsappstatic.net/MeetingsEmbed/ex/MeetingsEmbedCode.js', function() { $(currentModalID + ' .hsform_loader_wrapper').hide(); $(currentModalID + ' .hsform_schedule_meeting').show(); }); }, 0); }, }; /* for form progress, start */ var hsMeetingFormActivated = false; window.addEventListener("message", function(event) { if (event.origin == "https://meetings.hubspot.com" && event.data == "readyForConsentListener" && hsMeetingFormActivated == false) { hsMeetingFormActivated = true; $(currentModalID + ' .hsform_progress').css("visibility", "visible"); $(currentModalID + ' .hsform_progress .step-1.dot').addClass('active'); $(currentModalID + ' .hsform_progress .step-1.text').addClass('active'); } if (event.origin == "https://meetings.hubspot.com" && event.data != "readyForConsentListener" && hsMeetingFormActivated) { // console.log('>> second meeting form displaying') $(currentModalID + ' .hsform_progress .step-1.dot').addClass('completed'); $(currentModalID + ' .hsform_progress .step-1.dot').html('<i class="fas fa-check"></i>'); $(currentModalID + ' .hsform_progress .step-1.text').addClass('completed'); $(currentModalID + ' .hsform_progress .step-2.dot').addClass('active'); $(currentModalID + ' .hsform_progress .step-2.text').addClass('active'); $(currentModalID + ' .hsform_progress .line').addClass('active'); } if (event.origin == "https://meetings.hubspot.com" && event.data.meetingBookSucceeded && hsMeetingFormActivated) { // console.log('>> meeting form submitted') $(currentModalID + ' .hsform_progress .step-2.dot').addClass('completed'); $(currentModalID + ' .hsform_progress .step-2.dot').html('<i class="fas fa-check"></i>'); $(currentModalID + ' .hsform_progress .step-2.text').addClass('completed'); } }); /* for form progress, end */ setupModalPopupWithHubSpotForm(bookingDemoSelector, "booking-demo", ["modals/booking_demo.css"], this_hsFormConfig, "#booking-demo .form_wrapper.hsform_schedule_email"); }); </script> <!-- modal end --> <!-- Article Documentation Typeform Modal START --> <div class="modal fade cv-auto" id="article-feedback-modal" tabindex="-1" data-bs-backdrop="true" aria-modal="true" aria-hidden="true" role="dialog"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <i class="fas fa-times slide-out-close" data-bs-dismiss="modal" aria-hidden="true"></i> </div> <div class="modal-body"> <div class="modal-loaded donotdelete"></div> <div class="article-feedabck__wrapper" id="anchor-improve-the-article" data-tf-widget="zrOqRbmz" data-tf-iframe-props="title=Article feedback" data-tf-medium="snippet" data-tf-hidden="source=https://ironpdf.com/pl/blog/using-ironpdf/read-header-footer-itextsharp" data-tf-disable-auto-focus ></div> <script> document.addEventListener("DOMContentLoaded", function() { setupModalPopup("#article-feedback-modal", "article-feedback-modal", ["https://embed.typeform.com/next/embed.js", "modals/article-typeform.css"]); }); </script> </div> </div> </div> </div> <!-- Article Documentation Typeform Modal END --> <!-- Full Width Code Example Modal START --> <div class="modal full-width-code-example-modal cv-auto" tabindex="-1" id="fullWidthCodeExample" role="dialog"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-loaded donotdelete"></div> <div class="modal-header"> <button title="Close" data-bs-dismiss="modal" aria-hidden="true" class="full-width-code-example-modal__close-button"> <i class="fas fa-times" data-bs-dismiss="modal" aria-hidden="true"></i> </button> </div> <div class="modal-body"></div> </div> </div> </div> <script> document.addEventListener("DOMContentLoaded", function() { var copyButtonSibling = null; const fwCSEl = document.querySelector("#fullWidthCodeExample"); const fwCSModal = bsModal(fwCSEl); document.querySelectorAll(".js-full-screen-code-example-modal").forEach((exBtn) => { exBtn.addEventListener("click", (ev) => { copyButtonSibling = Array.from(getSiblings(exBtn)).filter(sibling => sibling.classList.contains('js-clipboard-button') || sibling.classList.contains('copy-clipboard'))[0]; let copyHoverVal = copyButtonSibling.getAttribute("title"); let copyDataHoverVal = copyButtonSibling.getAttribute("data-original-title"); let codeExampleContent = exBtn.closest(".code-content")?.cloneNode(true); if (!codeExampleContent) { codeExampleContent = exBtn.closest(".code-explorer__content").cloneNode(true); } if (codeExampleContent) { fwCSEl.querySelector(".modal-body").replaceChildren(codeExampleContent); fwCSEl.querySelector(".copy-clipboard")?.setAttribute("title", copyDataHoverVal != '' ? copyDataHoverVal : copyHoverVal); openModalPopup("fullWidthCodeExample", null, false); } }); }); fwCSEl.addEventListener("click", (ev) => { const target = ev.target.closest(".js-exit-full-screen-code-example-modal, .full-width-code-example-modal__close-button"); if (!target) return; const sib = Array.from(getSiblings(target)).filter(sibling => sibling.classList.contains('copy-clipboard'))[0]; if (!sib) return; copyButtonSibling.setAttribute('title', sib.getAttribute('title')); fwCSModal.then((modal) => { modal.hide(); }); }); setupModalPopup("#fullWidthCodeExample", "fullWidthCodeExample", ["modals/code-examples.css"]); }); </script> <!-- Full Width Code Example Modal END --> <script> // toggle dropdown trial form function vwoEnabledHsFormAtStickyFooter() { load_$(() => { // load hubspot form dynamically function dynamicLoadHsForms(formOption, target) { function waitForHsptReady() { var interval = setInterval(function() { if (typeof hbspt !== "undefined") { clearInterval(interval); var option = formOption; option.target = target; hbspt.forms.create(option); } }, 10); } if (typeof hbspt === "undefined") { var script = document.createElement("script"); script.type = "text/javascript"; script.src = "//js.hsforms.net/forms/embed/v2.js"; document.getElementsByTagName("head")[0].appendChild(script); script.onload = function() { waitForHsptReady(); }; } else { waitForHsptReady(); } } // disable open the modal on click at sticky footer bar const $footerSticky = $("#footer-sticky"); $footerSticky.replaceWith($footerSticky.clone(true)); // hide default black cta button $('#footer-sticky-cta-button').hide(); // show a variant hsform $('#placeHolderForHsFormAtStickyFooter').show(); // styling variant $("#footer-sticky").css({ 'cursor': 'default', 'height': '52px' }); $('#footer-sticky .support-text').css({ 'cursor': 'default', }); // hsform options const hsFormOptionsAtStickyFooter = { portalId: "22630553", region: "na1", locale: "en", formId: "78c61202-075f-4baa-909b-54216b9dede2", formInstanceId: "sticky-footer-trial", submitText: "Bezpłatna próba", inlineMessage: "Dziękujemy, sprawdź swoją skrzynkę e-mailową, aby uzyskać bezpłatną wersję próbną.", onFormReady: function($form) { // insert product_id to form hidden input // $form.find('input[name="2-12260276/trial_products"]').val(window.IRON.product.code.toUpperCase()).change(); const el = document.querySelector('#placeHolderForHsFormAtStickyFooter'); const tooltip = new bootstrap.Tooltip(el, { placement: 'top', trigger: 'manual', title: 'Adres e-mail wymagany do otrzymania klucza próbnego', }); const emailInput = $form.find('input[type="email"]')[0]; const observer = new MutationObserver((mutations) => { const mutation = mutations[0]; if (mutation.attributeName === 'class') { if (emailInput.classList.contains('invalid')) { tooltip.show(); setTimeout(() => { tooltip.hide(); }, 3000); } else { tooltip.hide(); } } }); observer.observe(emailInput, { attributes: true, attributeFilter: ['class'] }); }, onFormSubmitted: function($form, data) { // trigger goal start window._vis_opt_queue = window._vis_opt_queue || []; window._vis_opt_queue.push(function() { _vis_opt_goal_conversion(237); }); // Fire Custom Event when form submited dataLayer.push({ 'event': 'trial-from-submitted' }); // HubSpot hubspot_custom_conversion_trigger("pe22630553_trial_from_submitted_v2"); // trigger goal end const nextForm = ".modal#trial-license .placeholder__hsform--two form"; const waitForTargetInput = setInterval(() => { if ($(nextForm).length) { clearInterval(waitForTargetInput); $(nextForm + " input[name='email']").val(data.submissionValues.email).change(); $(nextForm + " input[name='email']").attr('readonly', true); } }, 100); // open full trial modal, jump to step 2 trialFormSetStep('#trial-license', 2); $('#trial-license').modal('show'); }, }; dynamicLoadHsForms(hsFormOptionsAtStickyFooter, "#placeHolderForHsFormAtStickyFooter"); }); } </script> <div id="footer-sticky" class="fixed-support-bar footer-sticky__vwo-test js-hide-footer-on-scroll js-search-offset-block js-modal-open" data-modal-id="trial-license" > <div class="support-text"> <span class="support-text__full-power">30-dniowy okres próbny → Pełna wersja produktu. Bez ograniczeń. Bez karty.</span> <a id="footer-sticky-cta-button" aria-label="Licencja Trial Iron Software" class="js-fixed-support-bar-button vwo-homepage-start-trial-cta-button--control btn btn-red btn-white-red" > <i class="fas fa-key d-inline"></i><span class="d-inline">Bezpłatna próba</span> </a> <div id="placeHolderForHsFormAtStickyFooter"><!-- placeholder --></div> </div> </div> <script> // enabled for debug /* window.onload = function() { vwoEnabledHsFormAtStickyFooter(); }; */ </script> <footer id="footer" class="footer"> <!-- Iron Suite Products --> <div id="new-sc" class="main_product_page new-footer"> <div class="footer__wrapper"> <div class="footer__header"> <a href="https://ironsoftware.com/pl/about-us/1-percent-for-the-planet/" class="footer__header-logo"> <img class="footer__logo" src="/img/footer/logo-1_percent.svg" alt="Logo 1 Percent related to Dodaj nagłówek i stopkę w PDF przy użyciu iTextSharp i IronPDF w C# z przykładem" width="204" height="32" loading="lazy"> </a> <div class="footer__header-content"> <div class="footer__header-tagline"> <div class="footer__icon-wrapper"> <img class="footer__icon" src="/img/footer/textlogo-iron_suite.svg" alt="Textlogo Iron Suite related to Dodaj nagłówek i stopkę w PDF przy użyciu iTextSharp i IronPDF w C# z przykładem" width="201" height="32" loading="lazy"> </div> <h2 class="footer__title"><span>IronPDF jest częścią </span>IRON<strong>SUITE</strong></h2> <p class="footer__subtitle">10 produktów API .NET <span>dla dokumentów biurowych</span></p> </div> <div class="footer__cta"> <a href="https://ironsoftware.com/pl/suite/" class="footer__btn buy-all__btn">Uzyskaj pełną Suite 10 produktów <i class="fa-solid fa-caret-right"></i></a> <a href="https://ironsoftware.com/pl/suite/#trial-license" class="footer__btn free-trial__btn"><i class="fa-solid fa-key"></i>  Bezpłatna próba <i class="fa-solid fa-caret-right"></i></a> </div> </div> </div> <div class="footer__divider d-none d-xl-block"></div> <div class="footer__products"> <h2 class="visually-hidden" id="footer__products__heading">Linki do produktów</h2> <ul class="footer__products-list" aria-labelledby="footer__products__heading"> <li class="footer__product"> <a href="/pl/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to Linki do produktów" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_pdf.svg" alt="ironpdf_logo" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> Twórz, czytaj i edytuj pliki PDF. HTML do PDF dla .NET.</span> </a> </li> <li class="footer__product"> <a href="https://ironsoftware.com/pl/csharp/word/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to Linki do produktów" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_word.svg" alt="ironword_logo" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> Edytuj pliki Word DOCX. Nie wymaga Office Interop.</span> </a> </li> <li class="footer__product"> <a href="https://ironsoftware.com/pl/csharp/excel/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to Linki do produktów" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_xl.svg" alt="ironxl_logo" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> Edytuj pliki Excel i CSV. Nie wymaga Office Interop.</span> </a> </li> <li class="footer__product"> <a href="https://ironsoftware.com/pl/csharp/ppt/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to Linki do produktów" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_ppt.svg" alt="ironppt_logo" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> Twórz i edytuj prezentacje. Nie wymaga Office Interop.</span> </a> </li> <li class="footer__product"> <a href="https://ironsoftware.com/pl/csharp/ocr/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to Linki do produktów" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_ocr.svg" alt="ironocr_logo" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> OCR (wydobywanie tekstu z obrazów) w 125 językach.</span> </a> </li> <li class="footer__product"> <a href="https://ironsoftware.com/pl/csharp/barcode/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to Linki do produktów" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_barcode.svg" alt="ironbarcode_logo" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> Odczytuj i zapisuj kody QR i Barkody.</span> </a> </li> <li class="footer__product"> <a href="https://ironsoftware.com/pl/csharp/qr/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to Linki do produktów" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_qr.svg" alt="ironqr_logo" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> Odczytuj i zapisuj kody QR.</span> </a> </li> <li class="footer__product"> <a href="https://ironsoftware.com/pl/csharp/zip/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to Linki do produktów" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_zip.svg" alt="ironzip_logo" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> Pakuj i rozpakowuj archiwa.</span> </a> </li> <li class="footer__product"> <a href="https://ironsoftware.com/pl/csharp/print/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to Linki do produktów" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_print.svg" alt="ironprint_logo" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> Drukuj dokumenty w aplikacjach .NET.</span> </a> </li> <li class="footer__product"> <a href="https://ironsoftware.com/pl/csharp/webscraper/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to Linki do produktów" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_webscraper.svg" alt="ironwebscraper_logo" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> Skrobnij strukturalne dane z witryn.</span> </a> </li> </ul> </div> </div> </div> <nav class="footer__first-row-wrappe" role="navigation"> <div class="footer__first-row__first-column"> <div class="footer__first-row__logo"> <a href="#"> <img loading="lazy" src="/img/products/footer-top-logo-ironpdf-for-net.svg" alt="IronPDF dla .NET" width="268" height="44"> </a> </div> <div class="footer__first-row__logo-description"> <p>Kiedy potrzebujesz, aby twój PDF wyglądał jak HTML, szybko.</p> </div> </div> <div class="footer__first-row__second-column"> <section class="bifrost"></section> <div class="footer__first-row__second-column__navigation"> <nav class="footer__first-row__navigation"> <p class="footer__first-row__navigation__title">Dokumentacja</p> <ul class="footer__first-row__navigation__links-list"> <li> <a class="footer__first-row__navigation__link" href="/pl/examples/using-html-to-create-a-pdf/" > Przykłady kodu </a> </li> <li> <a class="footer__first-row__navigation__link" href="/pl/how-to/create-new-pdfs/" > Poradniki </a> </li> <li> <a class="footer__first-row__navigation__link" href="/pl/object-reference/api/" target="_blank" > Dokumentacja API </a> </li> <li> <a class="footer__first-row__navigation__link" href="/pl/features/" > Funkcje </a> </li> <li> <a class="footer__first-row__navigation__link" href="/pl/blog/" > Blog </a> </li> <li> <a class="footer__first-row__navigation__link i18n__distrans" href="/assets/ironpdf-brochure.pdf" target="_blank" > Broszura produktówa </a> </li> <li> <a class="footer__first-row__navigation__link" data-bs-toggle="tooltip" data-bs-placement="right" title="Pomaga modelom LLM i narzędziom takim jak ChatGPT i Claude lepiej zrozumieć naszą dokumentację" href="/pl/llms.txt" target="_blank" > Indeks AI (llms.txt) </a> </li> </ul> </nav> <nav class="footer__first-row__navigation"> <p class="footer__first-row__navigation__title">Samouczki</p> <ul class="footer__first-row__navigation__links-list"> <li> <a class="footer__first-row__navigation__link" href="/pl/docs/" > Rozpocznij </a> </li> <li> <a class="footer__first-row__navigation__link" href="/pl/tutorials/html-to-pdf/" > HTML do PDF </a> </li> <li> <a class="footer__first-row__navigation__link" href="/pl/tutorials/csharp-edit-pdf-complete-tutorial/" > Edycja plików PDF w języku C# </a> </li> <li> <a class="footer__first-row__navigation__link" href="/pl/how-to/pixel-perfect-html-to-pdf/" > Debugowanie HTML w Chrome </a> </li> </ul> </nav> <nav class="footer__first-row__navigation"> <p class="footer__first-row__navigation__title">Alternatywy dla VS</p> <ul class="footer__first-row__navigation__links-list"> <li> <a class="footer__first-row__navigation__link" href="/pl/competitors/aspose-vs-ironpdf/" > IronPDF a Aspose </a> </li> <li> <a class="footer__first-row__navigation__link" href="/pl/competitors/syncfusion-vs-ironpdf/" > IronPDF a Syncfusion </a> </li> <li> <a class="footer__first-row__navigation__link" href="/pl/competitors/itext-vs-ironpdf/" > IronPDF a iText </a> </li> <li> <a class="footer__first-row__navigation__link" href="/pl/competitors/apryse-vs-ironpdf/" > IronPDF a Apryse </a> </li> <li> <a class="footer__first-row__navigation__link" href="/pl/competitors/questpdf-vs-ironpdf/" > IronPDF a QuestPDF </a> </li> </ul> </nav> <nav class="footer__first-row__navigation"> <p class="footer__first-row__navigation__title">Licencjonowanie</p> <ul class="footer__first-row__navigation__links-list"> <li> <a class="footer__first-row__navigation__link" href="/pl/licensing/" > Kup licencję </a> </li> <li> <a class="footer__first-row__navigation__link" href="https://ironsoftware.com/pl/resellers/" target="_blank" > Znajdź sprzedawcę </a> </li> <li> <a class="footer__first-row__navigation__link" href="/pl/licensing/upgrades/" > Aktualizacje licencji </a> </li> <li> <a class="footer__first-row__navigation__link" href="/pl/licensing/extensions/" > Odnowienie licencji </a> </li> <li> <a class="footer__first-row__navigation__link" href="/pl/get-started/license-keys/" > Klucze licencyjne </a> </li> <li> <a class="footer__first-row__navigation__link" href="/pl/licensing/eula/" > EULA </a> </li> <li> <a class="footer__first-row__navigation__link" href="https://ironsoftware.com/pl/enterprise/" > Przedsiębiorstwo </a> </li> </ul> </nav> <nav class="footer__first-row__navigation"> <p class="footer__first-row__navigation__title">Wypróbuj za darmo</p> <ul class="footer__first-row__navigation__links-list"> <li> <a class="footer__first-row__navigation__link footer__first-row__navigation__link--highlight js-modal-open" href="https://www.nuget.org/packages/IronPdf/" target="_blank" data-modal-id="trial-license-after-download" > <i class="nuget-icon-pink"></i> Pobierz z NuGet </a> </li> <li> <p class="footer__first-row__navigation__link ga-dll-installer footer-dropdown-menuitem download-library-dropdown dll-installer center-dropdown js-modal-open--downloading" data-modal-id="trial-license-after-download" data-url=" /packages/IronPdf.zip " data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-html="true" data-bs-title='<div class="library_download_dropdown_tooltip v2"><div class="library_download_dropdown_tooltip__menuitem" data-download-link="/packages/IronPdf.zip"><span class="library_download_dropdown_tooltip__menuitem_text"><i class="library_download_dropdown_tooltip__menuitem_fa-icon fab fa-microsoft"></i><span class="library_download_dropdown_tooltip_menuitem_text-label">Windows</span></span></div><div class="library_download_dropdown_tooltip__menuitem" data-download-link="/packages/IronPdf.MacOs.zip"><span class="library_download_dropdown_tooltip__menuitem_text"><i class="library_download_dropdown_tooltip__menuitem_fa-icon fab fa-apple"></i><span class="library_download_dropdown_tooltip_menuitem_text-label">macOS</span></span></div><div class="library_download_dropdown_tooltip__menuitem" data-download-link="/packages/IronPdf.Linux.zip"><span class="library_download_dropdown_tooltip__menuitem_text"><i class="library_download_dropdown_tooltip__menuitem_fa-icon fab fa-linux"></i><span class="library_download_dropdown_tooltip_menuitem_text-label">Linux</span></span></div></div>' data-bs-custom-class='dl-dropdown-tooltip' data-bs-trigger='manual'> <i class="fas fa-download"></i> Pobierz plik DLL <i class="fas fa-caret-down"></i> </p> </li> <li> <p class="footer__first-row__navigation__link ga-windows-installer js-modal-open--downloading" data-modal-id="trial-license-after-download" data-url=" /packages/IronPdfInstaller.zip " > <i class="fab fa-microsoft"></i> Instalator Windows </p> </li> <li> <a class="footer__first-row__navigation__link js-modal-open" href="#trial-license" data-modal-id="trial-license" > <i class="fas fa-key"></i> Bezpłatna próba </a> </li> </ul> </nav> </div> </div> </nav> <nav id="footer__breadcrumbs-navigation-menu"> <div class="container-fluid"> <div class="navigation-container"> <ol class="breadcrumb"> <li class="breadcrumb-item"><a href="/pl/" aria-label="Go to IronPDF">IronPDF</a></li><li class="breadcrumb-item"><a href="/pl/blog/" aria-label="Go to Blog IronPDF">Blog IronPDF</a></li><li class="breadcrumb-item"><a href="/pl/blog/using-ironpdf/" aria-label="Go to Korzystanie z IronPDF">Korzystanie z IronPDF</a></li><li class="breadcrumb-item active">Przeczytaj nagłówek stopkę iTextSharp</li></ol> <a id="footer__topscroll-link" class="top-return-link" href="#top"> Wróć na górę </a> </div> </div> </nav> <nav class="footer__additional-background-wrapper d-none" role="navigation"> <h2 class="visually-hidden" id="footer__global-navigation-menu-heading">Globalne menu nawigacji</h2> <div class="footer__fourth-row-wrapper"> <div class="footer__fourth-row-wrapper__logo-block"> <h3 class="visually-hidden">Logo i adres firmy</h3> <a href="https://ironsoftware.com/pl/"> <img class="footer__fourth-row-wrapper__logo-icon" loading="lazy" src="/img/svgs/hero-logo__162x20.svg" alt="Iron Software" width="162" height="20"> </a> <div class="footer__fourth-row-wrapper__address text-center text-md-end" aria-labelledby="footer-main-links-heading"> <address> 205 N. Michigan Ave. Chicago, IL 60601 USA +1 (312) 500-3060 </address> </div> </div> <div class="footer__fourth-row-wrapper__contact-links-block"> <h3 class="visually-hidden" id="footer__main-navlinks">Glowne linki nawigacji</h3> <ul class="footer__fourth-row-wrapper__links-list" aria-labelledby="footer_main-navlinks"> <li> <a class="footer__fourth-row-wrapper__link" href="https://ironsoftware.com/pl/about-us/" target="_blank"> O nas </a> </li> <li> <a class="footer__fourth-row-wrapper__link" href="https://ironsoftware.com/pl/news/" target="_blank"> Aktualnosci </a> </li> <li> <a class="footer__fourth-row-wrapper__link" href="https://ironsoftware.com/pl/customers/" target="_blank"> Klienci </a> </li> <li> <a class="footer__fourth-row-wrapper__link" href="https://ironsoftware.com/pl/careers/" target="_blank"> Kariera </a> </li> <li> <a class="footer__fourth-row-wrapper__link" href="https://ironsoftware.com/pl/academy/" target="_blank"> Akademia </a> </li> <li> <a class="footer__fourth-row-wrapper__link" href="https://ironsoftware.com/pl/live-streams/" target="_blank"> Webinaria </a> </li> <li> <a class="footer__fourth-row-wrapper__link" href="https://hub.ironsoftware.com/pl/licenses-view" target="_blank"> Logowanie do HUB klienta </a> </li> <li> <a class="footer__fourth-row-wrapper__link" href="https://ironsoftware.com/pl/contact-us/" target="_blank"> Kontakt z nami </a> </li> <li class="d-none d-md-flex"> <div class="iron_lang-menu dropup" data-bs-target="#footerLangNameMenuDropdown"> <button type="button" class="dropdown-toggle" id="iron_lang-menu__language-name_dropdown__current-language" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> polski </button> <ul id="footerLangNameMenuDropdown" class="dropdown-menu" aria-labelledby="footerLangNameMenuDropdown"> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="en" hreflang="en" href="/blog/using-ironpdf/read-header-footer-itextsharp/" >English</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="es" hreflang="es" href="/es/blog/using-ironpdf/read-header-footer-itextsharp/" >Español</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="de" hreflang="de" href="/de/blog/using-ironpdf/read-header-footer-itextsharp/" >Deutsch</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="fr" hreflang="fr" href="/fr/blog/using-ironpdf/read-header-footer-itextsharp/" >Français</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="ja" hreflang="ja" href="/ja/blog/using-ironpdf/read-header-footer-itextsharp/" >日本語</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="ko" hreflang="ko" href="/ko/blog/using-ironpdf/read-header-footer-itextsharp/" >한국어</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="pt" hreflang="pt" href="/pt/blog/using-ironpdf/read-header-footer-itextsharp/" >Português</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans active-lang" data-language-code="pl" hreflang="pl" href="/pl/blog/using-ironpdf/read-header-footer-itextsharp/" >polski</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="zh" hreflang="zh" href="/zh/blog/using-ironpdf/read-header-footer-itextsharp/" >简体中文</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="zh_TW" hreflang="zh-tw" data-language-alias="zh-hant" href="/zh-hant/blog/using-ironpdf/read-header-footer-itextsharp/" >繁體中文</a></li> </ul> </div> </li> </ul> </div> <div class="d-flex flex-column align-items-end"> <h3 class="visually-hidden" id="footer__main-social-links">Linki do mediow spolecznosciowych</h3> <ul class="footer__fourth-row-wrapper__social-icons" aria-labelledby="footer__main-social-links"> <li><a class="footer__fourth-row-wrapper__social-icon" href="https://github.com/iron-software" title="Odkryj repozytorium GitHub Iron Software" target="_blank"><img loading="lazy" src="/img/footer-socials/github.svg" alt="Github related to Linki do mediow spolecznosciowych" width='16' height='15.33'></a></li> <li><a class="footer__fourth-row-wrapper__social-icon" href="https://www.youtube.com/@ironsoftware" title="Zobacz filmy Iron Software na Youtube" target="_blank"><img loading="lazy" src="/img/footer-socials/youtube.svg" alt="Youtube related to Linki do mediow spolecznosciowych" width='16' height='11'></a></li> <li><a class="footer__fourth-row-wrapper__social-icon" href="https://x.com/ironsoftwaredev" title="Obserwuj Iron Software na Twitterze" target="_blank"><img loading="lazy" src="/img/footer-socials/twitter-x.svg" alt="Twitter X related to Linki do mediow spolecznosciowych" width='16' height='13.44'></a></li> <li><a class="footer__fourth-row-wrapper__social-icon" href="https://www.facebook.com/teamironsoftware" title="Pozostan w kontakcie z Iron Software na Facebooku" target="_blank"><img loading="lazy" src="/img/footer-socials/facebook.svg" alt="Facebook related to Linki do mediow spolecznosciowych" width='16' height='16'></a></li> <li><a class="footer__fourth-row-wrapper__social-icon" href="https://www.linkedin.com/company/ironsoftware" title="Polacz Iron Software na LinkedIn" target="_blank"><img loading="lazy" src="/img/footer-socials/linkedin.svg" alt="Linkedin related to Linki do mediow spolecznosciowych" width='16.34' height='16'></a></li> </ul> <a class="footer__fourth-row-wrapper__link" href="https://ironsoftware.com/pl/company/iron-slack-community/"> <img loading="lazy" src="/img/icons/slack-icon.svg" class="footer__fourth-row__slack-icon" alt="Slack Icon related to Linki do mediow spolecznosciowych" width="14" height="14"> Dołącz do Iron Slack</a> </div> </div> </div> </nav> <nav class="footer__fifth-row-wrapper d-none"> <p class="footer__fifth-row-wrapper__teamseas"> <a href="https://ironsoftware.com/pl/about-us/1-percent-for-the-planet/"> <img loading="lazy" src="/img/footer/logo-1-percent.svg" alt="Wspieramy Teamseas" height="40"> </a> </p> <div class="copyright__links d-flex align-items-center"> <h3 class="visually-hidden" id="footer__copyright-heading">Informacje prawne</h3> <p class="footer__fifth-row-wrapper__copyright-text"> Prawa autorskie © Iron Software 2013-2026 </p> <ul class="footer__fifth-row-wrapper__links-list" aria-labelledby="footer__copyright-heading"> <li> <a class="footer__fifth-row-wrapper__link" href="https://ironsoftware.com/pl/company/terms/">Terminy</a> </li> <li> <a class="footer__fifth-row-wrapper__link" href="https://ironsoftware.com/pl/company/privacy/">Prywatność</a> </li> <li> <a class="footer__fifth-row-wrapper__link" href="https://ironsoftware.com/pl/company/cookie/">Cookie</a> </li> </ul> </div> </nav> <!-- New Footer Navs --> <div class="site-footer__wrapper"> <nav class="site-footer" aria-label="Footer"> <div class="site-footer__links"> <a href="https://ironsoftware.com/pl/about-us/" target='_blank' class="site-footer__link"> O nas </a> <a href="https://ironsoftware.com/pl/news/" target='_blank' class="site-footer__link"> Aktualnosci </a> <a href="https://ironsoftware.com/pl/customers/" target='_blank' class="site-footer__link"> Klienci </a> <a href="https://ironsoftware.com/pl/careers/" target='_blank' class="site-footer__link"> Kariera </a> <a href="https://ironsoftware.com/pl/academy/" target='_blank' class="site-footer__link"> Akademia </a> <a href="https://ironsoftware.com/pl/live-streams/" target='_blank' class="site-footer__link"> Webinaria </a> <a href="https://hub.ironsoftware.com/pl/licenses-view" target='_blank' class="site-footer__link"> Logowanie do HUB klienta </a> <a href="https://ironsoftware.com/pl/contact-us/" target='_blank' class="site-footer__link"> Kontakt z nami </a> </div> <div class="site-footer__bar"> <div class="site-footer__ratings"> <a class="site-footer__rating" href="https://ironsoftware.com/pl/awards-and-recognition/" aria-label="G2 Reviews - view awards and recognition"> <div class="site-footer__rating-logo"> <img class="img-fluid" src="/img/awards/g2-reviews.svg" alt="G2 Reviews" width="48" height="48" loading="lazy"> </div> <div class="site-footer__rating-content"> <div class="site-footer__rating-label"> <div class="site-footer__rating-star-meter" role="img" aria-label="Rated 4.9 out of 5 stars" style="--rating-percent: 98%;"> <span class="site-footer__rating-stars-base" aria-hidden="true">★★★★★</span> <span class="site-footer__rating-stars-fill" aria-hidden="true">★★★★★</span> </div> </div> <span class="site-footer__rating-score"><strong>4.9</strong> / 5</span> </div> </a> <a class="site-footer__rating" href="https://ironsoftware.com/pl/awards-and-recognition/" aria-label="Capterra Reviews - view awards and recognition"> <div class="site-footer__rating-logo"> <img class="img-fluid" src="/img/awards/capterra-reviews.svg" alt="Capterra Reviews" width="32" height="32" loading="lazy"> </div> <div class="site-footer__rating-content"> <div class="site-footer__rating-label"> <div class="site-footer__rating-star-meter" role="img" aria-label="Rated 5 out of 5 stars" style="--rating-percent: 100%;"> <span class="site-footer__rating-stars-base" aria-hidden="true">★★★★★</span> <span class="site-footer__rating-stars-fill" aria-hidden="true">★★★★★</span> </div> </div> <span class="site-footer__rating-score"><strong>5</strong> / 5</span> </div> </a> </div> <div class="site-footer__brand"> <div class="site-footer__brand-logo"> <img src="/img/svgs/hero-logo__162x20.svg" alt="Iron Software" width="162" height="20" loading="lazy"> </div> <span class="site-footer__address">205 N. Michigan Ave. Chicago, IL 60601 USA +1 (312) 500-3060</span> </div> <div class="site-footer__contact"> <ul class="site-footer__social-items"> <li class="site-footer__social-item"> <a href="https://github.com/iron-software" class="site-footer__social-link" aria-label="GitHub" target='_blank' > <i class="fa-brands fa-github"></i> </a> </li> <li class="site-footer__social-item"> <a href="https://www.youtube.com/@ironsoftware" class="site-footer__social-link" aria-label="Youtube" target='_blank' > <i class="fa-brands fa-youtube"></i> </a> </li> <li class="site-footer__social-item"> <a href="https://x.com/ironsoftwaredev" class="site-footer__social-link" aria-label="X" target='_blank' > <i class="fa-brands fa-x-twitter"></i> </a> </li> <li class="site-footer__social-item"> <a href="https://www.facebook.com/teamironsoftware" class="site-footer__social-link" aria-label="Facebook" target='_blank' > <i class="fa-brands fa-square-facebook"></i> </a> </li> <li class="site-footer__social-item"> <a href="https://www.linkedin.com/company/ironsoftware" class="site-footer__social-link" aria-label="LinkedIn" target='_blank' > <i class="fa-brands fa-linkedin-in"></i> </a> </li> </ul> <a href="https://ironsoftware.com/pl/company/iron-slack-community/" class="site-footer__cta" arial-label="Join Iron Slack" > <div class="site-footer__cta-logo"> <img src="/img/icons/slack-icon.svg" alt="Slack Icon related to Dodaj nagłówek i stopkę w PDF przy użyciu iTextSharp i IronPDF w C# z przykładem" width="16" height="16" loading="lazy"> </div> <span class="site-footer__cta-text">Dołącz do Iron Slack</span> </a> </div> </div> </nav> </div> <div class="site-copyright__wrapper"> <nav class="site-copyright" aria-label="Copyright & legal"> <div class="site-copyright__partner-logos"> <div class="site-copyright__partner-logo"> <img class="site-copyright__partner-logo-image" src="/img/footer/partner-logo_pdfa--hover.svg" alt="Czlonek Stowarzyszenia PDF" width="46" height="28" loading="lazy"> </div> <div class="site-copyright__partner-logo"> <img class="site-copyright__partner-logo-image" src="/img/footer/partner-logo_microsoft--hover.svg" alt="Partner Microsoft" width="92" height="28" loading="lazy"> </div> <div class="site-copyright__partner-logo"> <img class="site-copyright__partner-logo-image" src="/img/footer/partner-logo_aws--hover.svg" alt="Partner Network AWS" width="87" height="28" loading="lazy"> </div> </div> <div class="site-copyright__meta"> <span class="site-copyright__text">Prawa autorskie © Iron Software 2013-2026</span> <div class="site-copyright__legal"> <a href="https://ironsoftware.com/pl/company/terms/" class="site-copyright__legal-link">Terminy</a> <a href="https://ironsoftware.com/pl/company/privacy/" class="site-copyright__legal-link">Prywatność</a> <a href="https://ironsoftware.com/pl/company/cookie/" class="site-copyright__legal-link">Cookie</a> </div> </div> <div class="site-copyright__donation"> <img src="/img/footer/badge-one_percent.png" alt="One Perent for the Planet" width="230" height="32" loading="lazy"> </div> </nav> </div> </footer> <style> #ironSupportWidgetButtonContainer { display: none; position: fixed; bottom: 16px; right: 16px; width: 60px; height: 60px; z-index: 10500; #ironSupportWidgetButton { font: normal 900 24px/1 var(--ff-gotham); color: #fff; background: url('/img/widgets/livechat/icon_messages.svg') #2c96d5; background-repeat: no-repeat; background-position: center; background-size: 32px auto; width: 60px; height: 60px; border-radius: 50%; cursor: pointer; user-select: none; transition: transform 0.1s ease-in-out; border: none; display: flex; justify-content: center; align-items: center; box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 4px, rgba(0, 0, 0, 0.2) 0px 2px 12px; &:hover { box-shadow: rgba(0, 0, 0, 0.1) 0px 2px 6px, rgba(0, 0, 0, 0.2) 0px 4px 16px; transform: scale(1.1); } } /* control button icon if widget open (active) */ &:has(~#ironSupportWidgetContainer.active) { #ironSupportWidgetButton { background: url('/img/widgets/livechat/icon_x.svg') #2c96d5; background-repeat: no-repeat; background-position: center; background-size: 26px auto; } } } #ironSupportWidgetContainer { /* only display via vwo, on test process */ position: fixed; bottom: 92px; right: 16px; width: 416px; height: 700px; padding: 0; display: none; z-index: 10501; &.active { display: block; } .ironSupportWidgetBody { overflow: hidden; background-color: #fff; border: solid 0px #e7eef0; border-radius: 16px; display: flex; flex-direction: column; height: 100%; padding: 0; margin: 0; box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 4px, rgba(0, 0, 0, 0.2) 0px 2px 12px; .ironSupportWidgetHeader { .ironSupportWidgetTitle { background-color: #2a95d5; display: flex; align-items: center; column-gap: 16px; padding: 16px 24px; .supportLogo { width: 48px; height: 48px; overflow: hidden; display: flex; justify-content: center; align-items: center; background-color: #aaa; border: solid 2px #fff; border-radius: 50%; } .dotSupportStatus { position: absolute; bottom: 0px; right: 0px; background-color: #444; border: solid 2px #fff; width: 11px; height: 11px; border-radius: 50%; &.green { background-color: #02bda5; } &.red { background-color: red; } } h2.title { margin: 0; padding: 0; font: normal 700 18px/1.6 var(--ff-gotham); color: #fff; } .subTitle { margin: 0; padding: 0; font: normal 400 12px/1.4 var(--ff-gotham); color: #fff; } } .ironSupportWidgetButtons { display: flex; column-gap: 2px; padding: 8px 24px 0; margin: 0; background-color: #fff; overflow: hidden; align-items: center; justify-content: center; cursor: pointer; background-color: #2a95d5; .iron_widget_button { flex: 1 0 calc(100%/3); display: flex; align-items: center; justify-content: center; padding: 12px 0; font: normal 700 14px/1.2 var(--ff-gotham); cursor: pointer; color: #fff; user-select: none; border-top: solid 3px #2a95d5; background-color: #5fafdf; &:hover { color: #181818; background-color: #d9e5e9; } &.active { color: #181818; border-top: solid 3px #e01a59; background-color: #fff; i { color: #2a95d5; } } i { margin-right: 8px; width: 18px; height: 18px; color: inherit; display: flex; align-items: center; justify-content: center; pointer-events: none; } } } } &>.ironSupportWidgetTab { flex: 1 1 auto; background-color: #fff; padding: 0; margin: 0; } } /* hschat start */ #hubspotConversationsInlineContainer { height: 100%; overflow: hidden; #hubspotConversationsInlinePlaceholder { /* hubspot chat use height in (px) to render its container, can't be a relative value hide the chat header by moving up the container 72px */ --offset_chat_header: 72px; margin-top: calc(-1 * var(--offset_chat_header)); height: 100%; max-height: calc(100% + var(--offset_chat_header)); z-index: 0; /* below is gen by hubspot */ #hubspot-conversations-inline-parent { height: calc(100% + var(--offset_chat_header)); &>iframe { width: 100%; height: 100%; } } } } /* hschat end */ /* hsform start */ .ironSupportWidgetFormPlaceholder { padding: 24px; height: 100%; form.hs-form { width: 100%; display: flex; flex-direction: column; row-gap: 24px; height: 100%; .hs-input { height: unset; } .hs-button { margin: 0; height: unset; max-width: unset; } .hs-form-field:first-child { margin: 0; } .hs-form-field { margin: 0; } p { margin: 0; } select.hs-input, input[type="tel"], input[name="lastname"], input[name="phone"], input[name="firstname"], input[name="email"] { width: 100%; border-radius: 6px; border: solid 1px #e7eef0; padding: 8px 16px; font: normal 400 14px/1.2 var(--ff-gotham); color: #7e7e7e; background-color: #fafafb; } div.hs-form-field:has(ul.hs-error-msgs) { ul.hs-error-msgs { display: none; } input[name="email"] { border: solid 1px #e01a59; } } input[type="submit"] { background-color: #fff; color: #2a95d5; border: solid 1px #d9e5e9; display: flex; justify-content: center; align-items: center; border-radius: 64px; padding: 8px 0; min-width: 128px; font: normal 700 14px/1.6 var(--ff-gotham); user-select: none; transition: all 0.1s ease-in-out; &:hover { color: #e01a59; box-shadow: rgba(0, 0, 0, 0.1) 0px 2px 6px, rgba(0, 0, 0, 0.2) 0px 4px 16px; } } div.hs-submit { margin-top: auto; align-self: end; } div.hs-form-field>label { font: normal 700 14px/1.2 var(--ff-gotham); color: #525252; margin-bottom: 12px; display: block; } textarea[name="TICKET.content"] { font: normal 400 14px/1.4 var(--ff-gotham); color: #7e7e7e; background-color: #fafafb; border: solid 1px #d9e5e9; padding: 12px 16px; width: 100%; border-radius: 6px; min-height: 84px; &:focus { border: 1px solid #2a95d5; outline: 2px solid #aad5ee; } } input[name="phone"] { font: normal 400 14px/1.4 var(--ff-gotham); color: #7e7e7e; background-color: #fafafb; border: solid 1px #d9e5e9; padding: 12px 16px; width: 100%; border-radius: 6px; &:focus { border: 1px solid #2a95d5; outline: 2px solid #aad5ee; } } input[name="email"] { font: normal 400 14px/1.4 var(--ff-gotham); color: #7e7e7e; background-color: #fafafb; border: solid 1px #d9e5e9; padding: 12px 16px; width: 100%; border-radius: 6px; &:focus { border: 1px solid #2a95d5; outline: 2px solid #aad5ee; } } div.input:has(>input[type="file"]) { font: normal 400 14px/1.4 var(--ff-gotham); color: #7e7e7e; position: relative; display: block; cursor: pointer; line-height: 1.5; border: .075rem solid #d9e5e9; border-radius: 6px; user-select: none; cursor: pointer; min-height: 44px; background-color: #fafafb; &:after { font: normal 400 14px/1.4 var(--ff-gotham); position: absolute; z-index: 0; display: flex; align-items: center; top: 0; bottom: 0; left: 0; width: 100%; padding: 12px 16px; content: "Wybierz plik..."; cursor: pointer; } &:before { font: normal 400 14px/1.4 var(--ff-gotham); color: #7e7e7e; position: absolute; z-index: 1; display: flex; justify-content: center; align-items: center; content: "Przeglądaj"; top: 0; bottom: 0; right: 0; width: fit-content; padding: 12px 16px; border-radius: 0 6px 6px 0; cursor: pointer; background-color: #d9e5e9; } &:hover { border: 1px solid #2a95d5; outline: 2px solid #aad5ee; } &:hover:before { background-color: #5fafdf; color: #fff; } input[type="file"] { margin: 0; filter: alpha(opacity=0); opacity: 0; padding: 0; cursor: pointer; position: absolute; z-index: 2; height: 100%; width: 100%; } } ul[role="checkbox"] { font: normal 400 14px/1.4 var(--ff-gotham); color: #7e7e7e; padding: 0; margin: 0; list-style: none; &>li>label { display: inline-flex; align-items: center; column-gap: 8px; } input[type="radio"] { width: unset; accent-color: #e01a59; height: unset; &:hover, &:checked, &:checked:hover { color: #e01a59; accent-color: none; } } } } } /* hsform end */ } @media screen and (max-width: 575px) { body:has(#ironSupportWidgetContainer.active) { overflow: hidden; } #ironSupportWidgetButtonContainer:has(~#ironSupportWidgetContainer.active) { left: unset; bottom: unset; top: 16px; right: 16px; width: 48px; height: 48px; z-index: 10502; #ironSupportWidgetButton { width: 48px; height: 48px; border: solid 1px #fff; } } #ironSupportWidgetContainer { right: 0; bottom: 0; width: 100%; height: 100%; .ironSupportWidgetBody { border-radius: 0px; } } } </style> <!-- Iron Support Widget Button --> <div id="ironSupportWidgetButtonContainer"> <div id="ironSupportWidgetButton" onclick="toggleIronSupportWidget()"></div> </div> <!-- Iron Support Widget Body --> <div id="ironSupportWidgetContainer" class=""> <div class="ironSupportWidgetBody"> <div class="ironSupportWidgetHeader"> <div class="ironSupportWidgetTitle"> <div style="position:relative;"> <div class="dotSupportStatus green"></div> <div class="supportLogo"> <img src="/img/support-team/support_widget.png" width="48" height="48" alt="Support Widget related to Dodaj nagłówek i stopkę w PDF przy użyciu iTextSharp i IronPDF w C# z przykładem" loading="lazy"> </div> </div> <div> <h2 id="ironSupportWidgetHeaderTitle" class="title">Zespol wsparcia Iron</h2> <div id="ironSupportWidgetHeaderSubTitle" class="subTitle">Jestesmy online 24 godziny, 5 dni w tygodniu.</div> </div> </div> <div class="ironSupportWidgetButtons"> <div class="iron_widget_button active" data-iron-widget-tab="ironSupportWidgetTab1" data-iron-widget-subtitle="Jestesmy online 24 godziny, 5 dni w tygodniu" onclick="ironSupportWidgetTabChange(event);"><i class="fa-solid fa-messages-question"></i>Czat</div> <div class="iron_widget_button" data-iron-widget-tab="ironSupportWidgetTab2" data-iron-widget-subtitle="Otrzymaj odpowiedzi dostarczane na Twoj email w ciągu 24 godzin." onclick="ironSupportWidgetTabChange(event);"><i class="fa-solid fa-envelope"></i>Email</div> <div class="iron_widget_button" data-iron-widget-tab="ironSupportWidgetTab3" data-iron-widget-subtitle="Wolisz porozmawiać? Zadzwonimy do Ciebie w ciągu 24 godzin." onclick="ironSupportWidgetTabChange(event);"><i class="fa-solid fa-phone"></i>Zadzwon do mnie</div> </div> </div> <div id="ironSupportWidgetTab1" class="ironSupportWidgetTab"> <div id="hubspotConversationsInlineContainer"> <div id="hubspotConversationsInlinePlaceholder"><!-- placeholder --></div> </div> </div> <div id="ironSupportWidgetTab2" class="ironSupportWidgetTab" style="display:none;"> <div class="ironSupportWidgetFormPlaceholder"><!-- placeholder --></div> </div> <div id="ironSupportWidgetTab3" class="ironSupportWidgetTab" style="display:none;"> <div class="ironSupportWidgetFormPlaceholder"><!-- placeholder --></div> </div> </div> </div> <!-- # uncomment for test or want chat appear sooner, on website it delay by core web vital # chat will not appear until the trcking script (below) loaded --> <script type="text/javascript" id="hs-script-loader" async defer src="//js.hs-scripts.com/22630553.js"></script> <script> /* pre-register window.ironSupportWidget */ if (typeof window.ironSupportWidget === 'undefined') { window.ironSupportWidget = {}; window.ironSupportWidget.isHsFormLoaded = false; } // hubspot chat place holder if (typeof window.hsConversationsSettings === 'undefined') { window.hsConversationsSettings = {}; } // window.hsConversationsSettings.inlineEmbedSelector = '#hubspotConversationsInlinePlaceholder'; function loadHsFormInSupportWidget() { const supportWidgetFormOptionA = { portalId: "22630553", formId: "8d0b0bf2-6aea-4c76-959c-cb2f9183f7c5", region: "na1", target: "#ironSupportWidgetContainer #ironSupportWidgetTab2 .ironSupportWidgetFormPlaceholder" } const supportWidgetFormOptionB = { portalId: "22630553", formId: "c8f2b8df-0228-4331-b207-9c6c9910764c", region: "na1", target: "#ironSupportWidgetContainer #ironSupportWidgetTab3 .ironSupportWidgetFormPlaceholder" }; dynamicLoadHsForms_inSupportWidget(supportWidgetFormOptionA); dynamicLoadHsForms_inSupportWidget(supportWidgetFormOptionB); } function ironSupportWidgetTabChange(e) { const target = e.target; const targetWidgetTab = target.getAttribute('data-iron-widget-tab'); const textSubtitle = target.getAttribute('data-iron-widget-subtitle'); if (!targetWidgetTab) return; // Save current tab state window.ironSupportWidget.lastTab = targetWidgetTab; window.ironSupportWidget.subTitle = textSubtitle; // Remove 'active' class from all buttons document.querySelectorAll('.iron_widget_button').forEach(button => { button.classList.remove('active'); }); // Add 'active' class to clicked button target.classList.add('active'); // Hide/Show tab document.querySelectorAll('.ironSupportWidgetTab').forEach(tab => { tab.style.display = 'none'; }); const targetTab = document.getElementById(targetWidgetTab); if (targetTab) { targetTab.style.display = 'block'; } // Update subtitle in header const subtitleEl = document.getElementById('ironSupportWidgetHeaderSubTitle'); if (subtitleEl) { subtitleEl.textContent = textSubtitle || ''; } } function toggleIronSupportWidget(action = null) { const widgetContainer = document.getElementById('ironSupportWidgetContainer'); function openWidget() { window.ironSupportWidget.isOpen = true; widgetContainer.classList.add('active'); if (typeof window.ironSupportWidget.isHsFormLoaded !== true) { loadHsFormInSupportWidget(); window.ironSupportWidget.isHsFormLoaded = true; } } function closeWidget() { window.ironSupportWidget.isOpen = false; widgetContainer.classList.remove('active'); } if (action === 'open') { openWidget(); } else if (action === 'close') { closeWidget() } else { if (window.getComputedStyle(widgetContainer).display !== 'none') { closeWidget() } else { openWidget(); } } } // load hubspot form dynamically function dynamicLoadHsForms_inSupportWidget(formOption, target_override = null) { function waitForHsptReady() { var interval = setInterval(function() { if (typeof hbspt !== "undefined") { clearInterval(interval); var option = formOption; if (target_override !== null) { option.target = target_override; } hbspt.forms.create(option); } }, 10); } if (typeof hbspt === "undefined") { var script = document.createElement("script"); script.type = "text/javascript"; script.src = "//js.hsforms.net/forms/embed/v2.js"; document.getElementsByTagName("head")[0].appendChild(script); script.onload = function() { waitForHsptReady(); }; } else { waitForHsptReady(); } } </script> <!-- Start Commonly Loaded Scripts --> <script src="/front/js/iron.loaders.js?v=1776102026" ></script><script src="/front/js/iron.helpers.js?v=1776102026" ></script><script src="/front/js/global.js?v=1776102026" ></script><script src="/front/js/bootstrap-loader/bootstrap-autoloader.min.js?v=1776102026" type="module" async="1"></script><script src="/front/js/page.js?v=1776102026" ></script><script src="/front/js/product.js?v=1776102026" ></script><!-- customJSFiles, Start --> <script src="/front/js/blog.js?v=1776102026" ></script> <script src="/front/js/blog-post.js?v=1776102026" ></script> <script src="/front/js/competitors.js?v=1776102026" ></script> <!-- customJSFiles, End --> <!-- Clarity Code Start --> <script type="text/javascript"> if (!window.deviceDetails.mobileCheck && window.deviceDetails.isDesktopViewport) { (function(c,l,a,r,i,t,y){c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i+"?ref=gtm2";y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);})(window,document,"clarity","script","cximmak38b"); } </script><!-- Clarity Code End --> <!-- AC Code Start --> <script> document.queueDeferredUserIntentAction(function() { importScript("tracking-code/activecampaign.js", debug()); document.fireCustomEvent("thirdPartyScriptLoaded", {scriptName: "activecampaign"}, debug()); }); </script> <!-- AC Code End --> <!-- Impact Sale Tracker Start --> <script> document.queueDeferredUserIntentAction(function() { importScript(["tracking-code/impactsale.js"], debug()).then(function() { setTimeout(function() { importScript(["tracking-code/impactsale-id.js"], debug()); document.fireCustomEvent("thirdPartyScriptLoaded", {scriptName: "impactsale"}, debug()); }, 150); }); }); </script> <!-- Impact Sale Tracker End --> <!-- End Commonly Loaded Scripts --> <!-- Start Setup Helper Functions --> <script> /** * Configures the Algolia Search feature using set-up data that is presumed to originate from an Iron Product's common.json file. * * @param {String} searchData the JSON string data (usually taken from the $common_json['search'] property key) * @param {String} indexName the Algolia Index that should be used (usually taken from the $common_json['search']['name] property key */ function setupAlgoliaSearch(searchData, indexName) { if (typeof 'aa' != 'undefined' && window.dataLayer) { window.searchData = JSON.parse(searchData); window.searchClient = algoliasearch(window.searchData.applicationId, window.searchData.apiKey); window.searchIndex = window.searchClient.initIndex(indexName); aa('init', { appId: window.searchData.applicationId, apiKey: window.searchData.apiKey, useCookie: true }); aa('getUserToken', null, (err, newUserToken) => { if (err) { console.error(err); return; } window.algoliaUserToken = newUserToken; }); let userToken = window.algoliaUserToken; aa('onUserTokenChange', (userToken) => { window.dataLayer.push({ algoliaUserToken: userToken, }); }, { immediate: true }); } else { logMsg("error", 'Algolia failed setup. The required object definitions do not exist!'); } } </script><!-- End Setup Helper Functions --> <!-- Start Algolia Insights Client --> <script> document.addEventListener("DOMContentLoaded", function() { document.queueDeferredUserIntentAction(function() { importScript(['tracking-code/algolia.js', 'algoliasearch-lite.umd.js']).then(function(status) { const algoliaSetup = function() { setupAlgoliaSearch('{"applicationId":"4S8YCFXKT5","apiKey":"ec878b51c06a7d5fbb7aab95991ab432","indexName":"ironpdf","inputPlaceholder":"Przeszukuj API, przyk\u0142ady kodu i samouczki","searchText":"Wyszukiwanie","boostedResult":"To b\u0119dzie najprzydatniejszy artyku\u0142","searchShortCut":["Ctrl","K"],"categories":[{"key":"Best match","title":"Najlepsze dopasowanie","iconClass":null,"color":null},{"key":"Code Examples","title":"Przyk\u0142ady kodu","iconClass":"fas fa-code","color":"#2A95D5"},{"key":"Products","title":"Produkty","iconClass":"fas fa-bookmark","color":"#E01A59"},{"key":"Get Started","title":"Rozpocznij","iconClass":"fas fa-rocket","color":"#2A95D5"},{"key":"Tutorials","title":"Samouczki","iconClass":"fas fa-graduation-cap","color":"#FDA509"},{"key":"How-Tos","title":"Poradniki","iconClass":"fa-regular fa-book","color":"#63C1A0"},{"key":"Languages","title":"J\u0119zyki","iconClass":"fas fa-globe-americas","color":"#2A95D5"},{"key":"Licensing","title":"Licencjonowanie","iconClass":"fas fa-shopping-cart","color":"#E01A59"},{"key":"API Reference","title":"Dokumentacja API","iconClass":"fas fa-bookmark","color":"#89D3DF"},{"key":"Features","title":"Funkcje","iconClass":"fas fa-bookmark","color":"#63C1A0"},{"key":"Support","title":"Wsparcie","iconClass":"fas fa-info-circle","color":"#2A95D5"},{"key":"Blog","title":"Blog","iconClass":"fa-regular fa-file","color":"#15aabf"},{"key":"Troubleshooting","title":"Rozwi\u0105zywanie","iconClass":"fas fa-wrench","color":"#15aabf"},{"key":"Product Updates","title":"Aktualizacje","iconClass":"fa-solid fa-rotate","color":"#146ebe","class":"bottom_separator"}],"previewEnabled":false,"categorySortingEnabled":false,"breadcrubmsEnabled":true,"searchResultLimit":10,"breadcrumbs":[{"title":"IronPDF","url":"/"},{"title":"Licencjonowanie","url":"/licensing/"},{"title":"Dokumentacja","url":"/docs/"},{"title":"Przyk\u0142ady kodu","url":"/examples/using-html-to-create-a-pdf/"},{"title":"Samouczki","url":"/tutorials/html-to-pdf/"},{"title":"Poradniki","url":"how-to/create-new-pdfs/"},{"title":"Dokumentacja API","url":"/object-reference/api/"},{"title":"Wsparcie","url":"https://ironsoftware.com/contact-us/"},{"title":"IronOCR","url":"https://ironsoftware.com/csharp/ocr/"},{"title":"IronBarcode","url":"https://ironsoftware.com/csharp/barcode/"},{"title":"IronXL","url":"https://ironsoftware.com/csharp/excel/"},{"title":"IronWebscraper","url":"https://ironsoftware.com/csharp/webscraper/"},{"title":"Iron Software","url":"https://ironsoftware.com/"},{"title":"Produkty","url":"https://ironsoftware.com/"}],"noResults":{"message":"Brak wynik\u00f3w dla <strong>\u201c{query}\u201d</strong>.","icon":"/img/svgs/search-no-results.svg","alt":"Ikona wiadomo\u015bci"},"error":{"message":"Co\u015b posz\u0142o nie tak. Spr\u00f3buj ponownie.","icon":"/img/svgs/search-no-results.svg","alt":"Ikona wiadomo\u015bci"}}', "ironpdf__pl"); document.fireCustomEvent("thirdPartyScriptLoaded", {scriptName: "algolia"}); }; const algoliaReady = function() { return typeof aa != 'undefined' && typeof algoliasearch != 'undefined' && window.dataLayer; }; if (algoliaReady()) { algoliaSetup(); } else { const aaTimer = setInterval(function() { if (algoliaReady()) { algoliaSetup(); clearInterval(aaTimer); } }, 500); } }); }); }); </script> <!-- End Algolia Insights Client --> <script src="https://iron-ai-assistant-frontend-152f73438a0d.herokuapp.com/widget/ironpdf-assistant.js" data-server-url="https://iron-ai-assistant-frontend-152f73438a0d.herokuapp.com" data-hide-button="true" data-trigger-selector="#ai-chat-assistant" data-min-height="80%" data-margin-top="120px" data-vertical-position="top" defer ></script> </body> </html>