문제

Java 응용 프로그램(특히 J2EE Webapp) 내에서 PDF 파일을 자동 인쇄하려고 합니다.

이 애플리케이션 내에서 iText를 사용하여 PDF 파일을 생성하고 있습니다.생성된 파일은 각각 정확히 한 페이지로 구성된 양식 편지입니다.

이 PDF 파일을 렌더링하고 인쇄하기 위해 pdf-renderer 라이브러리를 사용해 보았습니다.(여기를 보아라: https://pdf-renderer.dev.java.net/ )

유용한 예제 코드를 찾았습니다. http://juixe.com/techknow/index.php/2008/01/17/print-a-pdf-document-in-java/ 그리고 실제로 작업 중인 기계에서 첫 번째 문서를 인쇄할 수 있을 때까지는 그리 오랜 시간이 걸리지 않았습니다.

하지만 이제 재미있는 부분이 나옵니다.

각 PDF 파일을 인쇄한 후 어떻게든 망가졌습니다.여전히 읽을 수 있고 모든 것이 있었지만 전체 형식이 약간 이상해졌습니다.라인 브레이크가 있어서는 안 되며, 이미지에 포함된 오류 아티팩트, 텍스트 줄 바꿈이 갑자기 길어지거나 짧아집니다...

게다가 인쇄된 것도 이 '해킹된' 버전이었습니다...따라서 오류는 렌더링 프로세스 어딘가에 있는 것 같습니다.

이것은 전체 렌더링 및 인쇄 프로세스를 담당하는 소스 코드입니다.

File f = this.file; //This accesses the created PDF file

FileInputStream fis = new FileInputStream(f);

FileChannel fc = fis.getChannel();

ByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());

PDFFile pdfFile = new PDFFile(bb); // Create PDF Print Page

PDFPrintPage pages = new PDFPrintPage(pdfFile);



// Create Print Job

PageFormat pf = PrinterJob.getPrinterJob().defaultPage();

pjob.setJobName(f.getName());

Book book = new Book();

book.append(pages, pf, pdfFile.getNumPages());

pjob.setPageable(book);

또 다른 재미있는 사실:PDF를 망가뜨리는 일은 생성된 iText PDF 문서에서만 발생합니다.임의의 다른 PDF를 인쇄하려고 하면 손상되지 않습니다.

문제가 무엇인지에 대한 아이디어가 있습니까?그리고 렌더링이 내 PDF에 어떤 영향을 미칠 수 있나요?이 scource 코드를 이해하면 READ_ONLY 모드는 정확히 그것을 방지해야 합니다...

편집하다:iText로 생성된 PDF를 인쇄하면 포함된 글꼴도 제거된다는 것을 방금 확인했습니다.다시 말하지만, pdf-renderer를 통해 렌더링/인쇄하기 전에는 완벽하게 작동했습니다.(글꼴은 PDF 속성 등에 표시되었습니다....)

도움이 되었습니까?

해결책

어쩌면 iText가 렌더러와 호환되지 않는 PDF 파일을 생성하고 있는 것일까요?어떤 PDF 버전이 생성되는지 확인하셨나요?어쩌면 이전 버전을 지정하는 것이 가능할까요?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top