合并 PDF 文件并添加頁碼
Spire.PDF for .NET 是一款專門對 Word 文檔進行操作的 .NET 類庫。致力于在于幫助開發(fā)人員輕松快捷高效地創(chuàng)建、編輯、轉(zhuǎn)換和打印 Microsoft Word 文檔,而無需安裝 Microsoft Word。
行號用于在每行文本旁邊顯示 Word 自動計算的行數(shù)。當我們需要參考合同或法律文件等文檔中的特定行時,它非常有用。word中的行號功能允許我們設(shè)置起始值、編號間隔、與文本的距離以及行號的編號方式。使用 Spire.Doc,我們可以實現(xiàn)上述所有功能。本文將介紹如何將 HTML 轉(zhuǎn)換為 PDF。
歡迎加入spire技術(shù)交流群:767755948
在搜索了大量有關(guān) PDF 合并的信息之后,我們不難發(fā)現(xiàn),無論是在線合并 PDF 文件還是使用 C#/VB.NET 來實現(xiàn)這項任務(wù),您始終無法擺脫對一些重要問題的擔憂,例如 PDF 文件的安全性、所花費的時間以及合并后的文件是否支持打印頁碼等等。不過,只要你來到這里,這些煩惱就不會出現(xiàn)了。本節(jié)將專門為您介紹一種安全的解決方案,通過 .NET PDF 組件 Spire.PDF for .NET,用 C#、VB.NET 將 PDF 文件合并為一個文件。
Spire.PDF for .NET是用C#語言從零開始構(gòu)建的,它能讓程序員和開發(fā)人員在.NET應(yīng)用程序中創(chuàng)建、讀取、寫入和處理PDF文檔,而無需使用Adobe Acrobat或任何外部庫。使用 Spire.PDF for .NET,您不僅可以快速合并 PDF 文件,還可以打印帶有頁碼的 PDF 頁面?,F(xiàn)在請預(yù)覽下面的有效截圖:
 
 
在執(zhí)行以下步驟之前,請下載 Spire.PDF for .NET 并將其安裝到系統(tǒng)上。
步驟1:你可以使用字符串數(shù)組來保存將合并為一個PDF的三個PDF文件的名稱,并演示Spire.Pdf.PdfDocument數(shù)組。然后,加載三個 PDF 文件并選擇第一個 PdfDocument,以便將第二個和第三個 PDF 文件合并到其中。為了將第二個PDF文件中的所有頁面導(dǎo)入到第一個PDF文件中,你需要調(diào)用方法 public void AppendPage(PdfDocument doc)。同樣通過調(diào)用另一個方法public PdfPageBase InsertPage(PdfDocument doc, int pageIndex),第三個PDF文件的每一頁都可以導(dǎo)入到第一個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] 
Private Sub button1_Click(sender As Object, e As EventArgs)
'pdf document list
Dim files As [String]() = New [String]() {"..\PDFmerge0.pdf", "..\ PDFmerge1.pdf", "..\ PDFmerge2.pdf"}
'open pdf documents            
Dim docs As PdfDocument() = New PdfDocument(files.Length - 1) {}
For i As Integer = 0 To files.Length - 1
	docs(i) = New PdfDocument(files(i))
Next
'append document
docs(0).AppendPage(docs(1))
'import PDF pages
Dim i As Integer = 0
While i < docs(2).Pages.Count
	docs(0).InsertPage(docs(2), i)
	i = i + 2
End While
 第二步:在第一個 PDF 文件中繪制頁碼。在這一步中,你可以通過調(diào)用 Spire.Pdf.Graphics.PdfMargins 類來設(shè)置 PDF 頁碼頁邊距。PdfMargins。然后,調(diào)用自定義方法 DrawPageNumber(PdfPageCollection pages, PdfMargins margin, int startNumber, int pageCount) 在第一個 PDF 文件的每一頁底部添加頁碼。請看下面的詳細代碼: 
[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
 PDF 合并代碼乍一看可能很長,實際上,如果你不需要在合并后的 PDF 中添加頁碼,則應(yīng)避免使用第二步。然而,在很多情況下,頁碼為用戶閱讀 PDF 和打印 PDF 帶來了極大的便利。Spire.PDF for .NET既能滿足您合并PDF文件的要求,又能在合并后的PDF文件中添加頁碼。                
            
 QQ交談
QQ交談 在線咨詢
在線咨詢 
                 
                
 渝公網(wǎng)安備
            50010702500608號
渝公網(wǎng)安備
            50010702500608號
             
            
 客服熱線
客服熱線