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

C#代碼實(shí)現(xiàn)獲取PDF頁面尺寸,方向和旋轉(zhuǎn)角度

 更新時間:2026年05月12日 14:34:36   作者:2501_93070778  
在某些情況下,檢查 PDF 頁面的尺寸、方向和旋轉(zhuǎn)角度是文檔質(zhì)量控制的一部分,本文將介紹如何在 C# 中獲取 PDF 頁面尺寸、檢測頁面方向以及讀取頁面旋轉(zhuǎn)角度,有需要的小伙伴可以了解下

在某些情況下,檢查 PDF 頁面的尺寸、方向和旋轉(zhuǎn)角度是文檔質(zhì)量控制的一部分。例如,在發(fā)布或分發(fā)文檔之前,可能需要驗(yàn)證這些信息,以確保文檔中的所有頁面都能正確顯示。本文將介紹如何在 C# 中獲取 PDF 頁面尺寸、檢測頁面方向以及讀取頁面旋轉(zhuǎn)角度。

環(huán)境準(zhǔn)備

開始之前,需要在 .NET 項(xiàng)目中添加 PDF 處理庫的 DLL 引用??梢酝ㄟ^下載安裝包手動添加,也可以直接使用 NuGet 安裝相關(guān)組件。

PM> Install-Package Spire.PDF 

在 C# 中獲取 PDF 頁面尺寸

常見的 PDF 處理庫通常提供頁面寬度和高度屬性,可用于獲取 PDF 頁面的尺寸信息,默認(rèn)單位一般為 point(磅)。如果需要將默認(rèn)單位轉(zhuǎn)換為其他單位(如厘米、毫米或英寸),可以借助單位轉(zhuǎn)換工具類完成。下面是具體步驟:

  1. 創(chuàng)建 PdfDocument 實(shí)例。
  2. 使用 PdfDocument.LoadFromFile() 方法加載 PDF 文件。
  3. 通過 PdfDocument.Pages[] 獲取指定頁面。
  4. 使用頁面對象的寬度和高度屬性獲取 PDF 頁面的尺寸信息。
  5. 創(chuàng)建單位轉(zhuǎn)換對象,并通過 ConvertUnits() 方法將 point 單位轉(zhuǎn)換為其他計(jì)量單位。
  6. 將頁面尺寸信息寫入 StringBuilder,最后保存為 TXT 文件。

示例代碼如下:

using System.Text;
using Spire.Pdf;
using Spire.Pdf.Graphics;

namespace 獲取PDF頁面尺寸
{
    class Program
    {
        static void Main(string[] args)
        {
            // 創(chuàng)建 PdfDocument 對象
            PdfDocument pdf = new PdfDocument();

            // 從磁盤加載 PDF 文件
            pdf.LoadFromFile("SamplePDF.pdf");

            // 獲取第一頁
            PdfPageBase page = pdf.Pages[0];

            // 獲取頁面寬度和高度(單位:point/磅)
            float pointWidth = page.Size.Width;
            float pointHeight = page.Size.Height;

            // 創(chuàng)建 PdfUnitConvertor 對象用于單位轉(zhuǎn)換
            PdfUnitConvertor unitCvtr = new PdfUnitConvertor();

            // 將單位從 point 轉(zhuǎn)換為 pixel(像素)
            float pixelWidth = unitCvtr.ConvertUnits(pointWidth, PdfGraphicsUnit.Point, PdfGraphicsUnit.Pixel);
            float pixelHeight = unitCvtr.ConvertUnits(pointHeight, PdfGraphicsUnit.Point, PdfGraphicsUnit.Pixel);

            // 將單位從 point 轉(zhuǎn)換為 inch(英寸)
            float inchWidth = unitCvtr.ConvertUnits(pointWidth, PdfGraphicsUnit.Point, PdfGraphicsUnit.Inch);
            float inchHeight = unitCvtr.ConvertUnits(pointHeight, PdfGraphicsUnit.Point, PdfGraphicsUnit.Inch);

            // 將單位從 point 轉(zhuǎn)換為 centimeter(厘米)
            float centimeterWidth = unitCvtr.ConvertUnits(pointWidth, PdfGraphicsUnit.Point, PdfGraphicsUnit.Centimeter);
            float centimeterHeight = unitCvtr.ConvertUnits(pointHeight, PdfGraphicsUnit.Point, PdfGraphicsUnit.Centimeter);

            // 創(chuàng)建 StringBuilder 實(shí)例
            StringBuilder content = new StringBuilder();

            // 添加頁面尺寸信息
            content.AppendLine("文件頁面尺寸(單位:point)為(寬:" + pointWidth + "pt,高:" + pointHeight + "pt)。");
            content.AppendLine("文件頁面尺寸(單位:pixel)為(寬:" + pixelWidth + "pixel,高:" + pixelHeight + "pixel)。");
            content.AppendLine("文件頁面尺寸(單位:inch)為(寬:" + inchWidth + "inch,高:" + inchHeight + "inch)。");
            content.AppendLine("文件頁面尺寸(單位:centimeter)為(寬:" + centimeterWidth + "cm,高:" + centimeterHeight + "cm)。");

            // 保存為 TXT 文件
            File.WriteAllText("GetPageSize.txt", content.ToString());
        }
    }
}

在 C# 中檢測 PDF 頁面方向

檢測 PDF 頁面方向時,可以通過比較頁面的寬度和高度來判斷。如果頁面寬度大于高度,則頁面方向?yàn)闄M向(Landscape);否則為縱向(Portrait)。具體步驟如下:

  1. 創(chuàng)建 PdfDocument 實(shí)例。
  2. 使用 PdfDocument.LoadFromFile() 方法加載 PDF 文件。
  3. 通過 PdfDocument.Pages[] 獲取指定頁面。
  4. 使用頁面對象的寬度和高度屬性獲取 PDF 頁面的尺寸信息。
  5. 比較頁面寬度和高度的值,以判斷頁面方向。
  6. 使用 Console.WriteLine() 方法輸出結(jié)果。

示例代碼如下:

using Spire.Pdf;

namespace 檢測PDF頁面方向
{
    class Program
    {
        static void Main(string[] args)
        {
            // 創(chuàng)建 PdfDocument 對象
            PdfDocument pdf = new PdfDocument();

            // 從磁盤加載 PDF 文件
            pdf.LoadFromFile("SamplePDF.pdf");

            // 獲取第一頁
            PdfPageBase page = pdf.Pages[0];

            // 獲取頁面寬度和高度
            float width = page.Size.Width;
            float height = page.Size.Height;

            // 比較頁面寬度和高度的值
            if (width > height)
            {
                Console.WriteLine("頁面方向?yàn)闄M向(Landscape)。");
            }
            else
            {
                Console.WriteLine("頁面方向?yàn)榭v向(Portrait)。");
            }
        }
    }
}

在 C# 中檢測 PDF 頁面旋轉(zhuǎn)角度

PDF 頁面的旋轉(zhuǎn)角度可以通過 PdfPageBase.Rotation 屬性獲取。具體步驟如下:

  1. 創(chuàng)建 PdfDocument 實(shí)例。
  2. 使用 PdfDocument.LoadFromFile() 方法加載 PDF 文件。
  3. 通過 PdfDocument.Pages[] 獲取指定頁面。
  4. 使用 PdfPageBase.Rotation 屬性獲取頁面的旋轉(zhuǎn)角度,并將結(jié)果轉(zhuǎn)換為字符串。
  5. 使用 Console.WriteLine() 方法輸出結(jié)果。

示例代碼如下:

using Spire.Pdf;

namespace 獲取PDF頁面旋轉(zhuǎn)角度
{
    class Program
    {
        static void Main(string[] args)
        {
            // 創(chuàng)建 PdfDocument 對象
            PdfDocument pdf = new PdfDocument();

            // 從磁盤加載 PDF 文件
            pdf.LoadFromFile("E:\\PythonPDF\\Sample.pdf");

            // 獲取第一頁
            PdfPageBase page = pdf.Pages[0];

            // 獲取當(dāng)前頁面的旋轉(zhuǎn)角度
            PdfPageRotateAngle rotationAngle = page.Rotation;
            string rotation = rotationAngle.ToString();

            // 輸出頁面旋轉(zhuǎn)角度信息
            Console.WriteLine("當(dāng)前頁面的旋轉(zhuǎn)角度為:" + rotation);
        }
    }
}

知識擴(kuò)展

在C#中獲取PDF頁面的尺寸、方向和旋轉(zhuǎn)角度,可以使用免費(fèi)開源的 PdfPig 庫,它無需安裝Adobe Reader,跨平臺且易于使用。以下代碼演示了如何讀取PDF文件,提取每個頁面的寬度、高度、計(jì)算方向(橫向/縱向)以及讀取旋轉(zhuǎn)角度。

1. 安裝 PdfPig

在Visual Studio中打開“包管理器控制臺”或使用 .NET CLI:

dotnet add package PdfPig

Install-Package PdfPig

2. 代碼示例

using System;
using System.IO;
using UglyToad.PdfPig;
using UglyToad.PdfPig.Content;
class Program
{
    static void Main(string[] args)
    {
        string filePath = @"C:\test\example.pdf";
        GetPdfPageInfo(filePath);
    }
    static void GetPdfPageInfo(string pdfPath)
    {
        if (!File.Exists(pdfPath))
        {
            Console.WriteLine("文件不存在!");
            return;
        }
        using (PdfDocument document = PdfDocument.Open(pdfPath))
        {
            for (int i = 0; i < document.NumberOfPages; i++)
            {
                Page page = document.GetPage(i + 1); // 頁碼從1開始
                // 獲取頁面尺寸(單位:點(diǎn),1點(diǎn) = 1/72英寸)
                double width = page.Width;
                double height = page.Height;
                // 獲取旋轉(zhuǎn)角度(0, 90, 180, 270)
                int rotation = page.Rotation.Value;  // Rotation 是可空類型,一般為90度的整數(shù)倍
                // 計(jì)算方向(基于原始寬高,未考慮旋轉(zhuǎn))
                string orientation = (width > height) ? "橫向 (Landscape)" : "縱向 (Portrait)";
                // 輸出信息
                Console.WriteLine($"--- 第 {i + 1} 頁 ---");
                Console.WriteLine($"原始尺寸: {width} x {height} 點(diǎn) (約 {width/72:F2} x {height/72:F2} 英寸)");
                Console.WriteLine($"方向: {orientation}");
                Console.WriteLine($"旋轉(zhuǎn)角度: {rotation} 度");
                Console.WriteLine();
                // 如果需要考慮旋轉(zhuǎn)后的實(shí)際顯示方向,可以結(jié)合旋轉(zhuǎn)角度判斷
                bool isRotated = (rotation % 180 != 0);
                string effectiveOrientation = (isRotated ? (height > width ? "橫向" : "縱向") : orientation);
                Console.WriteLine($"考慮旋轉(zhuǎn)后的實(shí)際顯示方向: {effectiveOrientation}\n");
            }
        }
    }
}

3. 輸出示例

--- 第 1 頁 ---
原始尺寸: 595.0 x 842.0 點(diǎn) (約 8.26 x 11.69 英寸)
方向: 縱向 (Portrait)
旋轉(zhuǎn)角度: 0 度

--- 第 2 頁 ---
原始尺寸: 842.0 x 595.0 點(diǎn) (約 11.69 x 8.26 英寸)
方向: 橫向 (Landscape)
旋轉(zhuǎn)角度: 0 度

--- 第 3 頁 ---
原始尺寸: 595.0 x 842.0 點(diǎn) (約 8.26 x 11.69 英寸)
方向: 縱向 (Portrait)
旋轉(zhuǎn)角度: 90 度
考慮旋轉(zhuǎn)后的實(shí)際顯示方向: 橫向

4. 關(guān)鍵說明

  • 尺寸單位:PdfPig 返回的寬度和高度以“點(diǎn)”(Point)為單位(1點(diǎn) = 1/72英寸)。
  • 旋轉(zhuǎn)角度:通過 page.Rotation.Value 獲取,值為 0、90、180 或 270。Rotation 是可空類型,若不存在則默認(rèn) 0。
  • 方向判斷:原始方向由寬度 > 高度判定,但旋轉(zhuǎn) 90° 或 270° 后實(shí)際顯示的方向會互換。示例中給出了計(jì)算有效方向的方法。
  • 其他頁面框:PDF 除了 /MediaBox 還有 /CropBox/TrimBox 等,page.Width 和 page.Height 默認(rèn)返回的是 /CropBox(如果存在),否則返回 /MediaBox。如需獲取特定框,可通過 page.GetMediaBox() 等方法。

總結(jié)

本文介紹了如何在 C# 中獲取 PDF 頁面的尺寸、方向以及旋轉(zhuǎn)角度。通過讀取頁面的寬度、高度和旋轉(zhuǎn)屬性,開發(fā)者可以快速分析 PDF 頁面布局,并根據(jù)實(shí)際需求進(jìn)行文檔檢查、頁面處理或自動化管理。

此外,文章還演示了如何將頁面尺寸從默認(rèn)的 point(磅)單位轉(zhuǎn)換為像素、英寸和厘米等常用單位,以及如何通過簡單的寬高比較判斷頁面是橫向還是縱向。借助這些方法,可以更方便地完成 PDF 文檔的質(zhì)量檢測與頁面信息提取工作。

以上就是C#代碼實(shí)現(xiàn)獲取PDF頁面尺寸,方向和旋轉(zhuǎn)角度的詳細(xì)內(nèi)容,更多關(guān)于C#獲取PDF頁面信息的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 淺談Java與C#的一些細(xì)微差別

    淺談Java與C#的一些細(xì)微差別

    說起C#和Java這兩門語言(語法,數(shù)據(jù)類型 等),個人以為,大概有90%以上的相似,甚至可以認(rèn)為幾乎一樣。但是在工作中,我也發(fā)現(xiàn)了一些細(xì)微的差別
    2013-11-11
  • C# 如何合并和拆分PDF文件

    C# 如何合并和拆分PDF文件

    這篇文章主要介紹了C# 如何合并和拆分PDF文件,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2021-01-01
  • C#日志存儲優(yōu)化的五種方法

    C#日志存儲優(yōu)化的五種方法

    本文介紹了C#日志存儲優(yōu)化的五種方法,包括日志輪轉(zhuǎn)、壓縮存儲、遠(yuǎn)程存儲、日志級別控制和日志格式優(yōu)化,通過合理的配置和優(yōu)化,可以有效避免日志文件無限增長,節(jié)省磁盤空間,提高查詢效率和系統(tǒng)性能,需要的朋友可以參考下
    2025-10-10
  • unity3d?對接?workerman?實(shí)現(xiàn)聯(lián)機(jī)游戲功能

    unity3d?對接?workerman?實(shí)現(xiàn)聯(lián)機(jī)游戲功能

    workerman?是一款開源高性能?PHP?應(yīng)用容器,他除了用于互聯(lián)網(wǎng)、即時通訊、APP?開發(fā)、硬件通訊、智能家居、物聯(lián)網(wǎng)等領(lǐng)域的開發(fā)外,這篇文章主要介紹了unity3d?對接?workerman?實(shí)現(xiàn)聯(lián)機(jī)游戲,需要的朋友可以參考下
    2022-10-10
  • 深入理解C#指針之美

    深入理解C#指針之美

    在C#中,有時候希望通過指針來操作內(nèi)存,這樣可以提高效率。我們可以用unsafe關(guān)鍵字修飾含有指針操作的程序段,感興趣的小伙伴可以參考一下,希望可以幫到你
    2021-07-07
  • C#文件合并的方法

    C#文件合并的方法

    這篇文章主要介紹了C#文件合并的方法,實(shí)例分析了C#基于FileStream操作文件合并的相關(guān)技巧,需要的朋友可以參考下
    2015-07-07
  • C#訪問及調(diào)用類中私有成員與方法示例代碼

    C#訪問及調(diào)用類中私有成員與方法示例代碼

    訪問一個類的私有成員不是什么好做法,大家也都知道私有成員在外部是不能被訪問的,這篇文章主要給大家介紹了關(guān)于C#訪問及調(diào)用類中私有成員與方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-06-06
  • C# IP地址與整數(shù)之間轉(zhuǎn)換的具體方法

    C# IP地址與整數(shù)之間轉(zhuǎn)換的具體方法

    這篇文章介紹了C# IP地址與整數(shù)之間轉(zhuǎn)換的具體方法,有需要的朋友可以參考一下
    2013-10-10
  • C#將異步改成同步方法示例

    C#將異步改成同步方法示例

    這篇文章主要為大家介紹了C#將異步改成同步方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • C#控制臺輸出進(jìn)度和百分比的實(shí)例代碼

    C#控制臺輸出進(jìn)度和百分比的實(shí)例代碼

    C#控制臺輸出進(jìn)度和百分比的實(shí)例代碼,需要的朋友可以參考一下
    2013-03-03

最新評論

荃湾区| 柳江县| 寻乌县| 康定县| 任丘市| 吉首市| 阿城市| 博爱县| 漯河市| 金秀| 耿马| 榕江县| 中卫市| 天峨县| 濮阳县| 留坝县| 恭城| 海宁市| 福海县| 太和县| 泽州县| 怀化市| 清涧县| 武平县| 兰州市| 土默特左旗| 通道| 赤壁市| 方正县| 桐城市| 汉寿县| 沾益县| 五大连池市| 叶城县| 扎兰屯市| 永靖县| 梨树县| 申扎县| 读书| 上饶市| 江源县|