C# 合併多種格式文件為PDF

来源:https://www.cnblogs.com/Yesi/archive/2018/01/18/8310481.html
-Advertisement-
Play Games

文檔合併是一種高效文檔處理方式。如果能夠有一個方法能將多種不同類型的文檔合併成一種文檔格式,那麼在文檔存儲管理上將為我們提供極大的便利。因此,本篇文章介紹了一種如何使用免費組件Free Spire.Office for .NET來實現將多種各式的文檔合併為PDF的方法。本方法中可合併的文檔格式可以是 ...


文檔合併是一種高效文檔處理方式。如果能夠有一個方法能將多種不同類型的文檔合併成一種文檔格式,那麼在文檔存儲管理上將為我們提供極大的便利。因此,本篇文章介紹了一種如何使用免費組件Free Spire.Office for .NET來實現將多種各式的文檔合併為PDF的方法。本方法中可合併的文檔格式可以是doc、docx、xls、xlsx、pdf等。下麵將進行詳細闡述。

使用方法:安裝Free Spire.Office for .NET後,添加引用spire.doc.dll, spire.xls.dll, spire.pdf.dll三個文件,如下圖所示:

添加以後,在命名空間添加如下using 指令:

using Spire.Doc;
using Spire.Xls;
using Spire.Pdf;
using System.IO;

文檔合併前:

主要代碼:

           //聲明PdfDocument對象數組
            PdfDocument[] documents = new PdfDocument[4];
            using (MemoryStream ms1 = new MemoryStream())
            {
                //載入doc文檔
                Document doc = new Document(@"C:\Users\Administrator\Desktop\sample.doc", Spire.Doc.FileFormat.Doc);
                //轉換PDF,並以流的形式保存
                doc.SaveToStream(ms1, Spire.Doc.FileFormat.PDF);
                //載入PDF流文件為PdfDocument對象數組的第一個元素
                documents[0] = new PdfDocument(ms1);
            }
            using (MemoryStream ms2 = new MemoryStream())
            {
                //載入docx文檔 
                Document docx = new Document(@"C:\Users\Administrator\Desktop\test.docx", Spire.Doc.FileFormat.Docx2010);

                //轉換PDF,並以流的形式保存 
                docx.SaveToStream(ms2, Spire.Doc.FileFormat.PDF);
                //載入PDF流文件為PdfDocument對象數組的第二個元素
                documents[1] = new PdfDocument(ms2);
            }

            using (MemoryStream ms3 = new MemoryStream())
            {
                //載入xlsx文檔
                Workbook workbook = new Workbook();
                workbook.LoadFromFile(@"C:\Users\Administrator\Desktop\Sample.xlsx", ExcelVersion.Version97to2003);
                //轉換PDF,並以流的形式保存
                workbook.SaveToStream(ms3, Spire.Xls.FileFormat.PDF);
                //載入PDF流文件為PdfDocument對象數組的第三個元素
                documents[2] = new PdfDocument(ms3);
            }

            //載入pdf文檔,作為PdfDocument對象數組的第四個元素
            documents[3] = new PdfDocument(@"C:\Users\Administrator\Desktop\sample.pdf");
            //將前三個文檔合併到第四個文檔,並另存為新的PDF文檔
            for (int i = 2; i > -1; i--)
            {
                documents[3].AppendPage(documents[i]);
            }

            documents[3].SaveToFile("Result.pdf");   

完成代碼後,調試運行該項目,生成文件。

合併效果展示:

以上全部內容為合併不同格式文件為PDF文件的方法,如果想合併多個單一格式的PDF文檔為一個文件,可參見這篇文章:http://www.cnblogs.com/Yesi/p/5604166.html

如果喜歡本文,歡迎轉載(轉載請註明出處)

感謝瀏覽!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 這篇文章其實是老外寫的,我只是把它翻譯一下,因為我用asp.net做上傳,有一個60+M的文件一直上傳不了,查了好多資料都是說把Web.config里的system.web>>httpRuntime節點下的maxRequestLength屬性改大一點,預設是4096kb,但是我照著修改之後並沒有起作 ...
  • using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;u ...
  • 這是從上文的<<圖文並茂的生產者消費者應用實例demo>>整理總結出來的,具體就不說了,直接給出代碼,註釋我已經加了,原來的code請看<<.Net中的並行編程-7.基於BlockingCollection實現高性能非同步隊列>>,我改成適合我的版本了,直接給code: 調用code: 封裝的隊列: ...
  • 前幾步和網上其他教程一樣的。主要是把.net framework 打包進安裝程式里,如果選的是“從與我的應用程式相同的位置下載系統必備組件”,會提示 ERROR: 要在“系統必備”對話框中啟用“從與我的應用程式相同的位置下載系統必備組件”,必須將“Microsoft .NET Framework 4 ...
  • 首先本地得有網路 運行 "cmd"命令: 輸入"ipconfig": 拿到自己的IP地址 將要測試的項目在iis中配置好 index.aspx是首頁,也就是二維碼頁面 生成二維碼(index.aspx.cs頁面,基於QRCoder生成): 掃描生成的二維碼就自動跳到要測試的頁面了 ...
  • 上一篇講解了拼團提醒邏輯功能實現,現在繼續實現頁面功能。 Core項目 打開AbpZeroTemplate-zh-CN.xml語言文件,在末尾添加如下代碼: 文件路徑:D:\abp version\aspnet-zero-3.4.0\aspnet-zero-3.4.0\src\MyCompanyNa ...
  • 在 Asp.net SignalR 讓實時通訊變得簡單 中思明分享了一個直接寄宿到IIS上的SignalR,SignalR同時也可以宿主在任何應用程式,包括控制台,客戶端程式和Windows服務等,另外還支持Mono,這意味著它可以實現跨平臺部署在Linux環境下。 在我參考的博文 [Asp.net ...
  • 準備工作 想要使用Wix,首先需要去官網下載Wixtoolset。下載安裝之後,啟動visual studio,新建項目,可以看到在左邊的菜單欄多出了(Windows Installer XML)選項。 使用的工具:visual studio 2010 Wix版本號(WiX v3.7 (Stable ...
一周排行
    -Advertisement-
    Play Games
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...