如何使用 IronPDF 在 C# 中轉換 PDF 頁面 | IronPDF

使用 IronPDF 在 C# 和 .NET 中轉換 PDF 頁面

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

IronPDF 讓 .NET 開發人員能夠透過縮放與平移內容來轉換 PDF 頁面,同時不改變頁面尺寸。 請使用 Transform 方法,並配合水平/垂直翻譯參數及縮放係數,以程式化方式重新定位並調整頁面內容的大小。

快速入門:輕鬆轉換 PDF 頁面

瞭解如何在 .NET 中使用 IronPDF 函式庫輕鬆轉換 PDF 頁面。 只需幾行程式碼,您即可在不影響原始頁面尺寸的情況下,對頁面內容進行縮放與翻譯。 本指南將示範如何透過轉換功能,無縫提升您的 PDF 文件品質。

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

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

    IronPdf.PdfDocument.FromFile("input.pdf")
      .Pages[0].Transform(50,50,0.8,0.8)
      .SaveAs("output-transformed.pdf");
  3. 部署至您的生產環境進行測試

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

    arrow pointer


如何在 C# 中轉換 PDF 頁面?

Transform 方法可移動及調整內容大小。 此設定僅影響頁面顯示內容的外觀,並不會改變頁面的實際尺寸。 與會改變整頁結構的頁面方向與旋轉不同,變換僅調整內容的定位。 讓我們試著在一個基本的 PDF 文件範例上應用 Transform 方法。

:path=/static-assets/pdf/content-code-examples/how-to/transform-pdf-pages-transform-pdf.cs
using IronPdf;

PdfDocument pdf = PdfDocument.FromFile("basic.pdf");

pdf.Pages[0].Transform(50, 50, 0.8, 0.8);

pdf.SaveAs("transformPage.pdf");
Imports IronPdf

Dim pdf As PdfDocument = PdfDocument.FromFile("basic.pdf")

pdf.Pages(0).Transform(50, 50, 0.8, 0.8)

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

當您需要在合併多個 PDF 檔案後重新定位內容,或為特定自訂紙張尺寸準備文件時,Transform 方法特別有用。 此功能可與其他版面配置功能(例如設定自訂邊距)相輔相成,以實現精確的文件排版。

Transform 方法接受哪些參數?

Transform 方法接受四個關鍵參數,用於控制內容的定位與尺寸:

  • 水平翻譯 (TranslateX):將內容在頁面中水平移動。 正數會將內容向右Shift,負數則會將內容向左Shift。 長度單位遵循 PDF 標準(通常為點,其中 1 點 = 1/72 英吋)。
  • 垂直翻譯 (TranslateY):控制頁面內容的垂直移動。 正數會使內容向下移動,負數則會使內容向上移動。 這在需要為頁首和頁尾預留空間時非常有用。
  • 水平縮放 (ScaleX):用於調整內容寬度的十進位數值。 數值 1.0 維持原始大小,0.5 縮減為一半寬度,2.0 則將寬度加倍。 此參數有助於將內容調整至特定邊界內,同時搭配垂直縮放比例使用時,不會影響長寬比。
  • 垂直縮放 (ScaleY):與 ScaleX 類似,但影響高度。 保持 ScaleXScaleY 的等值,可維持內容原始的長寬比。

以下是一個展示多種轉換的高階範例:

using IronPdf;
using System;

// Load an existing PDF or create a new one
PdfDocument pdf = PdfDocument.FromFile("invoice.pdf");

// Apply different transformations to multiple pages
for (int i = 0; i < pdf.Pages.Count; i++)
{
    if (i % 2 == 0)
    {
        // Even pages: Create margin space and reduce size slightly
        pdf.Pages[i].Transform(30, 30, 0.9, 0.9);
    }
    else
    {
        // Odd pages: Center content with larger margins
        pdf.Pages[i].Transform(40, 60, 0.85, 0.85);
    }
}

// Save the transformed document
pdf.SaveAs("invoice_transformed.pdf");

// You can also export to memory stream for web applications
var memoryStream = pdf.Stream;
using IronPdf;
using System;

// Load an existing PDF or create a new one
PdfDocument pdf = PdfDocument.FromFile("invoice.pdf");

// Apply different transformations to multiple pages
for (int i = 0; i < pdf.Pages.Count; i++)
{
    if (i % 2 == 0)
    {
        // Even pages: Create margin space and reduce size slightly
        pdf.Pages[i].Transform(30, 30, 0.9, 0.9);
    }
    else
    {
        // Odd pages: Center content with larger margins
        pdf.Pages[i].Transform(40, 60, 0.85, 0.85);
    }
}

// Save the transformed document
pdf.SaveAs("invoice_transformed.pdf");

// You can also export to memory stream for web applications
var memoryStream = pdf.Stream;
Imports IronPdf
Imports System

' Load an existing PDF or create a new one
Dim pdf As PdfDocument = PdfDocument.FromFile("invoice.pdf")

' Apply different transformations to multiple pages
For i As Integer = 0 To pdf.Pages.Count - 1
    If i Mod 2 = 0 Then
        ' Even pages: Create margin space and reduce size slightly
        pdf.Pages(i).Transform(30, 30, 0.9, 0.9)
    Else
        ' Odd pages: Center content with larger margins
        pdf.Pages(i).Transform(40, 60, 0.85, 0.85)
    End If
Next

' Save the transformed document
pdf.SaveAs("invoice_transformed.pdf")

' You can also export to memory stream for web applications
Dim memoryStream = pdf.Stream
$vbLabelText   $csharpLabel

為什麼我需要轉換 PDF 頁面?

PDF 頁面轉換在文件處理領域中具有眾多實用應用:

1. 製作可直接印刷的文件:在準備 PDF 檔案進行 Professional 印刷時,您通常需要調整內容位置,以配合出血區、裝訂邊距或特定印表機的要求。 Transform 方法可在無需重新建立文件的情況下實現精確定位。

2. 表單欄位對齊:建立或編輯 PDF 表單後,您可能需要重新定位整個區塊,使其與預印的信紙或範本對齊。 轉換功能可確保所有表單元素維持其相對位置。

3. 多文件編譯:當合併來自不同來源的文件時,每份文件可能具有不同的邊界設定。 使用 Transform 可協助統一所有頁面的呈現樣式,特別是在合併文件中加蓋文字或圖片時非常實用。

4. 響應式 PDF 生成:在根據使用者偏好或裝置規格生成 PDF 的動態應用程式中,Transform 支援即時調整,以確保在不同螢幕尺寸下皆能獲得最佳瀏覽效果。

PDF 轉換前後對比,顯示內容已從全頁佈局調整為重新定位的佈局

PDF 轉換的最佳實踐

在執行 PDF 轉換時,請考慮以下優化策略:

保持長寬比:除非需要刻意變形,否則請始終使用相同的 ScaleXScaleY 數值。 這能確保文字與圖片呈現專業的視覺效果。

邊界條件測試:在套用變換之前,請確認縮放後的內容不會超出頁面邊界。 請計算轉換後的有效內容區域,以避免內容被裁切。

批次處理效率:處理多頁文件時,針對大型文件請考慮採用平行處理:

using IronPdf;
using System.Linq;
using System.Threading.Tasks;

public async Task TransformLargeDocument(string filePath)
{
    PdfDocument pdf = PdfDocument.FromFile(filePath);

    // Process pages in parallel for better performance
    var tasks = pdf.Pages.Select((page, index) => 
        Task.Run(() => 
        {
            // Apply consistent transformation to all pages
            page.Transform(25, 25, 0.95, 0.95);
        })
    ).ToArray();

    await Task.WhenAll(tasks);

    // Save with optimized settings
    pdf.SaveAs("transformed_optimized.pdf");
}
using IronPdf;
using System.Linq;
using System.Threading.Tasks;

public async Task TransformLargeDocument(string filePath)
{
    PdfDocument pdf = PdfDocument.FromFile(filePath);

    // Process pages in parallel for better performance
    var tasks = pdf.Pages.Select((page, index) => 
        Task.Run(() => 
        {
            // Apply consistent transformation to all pages
            page.Transform(25, 25, 0.95, 0.95);
        })
    ).ToArray();

    await Task.WhenAll(tasks);

    // Save with optimized settings
    pdf.SaveAs("transformed_optimized.pdf");
}
Imports IronPdf
Imports System.Linq
Imports System.Threading.Tasks

Public Async Function TransformLargeDocument(filePath As String) As Task
    Dim pdf As PdfDocument = PdfDocument.FromFile(filePath)

    ' Process pages in parallel for better performance
    Dim tasks = pdf.Pages.Select(Function(page, index) _
        Task.Run(Sub()
                     ' Apply consistent transformation to all pages
                     page.Transform(25, 25, 0.95, 0.95)
                 End Sub)
    ).ToArray()

    Await Task.WhenAll(tasks)

    ' Save with optimized settings
    pdf.SaveAs("transformed_optimized.pdf")
End Function
$vbLabelText   $csharpLabel

記憶體管理:針對大型文件,建議採用分段處理並節省記憶體流的方式,以優化伺服器環境中的資源使用效率。

常見的轉換情境

以下是針對特定使用情境的實用範例:

建立縮圖:透過縮放內容同時維持可讀性,來產生 PDF 頁面預覽:

// Create thumbnail-sized versions of pages
pdf.Pages[0].Transform(10, 10, 0.3, 0.3);
// Create thumbnail-sized versions of pages
pdf.Pages[0].Transform(10, 10, 0.3, 0.3);
' Create thumbnail-sized versions of pages
pdf.Pages(0).Transform(10, 10, 0.3, 0.3)
$vbLabelText   $csharpLabel

新增裝訂邊距:將內容向內移動以配合螺旋裝訂或三孔活頁夾:

// Add 0.5 inch (36 points) binding margin on left
pdf.Pages[0].Transform(36, 0, 1.0, 1.0);
// Add 0.5 inch (36 points) binding margin on left
pdf.Pages[0].Transform(36, 0, 1.0, 1.0);
' Add 0.5 inch (36 points) binding margin on left
pdf.Pages(0).Transform(36, 0, 1.0, 1.0)
$vbLabelText   $csharpLabel

內容未填滿頁面時的居中處理:當內容未填滿頁面時,請以Professional方式將其居中:

// Calculate centering offset (assuming standard letter size)
double pageWidth = 612; // points
double contentWidth = 500; // estimated content width
double centerOffset = (pageWidth - contentWidth) / 2;

pdf.Pages[0].Transform(centerOffset, 50, 1.0, 1.0);
// Calculate centering offset (assuming standard letter size)
double pageWidth = 612; // points
double contentWidth = 500; // estimated content width
double centerOffset = (pageWidth - contentWidth) / 2;

pdf.Pages[0].Transform(centerOffset, 50, 1.0, 1.0);
' Calculate centering offset (assuming standard letter size)
Dim pageWidth As Double = 612 ' points
Dim contentWidth As Double = 500 ' estimated content width
Dim centerOffset As Double = (pageWidth - contentWidth) / 2

pdf.Pages(0).Transform(centerOffset, 50, 1.0, 1.0)
$vbLabelText   $csharpLabel

Transform 方法能與 IronPDF 的全面功能集無縫整合,讓您建立具有精確版面的新 PDF 檔案,並修改現有文件以滿足特定需求。 無論您是建置自動化文件處理系統,還是開發客製化報表解決方案,掌握 PDF 轉換技術都能提升您產出專業且格式精準文件的能力。

常見問題

如何在 C# 中透過程式碼轉換 PDF 頁面?

您可以使用 IronPdf 的 Transform 方法轉換 PDF 頁面。此方法讓您能在不改變實際頁面尺寸的情況下,對頁面內容進行縮放與平移。只需在頁面呼叫 Transform 方法,並傳入水平/垂直平移及縮放係數的參數即可。

Transform 方法需要哪些參數?

IronPDF 中的 Transform 方法接受四個參數:TranslateX(水平移動)、TranslateY(垂直移動)、ScaleX(水平縮放)和 ScaleY(垂直縮放)。平移值以點(1/72 英吋)為單位,而縮放值則為十進位倍數。

我可以在不改變頁面大小的情況下移動 PDF 內容嗎?

是的,IronPDF 的 Transform 方法專門用於移動和調整內容的外觀,而不會改變頁面的實際尺寸。這與頁面旋轉或方向變更不同,後者會修改整個頁面的結構。

如何將 PDF 內容縮減至原始大小的 80%?

若要使用 IronPdf 將 PDF 內容縮放至原始大小的 80%,請使用 Transform 方法並將縮放參數設定為 0.8。例如:Pages[0].Transform(0, 0, 0.8, 0.8) 將同時將寬度和高度縮放至 80%。

我可以對 PDF 中的特定頁面套用變換嗎?

是的,IronPDF 允許您透過 Pages 集合存取頁面,對個別頁面進行轉換。您可以根據需要對每頁應用不同的轉換,例如對第一頁使用 Pages[0].Transform()。

正向與負向翻譯值有何區別?

在 IronPDF 的 Transform 方法中,正數的 TranslateX 值會將內容向右移動,負數則向左移動。至於 TranslateY,正數會將內容向下移動,負數則向上移動。這使得內容能夠在任何方向上精確定位。

何時應使用 PDF 轉換而非旋轉功能?

當您需要重新定位或調整內容大小,同時保持頁面尺寸不變時,請使用 IronPDF 的 Transform 方法。此功能非常適合在合併 PDF 檔後、為自訂紙張尺寸準備文件,或在不改變頁面結構的情況下為頁首和頁尾預留空間時使用。

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。