翻譯|行業(yè)資訊|編輯:胡濤|2024-04-01 10:23:12.040|閱讀 104 次
概述:本節(jié)將專門向您介紹一種安全的解決方案,通過 .NET PDF 組件 Spire.PDF for .NET,使用 C#、VB.NET 將 PDF 文件合并為一個(gè)。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
搜索了這么多有關(guān) PDF 合并的信息后,很容易發(fā)現(xiàn),無(wú)論您在線合并 PDF 文件還是使用 C#/VB.NET 來(lái)實(shí)現(xiàn)此任務(wù),您都無(wú)法逃避對(duì) PDF 文件安全等一些重要問題的擔(dān)憂,因此需要花費(fèi)多少時(shí)間或者合并后的文件是否支持打印頁(yè)碼等等。不過,只要來(lái)到這里,這些煩惱就不會(huì)出現(xiàn)。本節(jié)將專門向您介紹一種安全的解決方案,通過 .NET PDF 組件 Spire.PDF for .NET,使用 C#、VB.NET 將 PDF 文件合并為一個(gè)。
Spire.PDF for .NET 是一款獨(dú)立 PDF 控件,用于 .NET 程序中創(chuàng)建、編輯和操作 PDF 文檔。使用 Spire.PDF 類庫(kù),開發(fā)人員可以新建一個(gè) PDF 文檔或者對(duì)現(xiàn)有的 PDF 文檔進(jìn)行處理,且無(wú)需安裝 Adobe Acrobat。
E-iceblue 功能類庫(kù)Spire 系列文檔處理組件均由中國(guó)本土團(tuán)隊(duì)研發(fā),不依賴第三方軟件,不受其他國(guó)家的技術(shù)或法律法規(guī)限制,同時(shí)適配國(guó)產(chǎn)操作系統(tǒng)如中科方德、中標(biāo)麒麟等,兼容國(guó)產(chǎn)文檔處理軟件 WPS(如 .wps/.et/.dps 等格式
Spire.PDF for.net下載 Spire.PDF for java下載
Spire.PDF for .NET使用 C# 從頭開始構(gòu)建,使程序員和開發(fā)人員能夠在 .NET 應(yīng)用程序中創(chuàng)建、讀取、編寫和操作 PDF 文檔,而無(wú)需使用 Adobe Acrobat 或任何外部庫(kù)。使用Spire.PDF for .NET,您不僅可以快速合并PDF文件,還可以打印帶有頁(yè)碼的PDF頁(yè)面。現(xiàn)在請(qǐng)預(yù)覽下面的有效截圖:
在執(zhí)行以下步驟之前,請(qǐng)下載Spire.PDF for .NET并將其安裝在系統(tǒng)上。
步驟1:您可以使用String數(shù)組保存將要合并為一個(gè)PDF的三個(gè)PDF文件的名稱并演示Spire.Pdf.PdfDocument數(shù)組。然后,加載三個(gè) PDF 文件并選擇第一個(gè)PdfDocument,以便將第二個(gè)和第三個(gè) PDF 文件合并到其中。為了將第二個(gè) PDF 文件中的所有頁(yè)面導(dǎo)入到第一個(gè) PDF 文件中,您需要調(diào)用方法public void AppendPage(PdfDocument doc)。另外,通過調(diào)用另一個(gè)方法public PdfPageBase InsertPage(PdfDocument doc, int pageIndex),可以將第三個(gè) PDF 文件的每一頁(yè)導(dǎo)入到第一個(gè) PDF 文件中。
[C#]
private void button1_Click(object sender, EventArgs e) { //pdf document list String[] files = new String[] { @"..\PDFmerge0.pdf", @"..\ PDFmerge1.pdf", @"..\ PDFmerge2.pdf" }; //open pdf documents PdfDocument[] docs = new PdfDocument[files.Length]; for (int i = 0; i < files.Length; i++) { docs[i] = new PdfDocument(files[i]); } //append document docs[0].AppendPage(docs[1]); //import PDF pages for (int i = 0; i < docs[2].Pages.Count; i = i + 2) { docs[0].InsertPage(docs[2], i); }
【VB.NET】
//set PDF margin PdfUnitConvertor unitCvtr = new PdfUnitConvertor(); PdfMargins margin = new PdfMargins(); margin.Top = unitCvtr.ConvertUnits(2.54f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point); margin.Bottom = margin.Top; margin.Left = unitCvtr.ConvertUnits(3.17f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point); margin.Right = margin.Left; this.DrawPageNumber(docs[0].Pages, margin, 1, docs[0].Pages.Count); private void DrawPageNumber(PdfPageCollection pages, PdfMargins margin, int startNumber, int pageCount) { foreach (PdfPageBase page in pages) { page.Canvas.SetTransparency(0.5f); PdfBrush brush = PdfBrushes.Black; PdfPen pen = new PdfPen(brush, 0.75f); PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 9f, System.Drawing.FontStyle.Italic), true); PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Right); format.MeasureTrailingSpaces = true; float space = font.Height * 0.75f; float x = margin.Left; float width = page.Canvas.ClientSize.Width - margin.Left - margin.Right; float y = page.Canvas.ClientSize.Height - margin.Bottom + space; page.Canvas.DrawLine(pen, x, y, x + width, y); y = y + 1; String numberLabel = String.Format("{0} of {1}", startNumber++, pageCount); page.Canvas.DrawString(numberLabel, font, brush, x + width, y, format); page.Canvas.SetTransparency(1); } }
步驟2:在第一個(gè)PDF文件中繪制頁(yè)碼。在此步驟中,您可以通過調(diào)用 Spire.Pdf.Graphics 類來(lái)設(shè)置 PDF 頁(yè)碼邊距。 pdf頁(yè)邊距。然后,調(diào)用自定義方法DrawPageNumber(PdfPageCollection pages, PdfMargins margin, int startNumber, int pageCount ) 在第一個(gè) PDF 的每個(gè)頁(yè)面的底部添加頁(yè)碼。詳細(xì)代碼請(qǐng)看下面
[C#]
//set PDF margin PdfUnitConvertor unitCvtr = new PdfUnitConvertor(); PdfMargins margin = new PdfMargins(); margin.Top = unitCvtr.ConvertUnits(2.54f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point); margin.Bottom = margin.Top; margin.Left = unitCvtr.ConvertUnits(3.17f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point); margin.Right = margin.Left; this.DrawPageNumber(docs[0].Pages, margin, 1, docs[0].Pages.Count); private void DrawPageNumber(PdfPageCollection pages, PdfMargins margin, int startNumber, int pageCount) { foreach (PdfPageBase page in pages) { page.Canvas.SetTransparency(0.5f); PdfBrush brush = PdfBrushes.Black; PdfPen pen = new PdfPen(brush, 0.75f); PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 9f, System.Drawing.FontStyle.Italic), true); PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Right); format.MeasureTrailingSpaces = true; float space = font.Height * 0.75f; float x = margin.Left; float width = page.Canvas.ClientSize.Width - margin.Left - margin.Right; float y = page.Canvas.ClientSize.Height - margin.Bottom + space; page.Canvas.DrawLine(pen, x, y, x + width, y); y = y + 1; String numberLabel = String.Format("{0} of {1}", startNumber++, pageCount); page.Canvas.DrawString(numberLabel, font, brush, x + width, y, format); page.Canvas.SetTransparency(1); } }
[VB.NET]
'set PDF margin Dim unitCvtr As New PdfUnitConvertor() Dim margin As New PdfMargins() margin.Top = unitCvtr.ConvertUnits(2.54F, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point) margin.Bottom = margin.Top margin.Left = unitCvtr.ConvertUnits(3.17F, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point) margin.Right = margin.Left Me.DrawPageNumber(docs(0).Pages, margin, 1, docs(0).Pages.Count) Private Sub DrawPageNumber(pages As PdfPageCollection, margin As PdfMargins, startNumber As Integer, pageCount As Integer) For Each page As PdfPageBase In pages page.Canvas.SetTransparency(0.5F) Dim brush As PdfBrush = PdfBrushes.Black Dim pen As New PdfPen(brush, 0.75F) Dim font As New PdfTrueTypeFont(New Font("Arial", 9F, System.Drawing.FontStyle.Italic), True) Dim format As New PdfStringFormat(PdfTextAlignment.Right) format.MeasureTrailingSpaces = True Dim space As Single = font.Height * 0.75F Dim x As Single = margin.Left Dim width As Single = page.Canvas.ClientSize.Width - margin.Left - margin.Right Dim y As Single = page.Canvas.ClientSize.Height - margin.Bottom + space page.Canvas.DrawLine(pen, x, y, x + width, y) y = y + 1 Dim numberLabel As [String] = [String].Format("{0} of {1}", System.Math.Max(System.Threading.Interlocked.Increment(startNumber),startNumber - 1), pageCount) page.Canvas.DrawString(numberLabel, font, brush, x + width, y, format) page.Canvas.SetTransparency(1) Next End Sub
當(dāng)您乍一看時(shí),PDF合并代碼可能會(huì)很長(zhǎng),實(shí)際上,如果您不需要在合并的PDF中添加頁(yè)碼,則應(yīng)該避免第二步。然而,在很多情況下,頁(yè)碼為用戶閱讀PDF以及打印PDF帶來(lái)了很大的便利。 Spire.PDF for .NET 可以滿足您合并 PDF 文件和在合并的 PDF 文件中添加頁(yè)碼的需求。
以上便是如何查找并刪除 PDF 中的空白頁(yè),如果您有其他問題也可以繼續(xù)瀏覽本系列文章,獲取相關(guān)教程,你還可以給我留言或者加入我們的官方技術(shù)交流群。
歡迎下載|體驗(yàn)更多E-iceblue產(chǎn)品
獲取更多信息請(qǐng)咨詢 ;技術(shù)交流Q群(767755948)
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn