현재 작업중인 프로젝트에는 문서를 크게 인쇄해야하며 클라이언트로 발송됩니다. 예를 들어, 하나의 인쇄 작업에는 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의 구조에 깊이 들어가면 아무 것도 나타나지 않고, 밖으로 빠져 나올 수 없습니다. 무슨 일이 벌어 질지 상상해?
그래서 ... 결국 용지 크기가 문제였습니까? 그렇다면 자신의 대답을 수락하십시오 :). – jjmontes