2013-08-30 107 views
1

如何從pdf中刪除分頁符,因此輸出將是單個「頁面」PDF?所以如果一個普通的頁面是400x900,並且我有4個頁面,則生成的文件將是1600x900。我以前爲Tif文件做過這個(Remove page breaks in multi-page tif to make one long page),但是想用PDF來做。我可以轉換爲ps,刪除任何代碼意味着'分頁符',然後轉換回pdf?刪除PDF分頁符

+0

您是否希望註釋也出現在合併頁面上?如果沒有,@科爾頓的答案顯示了方式。儘管如此,改進是可能的。加入不同尺寸的頁面並不合適,並且可能會對所需資源進行一些優化。 – mkl

+1

非常正確。我已更新我的示例以處理不同尺寸的頁面(寬度和高度)。添加使用語句以獲得更好的內存使用。 – Milne

回答

4

這可以在iTextSharp的文庫通過使用單個圓柱PdfTable和動態地改變依賴於頁面的數量的文檔的大小來進行。

你當然需要在iTextSharp的DLL一些參考文獻中找到here

using iTextSharp.text; 
using iTextSharp.text.pdf; 
using System.IO; 

這裏有一個簡單的例子:

public static void MergePages() 
{ 
    using (PdfReader reader = new PdfReader(@"C:\Users\cmilne\Desktop\AA0081913.pdf"))//Original PDF containing page breaks. 
    { 
     int pages = reader.NumberOfPages; 
     float postProcessPageHeight = 0; 
     float postProcessPageWidth = 0; 
     for (int p = 1; p <= bill.PageCount; p++) 
     { 
      var size = bill.PdfReader.GetPageSize(p); 
      postProcessPageHeight += (size.Height); 
      if (size.Width > postProcessPageWidth) 
       postProcessPageWidth = (size.Width); 
     } 

     var rect = new Rectangle(postProcessPageWidth, postProcessPageHeight); 

     using (Document document = new Document(rect, 0, 0, 0, 0)) 
     { 
      PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(@"C:\Users\cmilne\Desktop\AA0081913_NEW.pdf", FileMode.Create)); //Declare location\name of new PDF not containing page breaks. 

      document.Open(); 
      PdfImportedPage page; 
      PdfPTable table = new PdfPTable(1); 
      table.WidthPercentage = 100; 

      for (int i = 1; i <= pages; i++) 
      { 
       page = writer.GetImportedPage(reader, i); 
       table.AddCell(iTextSharp.text.Image.GetInstance(page)); 
      } 
      document.Add(table); 
      document.Close(); 
     } 
    } 
} 

最終頁大小必須小於14400的14400。 (iTextSharp允許的全部內容)通常分辨率的8 1/2 x 11 PDF將使最多約18頁。

+0

感謝您添加此答案。我錯過了OP的評論直到今天! – JNYRanger

+0

我已更新我的示例以處理不同尺寸的頁面(寬度和高度)。添加使用語句以獲得更好的內存使用。 – Milne

1

使用iTextSharp C#庫。它爲您提供了很多操作PDF的選項。當我不得不爲一個閉源文檔庫編寫一個導入應用程序時,我已經使用過它。它像一個魅力。唯一的缺點是他們的文檔有點多餘,因爲他們希望你購買他們的書。你可以瀏覽他們的Java API,雖然免費,因爲它幾乎與C#相同,只是玩弄它來找到C#版本。

iText的:http://itextpdf.com/

+1

iTextSharp肯定有很多操作PDF的選項,但我沒有看到刪除分頁符的選項。你知道它是否有這種選擇? –