2013-08-30 3 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

맞아. 다양한 치수 (폭과 높이 모두)의 페이지를 다루기 위해 예제를 업데이트했습니다. 더 나은 메모리 사용을 위해 using 문을 추가했습니다. – Milne

답변

4

.

당신은 물론 iTextSharp DLL에 대한 몇 가지 참조가 여기에

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

here을 발견 간단한 예제가 필요합니다 :

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

폭과 높이 모두 다양한 크기의 페이지를 다루기 위해 예제를 업데이트했습니다. 더 나은 메모리 사용을 위해 using 문을 추가했습니다. – Milne

1

iTextSharp C# 라이브러리를 사용하십시오. 그것은 당신에게 PDF를 조작하는 많은 옵션을 제공합니다. 이전에 폐쇄 형 소스 문서 저장소에 대한 가져 오기 응용 프로그램을 작성해야했던시기였습니다. 그것은 매력처럼 작동했습니다. 유일한 단점은 도서를 구입하기를 원하기 때문에 문서가 일그러진다는 것입니다. C#과 거의 동일하기 때문에 무료로 Java API를 브라우저 할 수 있으며 C# 버전을 찾기 위해 놀 수 있습니다.

이 iText : http://itextpdf.com/이 하나의 원주 PdfTable를 사용하여 동적 페이지 수에 의존 문서의 크기를 변경하여 iTextSharp 라이브러리에서 수행 할 수

+1

iTextSharp에는 확실히 PDF 조작을위한 많은 옵션이 있지만 페이지 나누기 옵션을 볼 수 없습니다. 그 옵션이 있는지 아십니까? –