欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

通過(guò)C#實(shí)現(xiàn)裁剪PDF頁(yè)面功能

 更新時(shí)間:2024年09月12日 10:15:12   作者:Eiceblue  
在處理PDF文檔時(shí),有時(shí)需要精確地裁剪頁(yè)面以適應(yīng)特定需求,比如去除廣告、背景信息或者僅僅是為了簡(jiǎn)化文檔內(nèi)容,本文將指導(dǎo)如何使用免費(fèi).NET控件通過(guò)C#實(shí)現(xiàn)裁剪PDF頁(yè)面,需要的朋友可以參考下

前言

在處理PDF文檔時(shí),有時(shí)需要精確地裁剪頁(yè)面以適應(yīng)特定需求,比如去除廣告、背景信息或者僅僅是為了簡(jiǎn)化文檔內(nèi)容。

本文將指導(dǎo)如何使用免費(fèi).NET控件通過(guò)C#實(shí)現(xiàn)裁剪PDF頁(yè)面。

C# 裁剪PDF頁(yè)面

Free Spire.PDF for .NET這個(gè)庫(kù)提供了一個(gè)非常簡(jiǎn)單的接口來(lái)實(shí)現(xiàn)裁剪PDF頁(yè)面指定區(qū)域,具體操作如下:

  • 通過(guò) LoadFromFile() 方法加載PDF文檔;
  • 獲取指定PDF頁(yè)面;
  • 指定一個(gè)區(qū)域,然后通過(guò) PdfPageBase.CropBox 屬性裁剪指定區(qū)域;
  • 通過(guò) SaveToFile() 方法保存裁剪后的PDF文檔。

示例代碼如下:

using System.Drawing;
using Spire.Pdf;

namespace CropPDFPage
{
    class Program
    {
        static void Main(string[] args)
        {
            //加載PDF文檔
            PdfDocument pdf = new PdfDocument();
            pdf.LoadFromFile("示例.pdf");

            //獲取第二頁(yè)
            PdfPageBase page = pdf.Pages[1];

            //按指定區(qū)域裁剪PDF頁(yè)面
            page.CropBox = new RectangleF(270, 130, 400, 480);

            //保存裁剪后的文檔
            pdf.SaveToFile("裁剪PDF.pdf");
            pdf.Close();
        }
    }
}

裁剪前后對(duì)比:

拓展:C#實(shí)現(xiàn)pdf按頁(yè)分割文件,以及分頁(yè)合并

效果

下面就是通過(guò)pdf插件進(jìn)行按頁(yè)進(jìn)行文件分割輸出

單頁(yè)分割

插件命名空間

using iTextSharp.text;
using iTextSharp.text.pdf;

目標(biāo)分割pdf文件、創(chuàng)建輸出文件所在的文件夾、iTextSharp插件操作pdf分割

// 目標(biāo)分割pdf文件
string inputFilePath = @"你自己的pdf文件物理路徑.pdf";

// 創(chuàng)建輸出文件所在文件夾
string outputFolder = "NewFile";
string rootPath = System.IO.Directory.GetCurrentDirectory();
string folderAll = Path.Combine(rootPath, outputFolder);
if (!Directory.Exists(folderAll))
{
    Directory.CreateDirectory(folderAll);
}

// 操作pdf分割
using (PdfReader reader = new PdfReader(inputFilePath))
{
    for (int i = 1; i <= reader.NumberOfPages; i++)
    {
        string newFilePath = Path.Combine(outputFolder, $"page_{i}.pdf");
        
        using (Document document = new Document())
        using (PdfCopy copy = new PdfCopy(document, new FileStream(newFilePath, FileMode.Create)))
        {
            document.Open();
            copy.AddPage(copy.GetImportedPage(reader, i));
            document.Close();
        }
    }
}

Console.WriteLine("PDF 分割完成!");

文件合并

// 目標(biāo)合并pdf文件
string[] sourceFiles = new string[] {
    @"你的pdf文件1.pdf",
    @"你的pdf文件2.pdf"
};

// 創(chuàng)建輸出文件所在文件夾
string outputFolder = "NewFile";
string rootPath = System.IO.Directory.GetCurrentDirectory();
string folderAll = Path.Combine(rootPath, outputFolder);
if (!Directory.Exists(folderAll))
{
    Directory.CreateDirectory(folderAll);
}

using (Document document = new Document())
{
    PdfCopy copy = new PdfCopy(document, new FileStream($"{outputFolder}\\page_1_20_Add_21_40.pdf", FileMode.Create));
    document.Open();

    foreach (string file in sourceFiles)
    {
        using (PdfReader reader = new PdfReader(file))
        {
            for (int i = 1; i <= reader.NumberOfPages; i++)
            {
                copy.AddPage(copy.GetImportedPage(reader, i));
            }
        }
    }

    document.Close();
    copy.Close();
}

多頁(yè)分割

根據(jù)分頁(yè)范圍進(jìn)行分割文件,比如:1-10頁(yè)分割一個(gè)文件,即10頁(yè)分割一個(gè)文件

    // 目標(biāo)分割pdf文件
    string inputFilePath = @"你自己的pdf文件物理路徑.pdf";

    // 創(chuàng)建輸出文件所在文件夾
    string outputFolder = "NewFile";
    string rootPath = System.IO.Directory.GetCurrentDirectory();
    string folderAll = Path.Combine(rootPath, outputFolder);
    if (!Directory.Exists(folderAll))
    {
        Directory.CreateDirectory(folderAll);
    }

    // 操作pdf分割
    using (PdfReader reader = new PdfReader(inputFilePath))
    {
        int startPage = 1;
        int pageSize = 0;
        int totalPage = 0;
        int unitSize = 20;
        int remainder = 0;
        totalPage = reader.NumberOfPages;
        pageSize = totalPage / unitSize;
        remainder = totalPage % unitSize;

        // 足夠20的分割文件
        int currentIndex = 0;
        for (int index = 0; index < pageSize; index++)
        {
            currentIndex = (index + 1);
            using (Document document = new Document())
            {
                int sv = (startPage + index * unitSize);
                int ev = ((index + 1) * unitSize);
                string newFilePath = Path.Combine(outputFolder, $"page_{sv}_{ev}.pdf");
                PdfCopy copy = new PdfCopy(document, new FileStream(newFilePath, FileMode.Create));
                document.Open();

                for (int i = sv; i <= ev; i++)
                {
                    copy.AddPage(copy.GetImportedPage(reader, i));
                }

                document.Close();
                copy.Close();
            }
        }

        // 不足20頁(yè)的文件
        using (Document document = new Document())
        {
            int sv = (startPage + pageSize * unitSize);
            int ev = (pageSize * unitSize + remainder);
            string newFilePath = Path.Combine(outputFolder, $"page_size_{sv}_{ev}.pdf");
            PdfCopy copy = new PdfCopy(document, new FileStream(newFilePath, FileMode.Create));
            document.Open();

            for (int i = sv; i <= ev; i++)
            {
                copy.AddPage(copy.GetImportedPage(reader, i));
            }

            document.Close();
            copy.Close();
        }
    }
}

插件說(shuō)明

iTextSharp 是一個(gè)開(kāi)源的 PDF 處理庫(kù),用于在 C# 程序中創(chuàng)建、編輯和處理 PDF 文件。它提供了豐富的功能和 API,使開(kāi)發(fā)者能夠進(jìn)行各種 PDF 文件操作,包括創(chuàng)建 PDF、添加文本、插入圖片、設(shè)置頁(yè)面布局等功能。iTextSharp 庫(kù)基于 iText 庫(kù)的 C# 版本,是在 C# 平臺(tái)上操作 PDF 文件的常用工具之一。

以下是 iTextSharp 的一些基本功能:

1、創(chuàng)建 PDF 文件

使用 iTextSharp 可以在 C# 中輕松地創(chuàng)建新的 PDF 文件,可以通過(guò)代碼指定文檔結(jié)構(gòu)、頁(yè)面布局、文本樣式等。

2、編輯 PDF 文件內(nèi)容

可以向已有的 PDF 文件中添加文本、圖片、表格等內(nèi)容,也可以修改現(xiàn)有內(nèi)容,實(shí)現(xiàn)文檔內(nèi)容的動(dòng)態(tài)更新。

3、處理 PDF 文件

iTextSharp 提供了豐富的 API,可以處理 PDF 文件中的文本、表格、圖形等元素,實(shí)現(xiàn)對(duì) PDF 內(nèi)容的精確控制和調(diào)整。

4、設(shè)置頁(yè)面屬性

可以通過(guò) iTextSharp 設(shè)置頁(yè)面尺寸、方向、邊距等屬性,定制化生成的 PDF 文檔格式。

5、添加水印和加密

可以在 PDF 文件中添加水印、數(shù)字簽名,也可以通過(guò) iTextSharp 對(duì) PDF 文件進(jìn)行加密保護(hù),確保 PDF 文件的安全性。

6、PDF 文件合并和拆分

iTextSharp 提供了合并多個(gè) PDF 文件和拆分單個(gè) PDF 文件的功能,方便進(jìn)行文檔的整合和拆分操作。

到此這篇關(guān)于通過(guò)C#實(shí)現(xiàn)裁剪PDF頁(yè)面功能的文章就介紹到這了,更多相關(guān)C#裁剪PDF頁(yè)面內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • c# 文件操作(移動(dòng),復(fù)制,重命名)

    c# 文件操作(移動(dòng),復(fù)制,重命名)

    這篇文章主要介紹了c# 如何對(duì)文件操作(移動(dòng),復(fù)制,重命名),幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2020-12-12
  • C#中屬性和成員變量的區(qū)別說(shuō)明

    C#中屬性和成員變量的區(qū)別說(shuō)明

    本篇文章主要是對(duì)C#中屬性和成員變量的區(qū)別進(jìn)行了介紹說(shuō)明。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2014-01-01
  • C#?System.Linq提供類似SQL語(yǔ)法的高效查詢操作

    C#?System.Linq提供類似SQL語(yǔ)法的高效查詢操作

    System.Linq是C#的一個(gè)命名空間,提供了LINQ(語(yǔ)言集成查詢)功能,允許開(kāi)發(fā)者使用一致的查詢語(yǔ)法來(lái)處理不同類型的數(shù)據(jù)源,如數(shù)組、集合、數(shù)據(jù)庫(kù)和XML等,本文介紹C#?System.Linq提供類似SQL語(yǔ)法的高效查詢操作,感興趣的朋友一起看看吧
    2024-09-09
  • C#實(shí)現(xiàn)學(xué)生管理系統(tǒng)

    C#實(shí)現(xiàn)學(xué)生管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • 使用VS2010 C#開(kāi)發(fā)ActiveX控件(下),完整代碼打包下載

    使用VS2010 C#開(kāi)發(fā)ActiveX控件(下),完整代碼打包下載

    我們介紹了開(kāi)發(fā)、打包、發(fā)布、使用ActiveX控件的全過(guò)程。在演示程序中,我們沒(méi)有調(diào)用串口通信和讀卡器Dll程序,由于我們讀卡器的原始Dll是使用其它語(yǔ)言進(jìn)行開(kāi)發(fā)的,對(duì)C#來(lái)說(shuō),是非托管代碼,因此我們還需要在代碼級(jí)別進(jìn)行非托管代碼的安全性設(shè)置
    2011-05-05
  • WPF自定義實(shí)現(xiàn)雷達(dá)圖控件的示例詳解

    WPF自定義實(shí)現(xiàn)雷達(dá)圖控件的示例詳解

    雷達(dá)圖用于表示不同內(nèi)容的占比關(guān)系,在項(xiàng)目中有廣泛的應(yīng)用,但是目前未曾有封裝良好的雷達(dá)圖控件,所以本文分享了如何封裝一個(gè)通用的雷達(dá)圖控件,希望對(duì)大家有所幫助
    2023-08-08
  • C#創(chuàng)建安全的字典(Dictionary)存儲(chǔ)結(jié)構(gòu)

    C#創(chuàng)建安全的字典(Dictionary)存儲(chǔ)結(jié)構(gòu)

    本文主要對(duì)存儲(chǔ)結(jié)構(gòu)字典(Dictionary)的一些常用方法進(jìn)行簡(jiǎn)單的說(shuō)明,并闡述了如何創(chuàng)建安全的字典(Dictionary)存儲(chǔ)結(jié)構(gòu)。希望對(duì)大家有所幫助
    2016-12-12
  • C#實(shí)現(xiàn)解析百度天氣數(shù)據(jù),Rss解析百度新聞以及根據(jù)IP獲取所在城市的方法

    C#實(shí)現(xiàn)解析百度天氣數(shù)據(jù),Rss解析百度新聞以及根據(jù)IP獲取所在城市的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)解析百度天氣數(shù)據(jù),Rss解析百度新聞以及根據(jù)IP獲取所在城市的方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-10-10
  • C#控件命名規(guī)范匯總(超詳細(xì))

    C#控件命名規(guī)范匯總(超詳細(xì))

    本篇文章是對(duì)C#控件命名規(guī)范進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • C#實(shí)現(xiàn)WinForm全屏置頂?shù)氖纠a

    C#實(shí)現(xiàn)WinForm全屏置頂?shù)氖纠a

    我們?cè)谶\(yùn)行一些?Windows?應(yīng)用程序的時(shí)候,需要將其運(yùn)行在窗體置頂?shù)哪J?并且進(jìn)入全屏狀態(tài),本文將介紹如何使用?C#?來(lái)實(shí)現(xiàn)?WinForm?的全屏置頂?shù)幕竟δ?感興趣的可以了解下
    2024-12-12

最新評(píng)論