Jak obsługiwać podziały stron HTML na PDF przy użyciu języka C#

Dodanie lub unikanie zalaman stron w HTML PDF za pomoca C

This article was translated from English: Does it need improvement?
Translated
View the article in English

Kontroluj podziały stron w dokumentach PDF, dodając page-break-after: always; do elementów HTML lub zapobiegając podziałom za pomocą page-break-inside: avoid; podczas konwersji HTML do PDF przy użyciu IronPDF w C#.

IronPDF obsługuje zalamania stron w dokumentach PDF. Jedną z głównych różnic między dokumentami PDF a HTML jest to, że dokumenty HTML zazwyczaj się przewijają, podczas gdy PDFy są wielostronicowe i można je drukować. Podczas konwertowania ciągów HTML na PDF, programiści często potrzebują precyzyjnej kontroli nad miejscem, w którym następują zalamania stron, aby zapewnić profesjonalnie wyglądające dokumenty.

Szybki start: Implementacja zalamań stron w konwersji HTML do PDF

Konwertuj HTML na PDF z zalamaniami stron za pomocą IronPDF. Ten przykład demonstruje wstawienie zalamania strony po określonej zawartości HTML, aby zapewnić prawidłowe paginowanie. Dodając styl page-break-after: always;, programiści kontrolują miejsca podziału stron, poprawiając czytelność i organizację wynikowego dokumentu PDF. <div> <section> <article> <div> page-break-inside DIV page-break-inside: avoid page-break-inside: avoid DIV <thead> page-break-inside: avoid page-break-after: always page-break-before: always orphans widows break-inside break-after break-before

  1. Install IronPDF with NuGet Package Manager

    PM > Install-Package IronPdf
  2. Skopiuj i uruchom ten fragment kodu.

    new IronPdf.ChromePdfRenderer()
      .RenderHtmlAsPdf("<html><body><h1>Hello World!</h1><div style='page-break-after: always;'></div></body></html>")
      .SaveAs("pageWithBreaks.pdf");
  3. Wdrożenie do testowania w środowisku produkcyjnym

    Rozpocznij używanie IronPDF w swoim projekcie już dziś z darmową wersją próbną

    arrow pointer


Jak dodać zalamanie strony w HTML do PDF?

Aby utworzyć zalamanie strony w HTML, użyj tego w swoim kodzie HTML:

<div style="page-break-after: always;"></div>
<div style="page-break-after: always;"></div>
HTML

Właściwość CSS page-break-after jest najbardziej niezawodną metodą kontrolowania paginacji podczas renderowania HTML do formatu PDF. Ta właściwość informuje renderer PDF o wstawieniu zalamania strony natychmiast po elemencie zawierającym ten styl. Pracując z marginesami niestandardowymi lub konkretnymi układami strony, zalamania stron zapewniają, że zawartość pojawia się dokładnie tam, gdzie zamierzono.

Dłączego page-break-after działa lepiej niż inne metody?

W tym przykładzie mam w kodzie HTML następujące fragmenty table i img i chcę umieścić je na dwóch oddzielnych stronach, dodając podział strony po table. Właściwość page-break-after zapewnia bardziej spójne wyniki w różnych silnikach renderujących w porównaniu z alternatywami, takimi jak page-break-before lub ręczne odstępy. Tworząc nowe PDFy o złożonych układach, to podejście zapewnia przewidywalną paginację.

Jakie elementy powinienem używać do zalamań stron?

Podziały stron działają skutecznie z elementami blokowymi, takimi jak div, section i article. Chociaż style podziału stron można stosować do różnych elementów HTML, umieszczenie treści w dedykowanym tagu div zapewnia najbardziej wiarygodne wyniki. Jest to szczególnie ważne przy pracy z nagłówkami i stopkami, które muszą pojawiać się spójnie na stronach.

Tabela

<table style="border: 1px solid #000000">
  <tr>
    <th>Company</th>
    <th>Product</th>
  </tr>
  <tr>
    <td>Iron Software</td>
    <td>IronPDF</td>
  </tr>
  <tr>
    <td>Iron Software</td>
    <td>IronOCR</td>
  </tr>
</table>
<table style="border: 1px solid #000000">
  <tr>
    <th>Company</th>
    <th>Product</th>
  </tr>
  <tr>
    <td>Iron Software</td>
    <td>IronPDF</td>
  </tr>
  <tr>
    <td>Iron Software</td>
    <td>IronOCR</td>
  </tr>
</table>
HTML

Obraz

<img src="/static-assets/pdf/how-to/html-to-pdf-page-breaks/ironpdf-logo-text-dotnet.svg" style="border:5px solid #000000; padding:3px; margin:5px" />
<img src="/static-assets/pdf/how-to/html-to-pdf-page-breaks/ironpdf-logo-text-dotnet.svg" style="border:5px solid #000000; padding:3px; margin:5px" />
HTML

Jak zaimplementować zalamania stron w kodzie C#?

:path=/static-assets/pdf/content-code-examples/how-to/html-to-pdf-page-breaks-page-break.cs
using IronPdf;

const string html = @"
  <table style='border: 1px solid #000000'>
    <tr>
      <th>Company</th>
      <th>Product</th>
    </tr>
    <tr>
      <td>Iron Software</td>
      <td>IronPDF</td>
    </tr>
    <tr>
      <td>Iron Software</td>
      <td>IronOCR</td>
    </tr>
  </table>

  <div style='page-break-after: always;'> </div>

  <img src='https://ironpdf.com/img/products/ironpdf-logo-text-dotnet.svg'>";

var renderer = new ChromePdfRenderer();

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("Page_Break.pdf");
Imports IronPdf

Private Const html As String = "
  <table style='border: 1px solid #000000'>
    <tr>
      <th>Company</th>
      <th>Product</th>
    </tr>
    <tr>
      <td>Iron Software</td>
      <td>IronPDF</td>
    </tr>
    <tr>
      <td>Iron Software</td>
      <td>IronOCR</td>
    </tr>
  </table>

  <div style='page-break-after: always;'> </div>

  <img src='https://ironpdf.com/img/products/ironpdf-logo-text-dotnet.svg'>"

Private renderer = New ChromePdfRenderer()

Private pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("Page_Break.pdf")
$vbLabelText   $csharpLabel

Powyższy kod generuje plik PDF zawierający 2 strony: table na pierwszej stronie i img na drugiej:

Jak unikać zalamań stron w obrazach?

Aby uniknąć podziału strony w obrębie obrazu lub table, należy użyć atrybutu CSS avoid zastosowanego do elementu otaczającego div. Ta technika jest niezbędna do zachowania integralności wizualnej podczas debugowania HTML w Chrome, aby upewnić się, że twoje PDFy renderują się dokładnie tak, jak zamierzono.

<div style="page-break-inside: avoid">
    <img src="no-break-me.png" />
</div>
<div style="page-break-inside: avoid">
    <img src="no-break-me.png" />
</div>
HTML

Dłączego powinienem opakować obrazy w elementy DIV?

Otaczanie obrazów elementami div zapewnia lepszą kontrolę nad zachowaniem podziałów stron. Właściwość page-break-inside działa najbardziej niezawodnie na elementach blokowych. Z natury, obrazy są elementami w liniowymi, więc opakowanie ich zapewnia właściwe zastosowanie stylu. To podejście jest szczególnie przydatne przy pracy z responsywnymi układami CSS, które muszą zachować swoją strukturę w formacie PDF.

Jakie są powszechne problemy z zalamaniami stron obrazów?

Powszechne problemy obejmują dzielenie obrazów na strony, częściowe renderowanie na granicach stron i utratę podpisów lub związanych z nimi tekstów. Te problemy często występują, gdy obrazy znajdują się blisko dolnej części strony. Użycie opakowania page-break-inside: avoid zapobiega tym problemom, zapewniając, że cały obraz i jego kontener zostaną przeniesione na następną stronę jako całość.

using IronPdf;

// Example showing how to prevent image breaks in a more complex layout
const string htmlWithProtectedImage = @"
<html>
<head>
    <style>
        .no-break { page-break-inside: avoid; }
        .image-container { 
            border: 2px solid #333; 
            padding: 10px; 
            margin: 20px 0;
        }
    </style>
</head>
<body>
    <h1>Product Gallery</h1>
    <p>Our featured products are displayed below:</p>

    <div class='no-break image-container'>
        <img src='product1.jpg' alt='Product 1' />
        <p>Product 1 Description</p>
    </div>

    <div class='no-break image-container'>
        <img src='product2.jpg' alt='Product 2' />
        <p>Product 2 Description</p>
    </div>
</body>
</html>";

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlWithProtectedImage);
pdf.SaveAs("ProductGallery.pdf");
using IronPdf;

// Example showing how to prevent image breaks in a more complex layout
const string htmlWithProtectedImage = @"
<html>
<head>
    <style>
        .no-break { page-break-inside: avoid; }
        .image-container { 
            border: 2px solid #333; 
            padding: 10px; 
            margin: 20px 0;
        }
    </style>
</head>
<body>
    <h1>Product Gallery</h1>
    <p>Our featured products are displayed below:</p>

    <div class='no-break image-container'>
        <img src='product1.jpg' alt='Product 1' />
        <p>Product 1 Description</p>
    </div>

    <div class='no-break image-container'>
        <img src='product2.jpg' alt='Product 2' />
        <p>Product 2 Description</p>
    </div>
</body>
</html>";

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlWithProtectedImage);
pdf.SaveAs("ProductGallery.pdf");
Imports IronPdf

' Example showing how to prevent image breaks in a more complex layout
Const htmlWithProtectedImage As String = "
<html>
<head>
    <style>
        .no-break { page-break-inside: avoid; }
        .image-container { 
            border: 2px solid #333; 
            padding: 10px; 
            margin: 20px 0;
        }
    </style>
</head>
<body>
    <h1>Product Gallery</h1>
    <p>Our featured products are displayed below:</p>

    <div class='no-break image-container'>
        <img src='product1.jpg' alt='Product 1' />
        <p>Product 1 Description</p>
    </div>

    <div class='no-break image-container'>
        <img src='product2.jpg' alt='Product 2' />
        <p>Product 2 Description</p>
    </div>
</body>
</html>"

Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(htmlWithProtectedImage)
pdf.SaveAs("ProductGallery.pdf")
$vbLabelText   $csharpLabel

Jak unikać zalamań stron w tabelach?

Jak pokazano powyżej, można uniknąć podziałów stron w tabelach, używając CSS avoid. Lepiej jest zastosować to do otaczającego elementu div niż do samej tabeli, aby zapewnić zastosowanie stylu do węzła HTML na poziomie bloku. Tworząc kompleksowe samouczki HTML do PDF, odpowiednie formatowanie tabel jest kluczowe dla czytelności.

Kiedy powinienem używać thead dla nagłówków tabeli?

Aby powielić nagłówki i stopki tabeli na każdej stronie dużej tabeli HTML obejmującej wiele stron PDF, należy użyć grupy thead w obrębie tabeli:

<thead>
    <tr>
        <th>C Sharp</th><th>VB</th>
    </tr>
</thead>
<thead>
    <tr>
        <th>C Sharp</th><th>VB</th>
    </tr>
</thead>
HTML

Element <thead> zapewnia, że nagłówki tabeli powtarzają się na każdej stronie, gdy tabela zajmuje wiele stron. Jest to szczególnie przydatne w raportach finansowych, listingach danych i każdym dokumencie, gdzie kontekst na każdej stronie jest potrzebny. Do początkowej konfiguracji i zarysu instalacji, IronPDF automatycznie obsługuje te standardy HTML.

Dłączego opakowanie tabel w DIVy ma znaczenie?

Otaczanie tabel elementami div z kontrolkami podziału strony zapewnia kilka korzyści:

  • Zapewnia, że cała tabela przenosi się jako całość na następną stronę, jeśli jest to konieczne
  • Zapobiega oddzielaniu nagłówków od wierszy danych
  • Pozwala na dodatkowe style i kontrolę odstępów
  • Ułatwia dodawanie podpisów lub opisów, które pozostają z tabelą

Jakie zaawansowane ustawienia CSS3 kontrolują zalamania stron?

Aby uzyskać większą kontrolę, oprócz grupy thead użyj CSS3:

<style type="text/css">
    table { page-break-inside:auto }
    tr { page-break-inside:avoid; page-break-after:auto }
    thead { display:table-header-group }
    tfoot { display:table-footer-group }
</style>
<style type="text/css">
    table { page-break-inside:auto }
    tr { page-break-inside:avoid; page-break-after:auto }
    thead { display:table-header-group }
    tfoot { display:table-footer-group }
</style>
HTML

Jakie właściwości CSS działają najlepiej dla złożonych układów?

Dla złożonych układów, połącz wiele właściwości CSS:

  • page-break-inside - Zapobiega rozdzielaniu elementów
  • page-break-after - Wymusza przełom po elemencie
  • page-break-before - Wymusza przerwę przed elementem
  • orphans i widows - Kontroluje minimalną liczbę wierszy w miejscach podziału stron
  • break-inside, break-after, break-before - Nowoczesne alternatywy dla CSS3

Te właściwości współdziałają tworząc profesjonalnie wyglądające PDFy z odpowiednim przepływem i czytelnością.

Jak rozwiązywać problemy z zalamaniami stron?

Gdy zalamania stron nie działają zgodnie z oczekiwaniami:

  1. Zweryfikuj, czy struktura HTML jest prawidłowa
  2. Sprawdź, czy style są zastosowane do elementów blokowych
  3. Testuj najpierw proste przykłady, a potem dodawaj złożoność
  4. Użyj narzędzi deweloperskich przeglądarki do inspekcji obliczonych stylów
  5. Rozważ użycie opcji renderowania IronPDF dla dodatkowej kontroli

Pamiętaj, że różne renderery PDF mogą różnie obsługiwać zalamania stron, dlatego testowanie z twoim konkretnym przypadkiem użycia jest ważne dla osiągnięcia spójnych wyników we wszystkich scenariuszach.

Często Zadawane Pytania

Jak dodac przerwe strony przy konwersji HTML na PDF w C#?

Aby dodac przerwe strony przy uzyciu IronPDF, wstaw `

` w kodzie HTML, gdzie chcesz, aby nastapila przerwa. ChromePdfRenderer IronPDF rozpozna ta wlasciwosc CSS i utworzy nowa strone w tym miejscu w dokumencie PDF.

Jaka wlasciwosc CSS jest najbardziej niezawodna do kontrolowania przerw stron w konwersji PDF?

Wlasciwosc CSS `page-break-after: always;` jest najbardziej niezawodna metoda podczas uzywania IronPDF. Ta wlasciwosc zapewnia spojne wyniki w roznych silnikach renderowania i zapewnia przewidywalna paginacje w twoich skonwertowanych dokumentach PDF.

Jak moge uniknac przerw stron wewnatrz tabeli lub obrazow?

Aby uniknac niechcianych przerw stron wewnatrz tabeli lub obrazow, uzyj wlasciwosci CSS `page-break-inside: avoid;`. Podczas konwersji HTML na PDF z IronPDF, ten styl zapewnia, ze twoje tabele i obrazy pozostana calkowite na jednej stronie, zamiast byc dzielone na wielu stronach.

Ktore elementy HTML najlepiej wspolpracuja ze stylami przerwy stron?

Przerwy stron dzialaja najskuteczniej z elementami blokowymi, takimi jak `

`, `` i `
`. IronPDF zaleca owinac zawartosc w dedykowany element `
` ze stylem przerwy stron, aby uzyskac najpewniejsze wyniki przy konwersji HTML na PDF.

Czy moge kontrolowac przerwy stron na poziomie CSS zamiast inline style?

Tak, mozesz ustawic style przerwy stron na poziomie CSS zamiast uzywac inline style. Silnik renderowania IronPDF w pelni obsługuje arkusze stylow CSS, pozwalajac ci zdefiniowac reguly przerwy stron w swoim pliku CSS i utrzymywac czystszy, latwiejszy do utrzymania kod HTML.

Dlaczego powinienem uzywac page-break-after zamiast page-break-before?

Wlasciwosc `page-break-after` zapewnia bardziej spojne wyniki w roznych silnikach renderowania w porownaniu z `page-break-before`. Podczas uzywania IronPDF do tworzenia PDF z zlozonymi ukladzami, page-break-after zapewnia bardziej przewidywalne i niezawodne zachowanie paginacji.

Curtis Chau
Autor tekstów technicznych

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

Czytaj więcej
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 18,926,724 | Wersja: 2026.5 just released
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package IronPdf
Uruchom przykład i zobacz, jak Twój kod HTML zamienia się w plik PDF.

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
E-mail
Zadzwon do mnie