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

基于C#實(shí)現(xiàn)PDF按頁(yè)分割文件和分頁(yè)合并

 更新時(shí)間:2025年03月13日 10:30:33   作者:全棧小5  
iTextSharp 是一個(gè)開(kāi)源的 PDF 處理庫(kù),用于在 C# 程序中創(chuàng)建、編輯和處理 PDF 文件,本文將使用iTextSharp實(shí)現(xiàn)C# PDF分割與合并,感興趣的可以了解下

背景

最近遇到一個(gè)文件上傳限制大小問(wèn)題,

因?yàn)橛心男﹑df文件可能有300多頁(yè),大小已經(jīng)有100MB,

但是有些文件上傳限制大小在10MB以內(nèi),

因?yàn)楸酒恼聦⒑?jiǎn)單講講如何將大文件通過(guò)分頁(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 文檔格式。

4、添加水印和加密

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

5、PDF 文件合并和拆分

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

總的來(lái)說(shuō),iTextSharp 是一個(gè)功能強(qiáng)大且靈活的 PDF 處理庫(kù),可用于各種 PDF 文件的生成和處理需求。

通過(guò)使用 iTextSharp,開(kāi)發(fā)者可以在 C# 程序中快速、高效地操作和處理 PDF 文件。

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

相關(guān)文章

  • C#高效反射調(diào)用方法類(lèi)實(shí)例詳解

    C#高效反射調(diào)用方法類(lèi)實(shí)例詳解

    在本篇文章中小編給大家分享的是關(guān)于C#高效反射調(diào)用方法類(lèi)的相關(guān)實(shí)例內(nèi)容,有興趣的朋友們學(xué)習(xí)下。
    2019-07-07
  • 在Form_Load里面調(diào)用Focus無(wú)效的解決方法

    在Form_Load里面調(diào)用Focus無(wú)效的解決方法

    在調(diào)用Form_Load的時(shí)候,F(xiàn)orm其實(shí)還沒(méi)有進(jìn)入展示階段,自然Focus()調(diào)用也就沒(méi)效果了。
    2013-02-02
  • unity 鼠標(biāo)懸停事件操作

    unity 鼠標(biāo)懸停事件操作

    這篇文章主要介紹了unity 鼠標(biāo)懸停事件操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • C#基于HttpWebRequest實(shí)現(xiàn)發(fā)送HTTP請(qǐng)求的方法分析

    C#基于HttpWebRequest實(shí)現(xiàn)發(fā)送HTTP請(qǐng)求的方法分析

    這篇文章主要介紹了C#基于HttpWebRequest實(shí)現(xiàn)發(fā)送HTTP請(qǐng)求的方法,結(jié)合實(shí)例形式分析了C#使用HttpWebRequest類(lèi)與System.IO類(lèi)實(shí)現(xiàn)發(fā)送HTTP請(qǐng)求相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2019-02-02
  • C#插入圖片到Excel表格單元格代碼詳解

    C#插入圖片到Excel表格單元格代碼詳解

    在本篇文章里小編給大家整理了關(guān)于C#插入圖片到Excel表格單元格的具體方法和實(shí)例代碼,需要的朋友們可以學(xué)習(xí)下。
    2019-07-07
  • C#實(shí)現(xiàn)文件分割和合并的示例詳解

    C#實(shí)現(xiàn)文件分割和合并的示例詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)文件分割和合并的功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • Response.Redirect 正在中止線程解決方案

    Response.Redirect 正在中止線程解決方案

    這兩天在開(kāi)發(fā)調(diào)試過(guò)程中,老是會(huì)出現(xiàn)在一個(gè) "正在中止線程“(ThreadAbortException)的例外信息,很是疑惑,于是網(wǎng)上收集整理了一下,現(xiàn)在曬出來(lái)和大家分享,希望對(duì)你們有幫助
    2012-11-11
  • C# wpf簡(jiǎn)單顏色板的實(shí)現(xiàn)

    C# wpf簡(jiǎn)單顏色板的實(shí)現(xiàn)

    wpf本身沒(méi)有提供顏色板之類(lèi)的控件,有些業(yè)務(wù)使用場(chǎng)景需要使用顏色板之類(lèi)的控件,本文就簡(jiǎn)單實(shí)現(xiàn),感興趣的可以了解一下
    2021-10-10
  • C#實(shí)現(xiàn)將HTML文檔和HTML字符串轉(zhuǎn)換為圖片

    C#實(shí)現(xiàn)將HTML文檔和HTML字符串轉(zhuǎn)換為圖片

    在.NET開(kāi)發(fā)中,將HTML內(nèi)容轉(zhuǎn)換為圖片的需求廣泛存在于報(bào)告生成,郵件內(nèi)容存檔,網(wǎng)頁(yè)快照等場(chǎng)景,下面我們就來(lái)看看HTML文檔和字符串轉(zhuǎn)圖片兩種場(chǎng)景的轉(zhuǎn)換方案吧
    2025-06-06
  • 基于WebClient實(shí)現(xiàn)Http協(xié)議的Post與Get對(duì)網(wǎng)站進(jìn)行模擬登陸和瀏覽實(shí)例

    基于WebClient實(shí)現(xiàn)Http協(xié)議的Post與Get對(duì)網(wǎng)站進(jìn)行模擬登陸和瀏覽實(shí)例

    這篇文章主要介紹了基于WebClient實(shí)現(xiàn)Http協(xié)議的Post與Get對(duì)網(wǎng)站進(jìn)行模擬登陸和瀏覽的方法,以實(shí)例形式詳細(xì)分析了WebClient模擬POST與GET登陸與瀏覽的過(guò)程,對(duì)于C#項(xiàng)目開(kāi)發(fā)來(lái)說(shuō)具有不錯(cuò)的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-11-11

最新評(píng)論

察雅县| 永登县| 宝丰县| 赞皇县| 孟州市| 井冈山市| 玉门市| 山西省| 固阳县| 磴口县| 贵德县| 精河县| 荥经县| 聊城市| 汤阴县| 凤城市| 独山县| 宜黄县| 宿松县| 克拉玛依市| 二连浩特市| 富蕴县| 靖远县| 陵水| 岗巴县| 什邡市| 老河口市| 浦东新区| 高尔夫| 霍山县| 修文县| 乌兰察布市| 怀柔区| 社旗县| 基隆市| 高淳县| 中方县| 策勒县| 偃师市| 桂东县| 青海省|