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

How to Use CSS with HTML in C# for Responsive PDFs 如何在 C# 中使用 CSS 與 HTML 來製作回應式 PDF

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

IronPDF 可讓 C# 開發人員將 HTML 與 CSS 轉換為 PDF,同時透過支援"螢幕"與"列印"兩種媒體類型,保留回應式設計。列印模式會針對 PDF 輸出最佳化版面設計,並支援跨頁重複表頭等功能。

CSS 'screen' 媒體類型主要用於在電腦螢幕和類似裝置上顯示。 為"螢幕"媒體類型定義樣式時,會影響網頁內容在螢幕上的顯示方式,強調視覺設計和互動性。 這包括一些元素,如懸停效果、動畫和背景圖片,以增強使用者在數位顯示器上的體驗。

CSS 的"print"媒體類型是專為印刷而設計的。 它決定了網頁在列印時的外觀,著重於針對列印頁面優化內容。 此最佳化可能包括調整字型大小、邊緣,以及移除列印時不必要的元素。 列印樣式表通常會移除導覽選單、側邊欄和裝飾元素,以專注於核心內容,使文件更具可讀性,同時節省油墨。

在使用 IronPDF 的 Chrome PDF 渲染引擎時,開發人員可以完全控制使用哪種媒體類型,確保從 HTML 產生的 PDF 能維持預期的設計和功能。 在製作需要同時達到數位發行與實體印刷目的的文件時,這種彈性是非常有價值的。

快速入門:使用響應式 HTML 和 CSS 產生 PDF

使用 IronPDF 將您的 HTML 與回應式 CSS 轉換為 PDF。 只需幾行程式碼,即可確保您的 PDF 在各種裝置上完美呈現,並維持螢幕與列印樣式的完整性。 本快速指南演示了如何使用 IronPDF 從現有的 HTML 內容實現專業的 PDF 輸出。

Nuget Icon立即開始使用 NuGet 建立 PDF 檔案:

  1. 使用 NuGet 套件管理器安裝 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 中的螢幕與列印 CSS 類型如何運作?

為什麼選擇正確的 CSS 媒體類型很重要?

IronPDF 能以 C# 從 HTML 生成 PDF,並預設能將畫面樣式表呈現為 PDF。 這很方便,因為與螢幕樣式表相比,列印樣式表的文件、使用或開發通常都不夠完善。 然而,了解這些媒體類型之間的區別,對製作專業品質的 PDF 是至關重要的。

在 IronPDF 中使用 CSS (螢幕與列印) 時,螢幕與列印媒體類型的選擇會顯著影響您最終的 PDF 輸出。 螢幕媒體類型會保留互動元素和豐富的視覺設計,而印刷媒體類型則會優化內容的可讀性和紙本消費。

CSS3 允許某些 CSS 樣式僅在列印文件中呈現,而其他樣式則用於 Web 瀏覽器。 IronPdf 可與兩者搭配使用,讓您完全控制 HTML 內容如何渲染為 PDF。 這種靈活性可確保無論您是要建立數位報告、可列印的發票或混合文件,您的 PDF 都能符合其預期用途的特定要求。

何時應該使用列印與螢幕 CSS 媒體類型?

建立並套用HTML列印樣式表:學習如何建立和套用完美的列印樣式表。

每種 CSS 媒體類型都針對不同的使用情況。 試試看哪一個適合您的要求。 請考慮這些準則:

在下列情況下使用列印 CSS 媒體類型:

  • 製作擬用於實體印刷的文件
  • 產生發票、報告或正式文件
  • 您需要在各頁中重複使用表格標題
  • 節省墨水是優先考量
  • 使用 自訂紙張尺寸的需求工作

在下列情況下使用螢幕 CSS 媒體類型:

  • 以豐富的視覺元素建立互動式 PDF
  • 在 PDF 中保留網頁設計美學
  • 包括背景圖片和顏色
  • PDF 主要會在螢幕上觀看
  • 處理回應式 HTML 至 PDF 的轉換

螢幕模式與列印模式的視覺差異為何?

CSS 列印與螢幕媒體類型比較,顯示 Apple Mac 頁面在列印版本中隱藏了圖片CSS 媒體類型比較:列印版式省略圖示,螢幕版式包含 MacBook 規格的圖示

上面的範例展示了相同的 HTML 內容如何根據 CSS 媒體類型的選擇以不同的方式呈現。 請注意印刷版本如何移除裝飾性圖片和圖示,以建立更乾淨、更適合列印的文件,而螢幕版本則保留所有視覺元素,以利數位檢視。


如何在 PDF 頁面中重複表頭?

Why Do Table Headers Only Appear Once in Screen Mode?

當處理跨越多頁的 HTML 表格時,請將 CssMediaType 屬性設定為 PdfCssMediaType.Print。 這可確保表格標題在每個延伸頁面的頂端重複出現。 相較之下,PdfCssMediaType.Screen 只指示 Chrome 列印標頭一次。 這種行為在建立 PDF 報告與冗長的資料表格時尤其重要。

列印媒體類型會啟動瀏覽器用於分頁的特定 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");
$vbLabelText   $csharpLabel

如需更進階的表格格式選項,請探索 自訂邊距,以控制表格周圍的間距,或實作 分頁符,以確保表格在需要時從新的頁面開始。

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

進階 CSS 媒體類型設定

在處理複雜佈局時,請結合 CSS 媒體類型與其他 IronPDF 功能。 例如,在使用 Viewport & 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");
$vbLabelText   $csharpLabel

對於需要像素般精確度的專案,請考慮使用 Debug HTML with Chrome 功能,在產生最終 PDF 之前準確預覽 CSS 媒體類型的呈現方式。

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

1.測試兩種媒體類型:務必同時使用螢幕和印刷媒體類型測試您的 HTML,以確定哪一種類型能針對您的特定使用情況產生最佳效果。

2.文件使用列印:在製作正式文件、發票或報告時,印刷媒體類型通常能提供更乾淨、更專業的效果。

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

4.考慮效能:列印樣式表通常會以更快的速度呈現,因為它們排除了不必要的視覺元素。

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

在 IronPDF 中掌握 CSS 媒體類型,無論是設計用於數位發行或實體印刷,您都可以建立完全符合需求的 PDF。

常見問題解答

如何在 C# 中將具有回應式 CSS 的 HTML 轉換為 PDF?

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

在產生 PDF 時,「螢幕」與「列印」CSS 媒體類型有何差異?

IronPdf 支援兩種 CSS 媒體類型。螢幕」媒體類型會顯示內容在數位螢幕上的顯示效果,並帶有螢幕懸停效果和動畫;而「列印」媒體類型則透過調整字型、頁邊距以及移除不必要的元素(如導航功能表),將內容針對列印頁面進行最佳化。IronPDF 的 Chrome PDF 渲染引擎可讓您完全控制使用哪種媒體類型。

如何在 PDF 頁面上啟用重複表頭?

若要在 PDF 中跨頁重複使用表頭,請在 IronPDF 中將 CSS 媒體類型設為「Print」。這可透過在 RenderingOptions 中設定 CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print 來實現。列印媒體類型包含重複標題等優化功能,可讓多頁文件更具可讀性。

我可以將實時網站的 URL 直接轉換成具有回應式設計的 PDF 嗎?

是的,IronPDF 可讓您直接將實時網站轉換為 PDF,同時維持回應式設計。使用 ChromePdfRenderer 類的 RenderUrlAsPdf 方法。您可以指定使用螢幕或列印 CSS 媒體類型,以確保 PDF 依您的需求渲染。

函式庫使用何種渲染引擎進行 HTML 至 PDF 的轉換?

IronPdf 使用 Chrome PDF 渲染引擎,可提供準確的 HTML 至 PDF 轉換,並完全支援現代 CSS3 功能、JavaScript 和回應式設計。此引擎可確保您的 PDF 能維持原始 HTML 內容的預期設計與功能。

如何設定回應式 PDF 設計的視埠尺寸?

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

Curtis Chau
技術撰稿人

Curtis Chau 擁有電腦科學學士學位(卡爾頓大學),專長於前端開發,精通 Node.js、TypeScript、JavaScript 和 React。Curtis 對製作直覺且美觀的使用者介面充滿熱情,他喜歡使用現代化的架構,並製作結構良好且視覺上吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 也有濃厚的興趣,他喜歡探索整合硬體與軟體的創新方式。在空閒時間,他喜歡玩遊戲和建立 Discord bots,將他對技術的熱愛與創意結合。

準備好開始了嗎?
Nuget 下載 17,527,568 | 版本: 2026.2 剛剛發布