2012-08-22 4 views
2

콘텐츠를 PDF의 페이지 중간에 삽입해야한다는 요구 사항이 있습니다.IText를 사용하여 PDF의 페이지 중간에 내용을 삽입하는 방법

콘텐츠는 동적 테이블 또는 이미지 일 수 있습니다.

개념은 먼저 PDF를 2 부분으로 나누고, 추가 할 새로운 내용을 가져 와서 자리 표시 자 필드를 바꾸어 추가하는 것이 었습니다.


분할은 IText에 따라 타일링이라고하며, 여기에는 동일한 예가 나와 있습니다. http://itextpdf.com/examples/iia.php?id=116

위의 코드는 두 가지 단점이있다 : 그것은 16 개 부분으로 페이지를 분할 1.. 하지만 그것은 예제의 일부입니다. 아직도 나는 2 부분으로 파일을 나눌 방법을 찾아 낼 수 없다. 2. 두 번째로 분할 된 페이지가 전체 페이지로 변환되므로 비율이 불안정합니다.


재 배열 코드는 다른 문제입니다.

나머지 콘텐츠는 추가 모드로 재주문해야합니다. 그러나 아직까지는 단지 내용이 아닌 완전한 새로운 페이지를 추가하는 코드 만 발견했습니다. 나는 자리를 대체하여 PDF 내용을 추가 코드를 발견

:

float[] fieldPosition= pdfTemplate.getAcroFields().getFieldPositions("tableField"); 
PdfPTable table = buildTable(); 
PdfContentByte cb = stamper.getOverContent(1); 
table.writeSelectedRows(0, -1, fieldPosition[1],fieldPosition[4],cb); 

이 요구 사항을 해결하기 위해 도와주세요.

답변

2

PDF는 판 형식이 아닌 프레젠테이션 형식입니다. 다시 말해, 원래의 컨텐트가 정상적으로 리플 로우되는 상태에서 컨텐트 삽입을 허용하도록 설계되지 않았습니다. 결과적으로 도구 (적어도 내가 알고있는 것은 없으며 iText가 아님)를 사용하면 요구 사항을 충족시킬 수 있습니다.

내 조언 : 그것은 가능하지 이후

  • 가 할당을 거부하거나
  • 가 원본 문서에 손을 얻을 원하는 추가 내용을 삽입하고, 다음 PDF로 변환합니다.
+0

안녕 Alexis, 나는 당신과 의견이 맞지 않아. 나는 이미 PDF를 어느 정도 편집했고 나는 이전에 그렇게했지만 코드 백업을 사용할 수 없다는 말을 들었다. 나는 여전히 완전한 해결책을 찾으려고 노력 중이다. –

+0

PDF 파일 편집이 가능하다 : 페이지를 추가/제거하고, 내용의 위/아래에 스탬프를 찍고, 자르기, 자르기, 병합 등을 할 수있다. 원본 콘텐츠가 리플 로우되고 새로 추가 된 콘텐츠에 적응하는 방식으로 PDF 파일을 수정해야합니다. –

+0

바이트 형식으로 콘텐츠를 추출 할 수있는 방법이 있습니까 ?? 필자는 IText 라이브러리에 PDFContentByte라는 클래스가 있다는 것을 보았습니다. 이를 바이트 형식으로 내용을 추출한 다음 추가 된 PDF 내용 바이트 뒤에 추가하면 문제가 해결 될 수 있습니다. 불행히도 나는 현재 이것을 어떻게하는지 모른다. –

관련 문제