2014-11-19 10 views
0

PDF 파일을 처리하기 위해 iTextSharp를 사용하고 있습니다. 나는 페이지를 반으로 나누어 두 개의 다른 페이지를 만드는 방법을 알고 싶습니다. 나는 많은 시도를했지만 지금 당장은 아무 것도 보이지 않습니다.한 페이지를 두 페이지로 나누기 PDF 파일

먼저

iTextSharp.text.Rectangle size = new iTextSharp.text.Rectangle(0, pdfReader.GetPageSize(1).Height/2, pdfReader.GetPageSize(1).Width, 0); 

둘째

iTextSharp.text.Rectangle size = pdfReader.GetPageSizeWithRotation(1); 
iTextSharp.text.Document document = new iTextSharp.text.Document(size.GetRectangle(0, size.Height/2)); 

그리고 몇 가지 다른 사람을 시도하려고합니다. 결과는 항상 동일합니다. 원본 페이지의 후반부에 파일이 있습니다.

답변

2

코드 스 니펫을 이해할 수는 없지만 아마도 이해할 수 없을 것입니다. 따라서 지금까지 작성한 내용을 살펴 보지 말고 TileInTwo 예제를 자세히 살펴 보겠습니다. 이 예에서

public void manipulatePdf(String src, String dest) 
    throws IOException, DocumentException { 
    // Creating a reader 
    PdfReader reader = new PdfReader(src); 
    int n = reader.getNumberOfPages(); 
    // step 1 
    Rectangle mediabox = new Rectangle(getHalfPageSize(reader.getPageSizeWithRotation(1))); 
    Document document = new Document(mediabox); 
    // step 2 
    PdfWriter writer 
     = PdfWriter.getInstance(document, new FileOutputStream(dest)); 
    // step 3 
    document.open(); 
    // step 4 
    PdfContentByte content = writer.getDirectContent(); 
    PdfImportedPage page; 
    int i = 1; 
    while (true) { 
     page = writer.getImportedPage(reader, i); 
     content.addTemplate(page, 0, -mediabox.getHeight()); 
     document.newPage(); 
     content.addTemplate(page, 0, 0); 
     if (++i > n) 
      break; 
     mediabox = new Rectangle(getHalfPageSize(reader.getPageSizeWithRotation(i))); 
     document.setPageSize(mediabox); 
     document.newPage(); 
    } 
    // step 5 
    document.close(); 
    reader.close(); 
} 

public Rectangle getHalfPageSize(Rectangle pagesize) { 
    float width = pagesize.getWidth(); 
    float height = pagesize.getHeight(); 
    return new Rectangle(width, height/2); 
} 

, 우리는 첫 번째 페이지의 페이지 크기의 PdfReader 인스턴스를 요청하고 우리는 같은 폭으로 새로운 직사각형 절반 높이를 만들 수 있습니다.

우리는 다음 문서의 각 페이지를 가져, 우리는 다른 페이지에 두 번을 추가, 를 원래 페이지의 상단 절반을 보여주기 위해 한 번 부정적인 y 값으로 홀수 페이지에

  • 한 번 짝수 페이지에서 y = 0으로 표시하면 원본 페이지의 아래쪽 절반이 표시됩니다.

원본 문서의 모든 페이지가 다른 크기를 가질 수 있으므로 새로운 몇 개의 페이지마다 페이지 크기를 변경해야 할 수도 있습니다.

관련 문제