如何使用 C# 透過響應式 CSS 將 HTML 轉換為 PDF

如何在 C# 中結合 CSS 與 HTML 製作響應式 PDF

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

IronPDF 讓 C# 開發人員能夠將帶有 CSS 的 HTML 轉換為 PDF,同時透過支援"螢幕"和"PRINT"兩種媒體類型,來保留響應式設計。PRINT 模式會針對 PDF 輸出優化版面配置,並啟用跨頁重複表格標題等功能。

CSS 的"screen"媒體類型主要用於電腦螢幕及類似裝置的顯示。 當為"screen"媒體類型定義樣式時,這些樣式會影響網頁內容在螢幕上的呈現方式,著重於視覺設計與互動性。 這包括懸停效果、動畫以及背景圖片等元素,這些元素能提升數位顯示螢幕上的使用者體驗。

CSS 的"PRINT"媒體類型專為列印而設計。 它決定網頁列印時的呈現方式,並著重於針對列印頁面優化內容。 此優化可能包含調整字型大小、邊距,以及移除列印時不必要的元素。 PRINT樣式表通常會移除導覽選單、側邊欄及裝飾性元素,以聚焦於核心內容,使文件更易於閱讀並節省墨水。

透過 IronPDF 的 Chrome PDF 渲染引擎,開發人員可完全掌控應使用的媒體類型,確保從 HTML 生成的 PDF 能維持預期的設計與功能。 這種靈活性對於製作需同時滿足數位發行與實體列印需求的文件而言,極具價值。

快速入門:使用響應式 HTML 和 CSS 生成 PDF 檔案 using IronPDF 將採用響應式 CSS 的 HTML 轉換為 PDF。 只需幾行程式碼,即可確保您的 PDF 檔案在各種裝置上完美呈現,同時維持螢幕顯示與 PRINT 樣式的完整性。 本快速指南將示範如何使用 IronPDF,從現有的 HTML 內容生成專業級的 PDF 檔案。

  1. using NuGet 套件管理員安裝 https://www.nuget.org/packages/IronPdf

    PM > Install-Package IronPdf
  2. 請複製並執行此程式碼片段。

    new IronPdf.ChromePdfRenderer { RenderingOptions = { CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print } }
        .RenderUrlAsPdf("https://example.com")
        .SaveAs("responsive.pdf");
  3. 部署至您的生產環境進行測試

    立即透過免費試用,在您的專案中開始使用 IronPDF

    arrow pointer


CSS3 中的"螢幕"與"PRINT"CSS 類型如何運作?

為何選擇正確的 CSS 媒體類型如此重要?

IronPDF 能在 C# 環境中將 HTML 轉為 PDF,並預設可將螢幕樣式表渲染為 PDF。 這點相當便利,因為相較於螢幕版樣式表,PRINT樣式表的文件記錄、使用頻率或開發程度往往較為有限。 然而,理解這些媒體類型的區別對於製作 Professional 品質的 PDF 至關重要。

在 IronPDF 中處理 CSS(螢幕與列印)時,選擇螢幕或列印媒體類型將顯著影響最終的 PDF 輸出效果。 螢幕媒體類型保留互動元素與豐富的視覺設計,而PRINT媒體類型則針對可讀性與紙本閱讀體驗進行內容優化。

CSS3 允許某些 CSS 樣式僅在 PRINT 文件中呈現,而其他樣式則專為網頁瀏覽器設計。 IronPDF 皆可支援,讓您完全掌控 HTML 內容轉為 PDF 的呈現方式。 這種靈活性確保無論您是製作數位報告、可列印發票,還是混合型文件,您的 PDF 都能滿足其預期使用情境的特定需求。

何時該使用 PRINT 與 Screen CSS 媒體類型?

建立並套用 PRINT 樣式表至您的 HTML:瞭解如何建立並套用完美的 PRINT 樣式表。

每種 CSS 媒體類型皆針對不同的使用情境。 請逐一試用,找出最符合您需求的選項。 請遵循以下指引:

在以下情況下使用 PRINT CSS 媒體類型:

  • 製作供實體列印使用的文件
  • 生成發票、報告或正式文件
  • 各頁面需重複顯示表格標題
  • 節省墨水是首要考量
  • 處理自訂紙張尺寸的需求

在以下情況下使用 Screen CSS 媒體類型:

  • 建立具備豐富視覺元素的互動式 PDF
  • 在 PDF/A 中保留網頁設計的美感
  • 包含背景圖片與顏色
  • 該 PDF 文件主要會在螢幕上檢視
  • 處理響應式 HTML 轉 PDF 轉換

螢幕模式與PRINT模式在視覺上有哪些差異?

CSS print vs screen media types comparison showing Apple Mac page with images hidden in print version CSS 媒體類型比較:PRINT 版面省略圖示,螢幕版面則包含 MacBook 規格圖示

上述範例展示了相同的 HTML 內容如何根據 CSS 媒體類型的選擇呈現出不同的效果。 請注意,列印版本會移除裝飾性圖片和圖示,以產生更簡潔、更適合列印的文件;而螢幕版本則保留所有視覺元素,以利數位瀏覽。


如何讓表格標題在 PDF 的各頁中重複顯示?

為何在螢幕模式下表格標題只會出現一次?

處理跨頁的 HTML 表格時,請將 CssMediaType 屬性設定為 PdfCssMediaType.Print。 這可確保表格標題在每個延伸頁面的頂端重複顯示。 相對地,PdfCssMediaType.Screen 會指示 Chrome 僅列印一次頁首。 此功能在建立包含冗長資料表的 PDF 報告時尤為重要。

"PRINT"媒體類型會啟用瀏覽器用於分頁的特定 CSS 規則,其中包括可啟用頁首重複顯示的 thead {display: table-header-group;} 屬性。 此功能對於維持讀者瀏覽多頁文件時的語境連貫性至關重要。

重複頁首需要什麼樣的 HTML 結構?

為確保 Chrome 能偵測到表格標題,請將其包在 <thead> 標籤內。 Let's render the 'tableHeader.html example of repeating table headers' HTML file to PDF to see the effect.

以下為建議的 HTML 結構:

<table>
    <thead>
        <tr>
            <th>Column 1</th>
            <th>Column 2</th>
            <th>Column 3</th>
        </tr>
    </thead>
    <tbody>

    </tbody>
</table>
<table>
    <thead>
        <tr>
            <th>Column 1</th>
            <th>Column 2</th>
            <th>Column 3</th>
        </tr>
    </thead>
    <tbody>

    </tbody>
</table>
HTML

如何在 C# 中實作表格標題重複顯示?

:path=/static-assets/pdf/content-code-examples/how-to/html-to-pdf-responsive-css-table-header.cs
using IronPdf;
using IronPdf.Rendering;

ChromePdfRenderer renderer = new ChromePdfRenderer();

// Change the paper size to small
renderer.RenderingOptions.SetCustomPaperSizeinPixelsOrPoints(600, 400);

// Choose screen or print CSS media
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;

// Render HTML to PDF
PdfDocument pdf = renderer.RenderHtmlFileAsPdf("tableHeader.html");

pdf.SaveAs("tableHeader.pdf");
Imports IronPdf
Imports IronPdf.Rendering

Private renderer As New ChromePdfRenderer()

' Change the paper size to small
renderer.RenderingOptions.SetCustomPaperSizeinPixelsOrPoints(600, 400)

' Choose screen or print CSS media
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print

' Render HTML to PDF
Dim pdf As PdfDocument = renderer.RenderHtmlFileAsPdf("tableHeader.html")

pdf.SaveAs("tableHeader.pdf")
$vbLabelText   $csharpLabel

若需更進階的表格格式設定選項,請探索"自訂邊距"以控制表格周圍的間距,或使用"分頁"功能,確保表格在必要時能從新頁面開始。

最終的 PDF 輸出文件會是什麼樣子?

進階 CSS 媒體類型設定

處理複雜版面配置時,請將 CSS 媒體類型與其他 IronPDF 功能結合使用。 例如,在使用"視口與 Zoom"設定時,您選擇的 CSS 媒體類型會影響響應式設計在最終 PDF 中的縮放效果。

以下是一個展示進階設定的範例:

using IronPdf;
using IronPdf.Rendering;

ChromePdfRenderer renderer = new ChromePdfRenderer();

// Configure for print media type with custom settings
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.PrintHtmlBackgrounds = true; // Override print defaults
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;

// Add custom CSS for print media
string customCss = @"
    @media print {
        .no-print { display: none; }
        body { font-size: 12pt; }
        h1 { page-break-after: avoid; }
    }
";

// Render with custom CSS injection
string htmlWithCss = $"<style>{customCss}</style>{yourHtmlContent}";
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlWithCss);

pdf.SaveAs("advanced-print-layout.pdf");
using IronPdf;
using IronPdf.Rendering;

ChromePdfRenderer renderer = new ChromePdfRenderer();

// Configure for print media type with custom settings
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
renderer.RenderingOptions.PrintHtmlBackgrounds = true; // Override print defaults
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;

// Add custom CSS for print media
string customCss = @"
    @media print {
        .no-print { display: none; }
        body { font-size: 12pt; }
        h1 { page-break-after: avoid; }
    }
";

// Render with custom CSS injection
string htmlWithCss = $"<style>{customCss}</style>{yourHtmlContent}";
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlWithCss);

pdf.SaveAs("advanced-print-layout.pdf");
Imports IronPdf
Imports IronPdf.Rendering

Dim renderer As New ChromePdfRenderer()

' Configure for print media type with custom settings
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print
renderer.RenderingOptions.PrintHtmlBackgrounds = True ' Override print defaults
renderer.RenderingOptions.MarginTop = 25
renderer.RenderingOptions.MarginBottom = 25

' Add custom CSS for print media
Dim customCss As String = "
    @media print {
        .no-print { display: none; }
        body { font-size: 12pt; }
        h1 { page-break-after: avoid; }
    }
"

' Render with custom CSS injection
Dim htmlWithCss As String = $"<style>{customCss}</style>{yourHtmlContent}"
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlWithCss)

pdf.SaveAs("advanced-print-layout.pdf")
$vbLabelText   $csharpLabel

對於需要像素級精準度的專案,建議使用"透過 Chrome 除錯 HTML"功能,在生成最終 PDF 之前,精確預覽 CSS 媒體類型的渲染效果。

IronPDF 中 CSS 媒體類型的最佳實踐

  1. 測試兩種媒體類型:請務必同時使用螢幕和 PRINT 媒體類型測試您的 HTML,以確定哪種方式能為您的特定使用情境產生最佳效果。

  2. 文件列印請選用"PRINT":製作正式文件、發票或報告時,通常選用"PRINT"列印媒體類型能呈現更簡潔、更專業的成果。

  3. 善用媒體查詢:利用 CSS 媒體查詢,針對不同的輸出情境微調版面配置。

  4. 考量效能:PRINT樣式表通常渲染速度較快,因為它們排除了不必要的視覺元素。

  5. 驗證您的 CSS:使用 HTML 渲染設定,確保在生成 PDF 時正確套用您的 CSS。

透過掌握 IronPDF 中的 CSS 媒體類型,無論您的 PDF 是用於數位發行或實體列印,都能完美符合您的需求。

常見問題

如何在 C# 中將採用響應式 CSS 的 HTML 轉換為 PDF?

IronPDF 提供了一種簡便的方法,可在 C# 中將帶有響應式 CSS 的 HTML 轉換為 PDF。您可以使用 ChromePdfRenderer 類別,並透過 RenderingOptions 屬性指定 CSS 媒體類型(螢幕或列印)。只需幾行程式碼,IronPDF 即可保留您的響應式設計,並確保在不同裝置上完美呈現。

在生成 PDF 時,CSS 媒體類型「screen」與「PRINT」有何區別?

IronPDF 同時支援兩種 CSS 媒體類型。「screen」媒體類型會以數位螢幕顯示效果呈現內容,包含懸停效果與動畫;而「PRINT」媒體類型則會透過調整字型、邊距,並移除導覽選單等不必要元素,將內容最佳化以適應列印頁面。IronPDF 的 Chrome PDF 渲染引擎讓您能完全掌控應使用哪種媒體類型。

如何在 PDF 頁面間啟用重複的表格標題?

若要在 PDF 文件中實現跨頁重複顯示表格標題,請在 IronPDF 中將 CSS 媒體類型設定為「PRINT」。可透過在 RenderingOptions 中設定 CssMediaType = IronPdf.Rendering.PdfCssMediaType.PRINT 來達成。此列印媒體類型包含諸如重複顯示標題等優化功能,能提升多頁文件的可讀性。

能否將實際運作中的網站網址直接轉換為具備響應式設計的 PDF/A 檔案?

是的,IronPDF 允許您直接將動態網站轉換為 PDF,同時維持響應式設計。請使用 ChromePdfRenderer 類別中的 RenderUrlAsPdf 方法。您可以指定使用螢幕或列印 CSS 媒體類型,以確保 PDF 能依照您的需求進行渲染。

該函式庫使用哪種渲染引擎進行 HTML 轉 PDF 轉換?

IronPDF 採用 Chrome PDF 渲染引擎,可提供精準的 HTML 轉 PDF 轉換功能,並全面支援現代 CSS3 功能、JavaScript 及響應式設計。此引擎確保您的 PDF 文件能完整保留原始 HTML 內容的設計與功能。

如何為響應式 PDF 設計設定視口尺寸?

IronPDF 允許您透過 ChromePdfRenderer 的 RenderingOptions 屬性來設定視口尺寸。這可確保在將 HTML 轉換為 PDF 時,您的響應式 CSS 媒體查詢能正確運作,讓您能控制內容在不同視口尺寸下的顯示方式。

Curtis Chau
技術撰稿人

Curtis Chau 擁有卡爾頓大學(Carleton University)的電腦科學學士學位,專精於前端開發,並精通 Node.js、TypeScript、JavaScript 及 React。他熱衷於打造直觀且美觀的用戶介面,喜歡運用現代框架,並創建結構完善、視覺上吸引人的手冊。

除了開發工作之外,Curtis 對物聯網(IoT)抱有濃厚興趣,致力於探索整合硬體與軟體的創新方法。閒暇時,他喜歡玩遊戲和開發 Discord 機器人,將對科技的熱愛與創意相結合。

準備開始了嗎?
Nuget 下載 19,014,616 | 版本: 2026.5 just released
Still Scrolling Icon

還在往下捲動嗎?

想要快速確認成果嗎? PM > Install-Package IronPdf
執行範例 觀看您的 HTML 轉為 PDF。