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

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

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

背景

最近遇到一個文件上傳限制大小問題,

因為有哪些pdf文件可能有300多頁,大小已經(jīng)有100MB,

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

因為本篇文章將簡單講講如何將大文件通過分頁分割和合并。

效果

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

單頁分割

插件命名空間

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();
}

多頁分割

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

    // 目標(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頁的文件
        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();
        }
    }
}

插件說明

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

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

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

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

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

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

3、處理 PDF 文件

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

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

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

4、添加水印和加密

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

5、PDF 文件合并和拆分

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

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

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評論

衡水市| 永福县| 塔城市| 古丈县| 清苑县| 屏东县| 米脂县| 泰安市| 德安县| 克拉玛依市| 中阳县| 涪陵区| 牙克石市| 甘肃省| 桐城市| 察雅县| 垣曲县| 胶南市| 江门市| 神木县| 潼南县| 百色市| 夹江县| 云浮市| 曲阜市| 通山县| 利川市| 西城区| 康乐县| 炉霍县| 石家庄市| 尼木县| 腾冲县| 许昌县| 中方县| 固原市| 台前县| 桂东县| 和林格尔县| 巫溪县| 榆林市|