最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#使用Spire.PDF for .NET實現(xiàn)設(shè)置或修改PDF頁面尺寸

 更新時間:2026年02月06日 08:31:24   作者:m5655bj  
在文檔處理場景中,調(diào)整 PDF 頁面尺寸是常見需求,本文將介紹如何使用免費庫 Free Spire.PDF for .NET 通過 C# 代碼設(shè)置或修改 PDF 頁面尺寸,有需要的小伙伴可以了解下

在文檔處理場景中,調(diào)整 PDF 頁面尺寸是常見需求,例如將 A4 尺寸的 PDF 適配 A3 打印紙張、為移動端顯示自定義窄版頁面,或統(tǒng)一多來源 PDF 的頁面規(guī)格。本文將介紹如何使用免費庫 Free Spire.PDF for .NET 通過 C# 代碼設(shè)置或修改 PDF 頁面尺寸。

一、安裝免費 .NET 庫

通過 NuGet 包管理器安裝(最便捷方式):

  • 打開Visual Studio → 右鍵項目 → 管理NuGet程序包 → 搜索“Free Spire.PDF” → 安裝。
  • 或通過NuGet命令行安裝:
Install-Package FreeSpire.PDF

注:Free Spire.PDF for .NET 有10頁的頁數(shù)限制,僅適用于小型文檔。

二、C# 如何調(diào)整 PDF 頁面尺寸

本文采用 “創(chuàng)建新 PDF 文檔 + 原頁面模板繪制” 的方式調(diào)整尺寸,核心優(yōu)勢是通過 PdfTextLayoutOnePage 布局自動適配內(nèi)容到新頁面,避免直接修改尺寸導(dǎo)致的內(nèi)容裁剪或錯位。

PDF 頁面尺寸的核心單位為“點(Point)”,常見尺寸換算關(guān)系:

  • 1英寸 = 72點;
  • A4(210mm×297mm)= 595.28點 × 841.89點;
  • A3(297mm×420mm)= 841.89點 × 1190.55點。

Free Spire.PDF 類庫提供 PdfUnitConvertor 工具類可便捷完成英寸、毫米與點的換算。

場景 1:將現(xiàn)有 PDF 修改為標(biāo)準(zhǔn)預(yù)設(shè)頁面尺寸(A1)

適用于將 PDF 批量調(diào)整為行業(yè)標(biāo)準(zhǔn)尺寸(如 A1、A3、Letter 等),通過 Free Spire.PDF 預(yù)設(shè)的PdfPageSize 枚舉直接指定尺寸,無需手動換算單位。

using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;

namespace ChangePageSizeToStandardPaperSize
{
    class Program
    {
        static void Main(string[] args)
        {            
            // 1. 創(chuàng)建PdfDocument實例并加載原始PDF
            PdfDocument originPdf = new PdfDocument();
            originPdf.LoadFromFile("Sample.pdf"); // 替換為你的PDF文件路徑

            // 2. 創(chuàng)建新的PDF文檔用于存儲調(diào)整尺寸后的內(nèi)容
            PdfDocument newPdf = new PdfDocument();

            // 3. 遍歷原始PDF的所有頁面,逐頁調(diào)整尺寸
            foreach(PdfPageBase page in originPdf.Pages)
            { 
                // 3.1 新增A1尺寸的頁面(設(shè)置邊距為0)
                PdfPageBase newPage = newPdf.Pages.Add(PdfPageSize.A1, new PdfMargins(0));
                
                // 3.2 設(shè)置文本布局為“單頁適配”,確保內(nèi)容完整縮放至新頁面
                PdfTextLayout layout = new PdfTextLayout();
                layout.Layout = PdfLayoutType.OnePage;
                
                // 3.3 基于原頁面創(chuàng)建模板,將內(nèi)容繪制到新尺寸頁面
                PdfTemplate template = page.CreateTemplate();
                template.Draw(newPage, new PointF(0, 0), layout);
            }

            // 4. 保存調(diào)整后的PDF文件
            newPdf.SaveToFile("預(yù)設(shè)尺寸.pdf");
            
            // 5. 釋放資源
            originPdf.Close();
            newPdf.Close();
        }
    }
}

代碼說明

  • PdfDocument:分別實例化 “原始 PDF” 和 “新 PDF”,避免直接修改原文件導(dǎo)致數(shù)據(jù)丟失;
  • PdfPageSize.A1:內(nèi)置標(biāo)準(zhǔn)尺寸枚舉,支持 A0-A4、Letter、Legal 等常用尺寸,無需手動換算;
  • PdfTextLayout:設(shè)置 Layout = PdfLayoutType.OnePage 是核心,可讓原頁面內(nèi)容自動縮放并完整適配新頁面尺寸;
  • PdfTemplate:將原頁面內(nèi)容封裝為模板,再繪制到新尺寸頁面,是實現(xiàn) “內(nèi)容適配尺寸” 的關(guān)鍵載體。

場景2:將現(xiàn)有 PDF 修改為自定義頁面尺寸

適用于非標(biāo)準(zhǔn)尺寸需求(如 6.5×8.5 英寸),通過 PdfUnitConvertor 完成英寸到點的自動換算,避免手動計算誤差。

using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;

namespace ChangePageSizeToCustomPaperSize
{
    class Program
    {
        static void Main(string[] args)
        {
            // 1. 加載原始PDF文檔
            PdfDocument originPdf = new PdfDocument();
            originPdf.LoadFromFile("Sample.pdf"); // 替換為你的PDF文件路徑

            // 2. 創(chuàng)建新PDF文檔存儲調(diào)整后的內(nèi)容
            PdfDocument newPdf = new PdfDocument();

            // 3. 初始化單位轉(zhuǎn)換器,實現(xiàn)英寸→點的自動換算
            PdfUnitConvertor unitCvtr = new PdfUnitConvertor();
            // 3.1 換算自定義尺寸:6.5英寸(寬)、8.5英寸(高)→ 點(Point)
            float width = unitCvtr.ConvertUnits(6.5f, PdfGraphicsUnit.Inch, PdfGraphicsUnit.Point);
            float height = unitCvtr.ConvertUnits(8.5f, PdfGraphicsUnit.Inch, PdfGraphicsUnit.Point);
            // 3.2 封裝為SizeF對象,作為新頁面的自定義尺寸
            SizeF customSize = new SizeF(width, height);

            // 4. 遍歷原始PDF頁面,逐頁繪制到自定義尺寸頁面
            foreach (PdfPageBase page in originPdf.Pages)
            {
                // 4.1 新增自定義尺寸的頁面(邊距設(shè)為0)
                PdfPageBase newPage = newPdf.Pages.Add(customSize, new PdfMargins(0));
                
                // 4.2 設(shè)置單頁適配布局,保證內(nèi)容完整縮放
                PdfTextLayout layout = new PdfTextLayout();
                layout.Layout = PdfLayoutType.OnePage;
                
                // 4.3 創(chuàng)建原頁面模板并繪制到新頁面
                PdfTemplate template = page.CreateTemplate();
                template.Draw(newPage, new PointF(0, 0), layout);
            }

            // 5. 保存自定義尺寸的PDF文件
            newPdf.SaveToFile("自定義尺寸.pdf");
            
            // 6. 釋放資源
            originPdf.Close();
            newPdf.Close();
        }
    }
}

代碼說明

  • PdfUnitConvertor:內(nèi)置單位轉(zhuǎn)換工具,支持 Inch(英寸)、Millimeter(毫米)、Point(點)、Centimeter(厘米)等單位互轉(zhuǎn);
  • ConvertUnits 方法:參數(shù)依次為 “數(shù)值、原單位、目標(biāo)單位”,無需手動計算 “1 英寸 = 72 點” 的換算關(guān)系,降低出錯概率;
  • SizeF:封裝自定義寬高,作為 Pages.Add 方法的尺寸參數(shù),適配任意非標(biāo)準(zhǔn)頁面尺寸需求。

三、注意事項

  • 單位一致性:修改尺寸時需確保寬高單位統(tǒng)一(均為點),避免因單位換算錯誤導(dǎo)致尺寸偏差。
  • 內(nèi)容適配PdfLayoutType.OnePage 會自動縮放內(nèi)容適配新尺寸,若需保持內(nèi)容原比例,無需額外調(diào)整;若需手動控制縮放比例,可結(jié)合 ScaleTransform 方法補(bǔ)充調(diào)整。
  • 兼容性:該類庫生成的 PDF 兼容主流閱讀器(Adobe Acrobat、Chrome、Edge等),但復(fù)雜PDF(含表單/批注)修改后需驗證格式完整性。
  • 資源釋放:使用 Close() 方法釋放 PdfDocument 資源,避免因文件占用導(dǎo)致保存失敗。

該方案無需依賴外部工具,純代碼實現(xiàn) PDF 頁面尺寸調(diào)整,適合 .NET 開發(fā)者集成到文檔處理系統(tǒng)中,在中小規(guī)模 PDF 尺寸調(diào)整場景中具備較高的實用性和穩(wěn)定性。

到此這篇關(guān)于C#使用Spire.PDF for .NET實現(xiàn)設(shè)置或修改PDF頁面尺寸的文章就介紹到這了,更多相關(guān)C#設(shè)置或修改PDF頁面尺寸內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#修改圖片尺寸以及不改變原有圖片比例

    C#修改圖片尺寸以及不改變原有圖片比例

    文章介紹了如何使用C#中的Bitmap類來修改圖片尺寸,同時保持原有的圖片比例,作者分享了自己的經(jīng)驗,并鼓勵讀者參考和使用
    2025-01-01
  • 在C#中使用Channels的完整教程

    在C#中使用Channels的完整教程

    這篇文章主要介紹了在C#中使用Channels的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • C#刪除字符串中重復(fù)字符的方法

    C#刪除字符串中重復(fù)字符的方法

    這篇文章主要介紹了C#刪除字符串中重復(fù)字符的方法,涉及C#針對字符串的遍歷及移除等操作的技巧,非常具有實用價值,需要的朋友可以參考下
    2015-02-02
  • 詳解C#設(shè)置Excel數(shù)據(jù)自適應(yīng)行高、列寬的2種情況

    詳解C#設(shè)置Excel數(shù)據(jù)自適應(yīng)行高、列寬的2種情況

    這篇文章主要介紹了C#設(shè)置Excel數(shù)據(jù)自適應(yīng)行高、列寬的2種情況,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • C#中托管DLL和非托管DLL的區(qū)別詳解

    C#中托管DLL和非托管DLL的區(qū)別詳解

    這篇文章主要介紹了C#中托管DLL和非托管DLL的區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Unity的IPostBuildPlayerScriptDLLs實用案例深入解析

    Unity的IPostBuildPlayerScriptDLLs實用案例深入解析

    這篇文章主要為大家介紹了Unity的IPostBuildPlayerScriptDLLs實用案例深入解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • C#?MemoryStream中ToArray和GetBuffer的區(qū)別小小結(jié)

    C#?MemoryStream中ToArray和GetBuffer的區(qū)別小小結(jié)

    MemoryStream?中的?GetBuffer()?和?ToArray()?是兩個用于獲取流數(shù)據(jù)的方法,核心區(qū)別在于數(shù)據(jù)范圍、內(nèi)存占用和安全性,本文就來介紹一下兩者的區(qū)別,感興趣的額可以了解一下
    2025-07-07
  • WPF應(yīng)用程序本地化的最佳方法分享

    WPF應(yīng)用程序本地化的最佳方法分享

    應(yīng)用程序本地化有很多種方式,選擇合適的才是最好的,這篇文章主要為大家介紹了動態(tài)資源的方式,可以在不重啟應(yīng)用程序的情況下進(jìn)行資源的切換,需要的可以參考下
    2023-08-08
  • C#利用WebClient實現(xiàn)兩種方式下載文件

    C#利用WebClient實現(xiàn)兩種方式下載文件

    本篇文章主要介紹了C#利用WebClient 兩種方式下載文件,詳細(xì)的介紹了兩種方式,非常具有實用價值,需要的朋友可以參考下。
    2017-02-02
  • 一文弄懂C#淺克隆與深克隆

    一文弄懂C#淺克隆與深克隆

    在C#中,淺克隆和深克隆是兩種常見的對象克隆技術(shù),本文主要介紹了C#淺克隆與深克隆,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-02-02

最新評論

九龙坡区| 万载县| 南投县| 长治县| 黄骅市| 墨江| 昭苏县| 虹口区| 嘉峪关市| 友谊县| 紫云| 方正县| 晋江市| 新沂市| 积石山| 府谷县| 淮滨县| 留坝县| 海南省| 延边| 三明市| 舞钢市| 邢台县| 龙岩市| 民权县| 吉首市| 景德镇市| 乌兰察布市| 大宁县| 阿拉善左旗| 乐清市| 林州市| 陵川县| 石阡县| 玉门市| 股票| 周口市| 泰和县| 宣武区| 丰镇市| 钟祥市|