2011-08-18 5 views
1

현재 작업중인 프로젝트에는 문서를 크게 인쇄해야하며 클라이언트로 발송됩니다. 예를 들어, 하나의 인쇄 작업에는 1000 자 이상의 문자가 포함될 수 있으며 각 문자는 다른 클라이언트로 전송됩니다.PDFBox의 병합 된 문서에는 빈 페이지가 없거나 너무 많습니다. 인쇄 된 경우에만 ...

이 인쇄 작업을 생성하기 위해 외부 서비스 (즉, PDFBox를 사용하지 않음)가 먼저 이러한 각 문자를 개별 PDF 파일로 생성합니다. 그런 다음 내 코드가 이러한 모든 PDF 파일을로드하고 모든 파일을 PDFBox와 병합하여 인쇄실에서 단일 작업으로 인쇄 할 수 있도록하고 전면에 "배너 페이지"를 추가합니다 (PDFBox와 함께). 인쇄실에 편지를 어떻게 처리할지 알려줍니다.

모든 것이 양면으로 인쇄됩니다. 그러나 각 편지가 다른 고객에게 전달되기 때문에 한 장의 종이에 두 글자를 연속적으로 인쇄 할 수는 없습니다. 즉, 페이지 수가 홀수 인 편지에는 빈 페이지가 추가되어야합니다. 그냥 인쇄하기 전에, 두 개의 문자를 포함하는 매우 작은 글씨 실행에 대한 병합 된 PDF 문서는 다음과 같이 보일 수있다 :.

Banner Page 
Blank 
Letter 1 
Blank 
Letter 2 
Blank 

을하지만 내 문제가 들어오는 곳이다 나는이와 함께 빈 페이지를 추가했습니다 코드 :

PDFMergerUtility docMerger = new PDFMergerUtility(); 
for (PDDocument currDoc : documents) { 

    // Add blank page to document if odd number 
    if (currDoc.getNumberOfPages() % 2 != 0) { 
     currDoc.addPage(new PDPage()); 
    } 

    // Merge into single document 
    docMerger.appendDocument(mergedDoc, currDoc); 

    // Close currDoc 
    currDoc.close(); 
} 

이 배너 페이지를 지속적으로 작동하는 것 같다, 그러나 편지의 일부 유형, 그것은 나사까지. 결과 PDF를 열면 괜찮아 보이지만 인쇄 할 때 각 문자 사이에 여분의 빈 종이가 생깁니다. 내가 아크로뱃 리더 (또는 PDFBox의 뷰어)에서 볼 때

그래서 :

Sheet 1: Banner Page 
Sheet 2: Letter 1 
Sheet 3: Letter 2 

인쇄 출력은 다음과 같습니다

Sheet 1: Banner Page 
Sheet 2: Letter 1 
Sheet 3: BLANK! 
Sheet 4: Letter 2 
Sheet 5: BLANK! 

을 사이에, 나는 밖으로 그 new PDPage() 코드를 가지고가는 경우에, Acrobat 및 인쇄 출력에서 ​​다음 결과를 얻을 수 있습니다.

Sheet 1: Banner Page 
Sheet 2: Letter 1 (front) AND Letter 2 (back) 

ed 디버깅은 PDDocument.silentPrint(PrinterJob)을 통해 디버깅되지만, PDF의 구조에 깊이 들어가면 아무 것도 나타나지 않고, 밖으로 빠져 나올 수 없습니다. 무슨 일이 벌어 질지 상상해?

답변

0

좋아요, 문제가 있음을 알았을 것 같습니다. 편지 중 일부는 "Letter"가 아닌 "A4"종이로 디자인 된 것 같습니다. 필자가 Acrobat Reader에서 파일을 보았다면 완벽하게 잘 보였습니다. 거기에서 편지를 인쇄하면 Reader는 출력물을 자동으로 사용 가능한 용지 크기에 맞춰야합니다. 불행히도 PDFBox는 동일한 압박감을 느끼지 않습니다. 그래서 PDFBox를 통해 인쇄 할 때 편지는 다음 페이지로 넘어 가서 약간 이상하게 보입니다.

아직이 이론을 테스트 할 기회가 없었습니다 ... 편지 작성자가 버그를 발견했지만 그의 변경 사항은 아직 테스트 서버에 반영되지 않았습니다. 그래도 문제가 해결되지 않으면 다시 신고 해 드리겠습니다.

+1

그래서 ... 결국 용지 크기가 문제였습니까? 그렇다면 자신의 대답을 수락하십시오 :). – jjmontes