자바 인쇄 pdf 파일

의지

컴파일 그룹 : 'org.apache.pdfbox'이름 'pdfbox'버전 '2.0.3'
 //     컴파일 그룹 : 'org.apache.pdfbox'이름 'pdfbox - 응용 프로그램'버전 '1.8. 10 ' 
컴파일 그룹 :'org.apache.pdfbox '이름'fontbox '버전'1.5.0 '

PDF 파일을 생성 (1)  

pdf 파일 코드

공개 지도 <문자열, 개체> generatePDF (지도 <문자열, 개체> PARAMS) { 
        지도 <문자열, 개체> 데이터 = 새로운 HashMap의 <> (PARAMS); 
        문자열 pwoId = ConversionUtil.toString (params.get (FIELD_ID));
        만약 (! StringUtil.isEmpty (pwoId)) { 
            문자열 파일 경로 = FILEPATH_PDF + pwoId + + 새로운 java.util.Date () 다음 getTime () + ".PDF". ; 
            문서 문서 = ;
            경우 (! StringUtil.equalsIgnoreCase는 (방법은 DEFAULT_WAY)) { 
                문서는 = 새로운문헌 (PageSize.A4); 
            } 사람이 { 
                문서 = 문서 (PageSize.A4.rotate ()); 
            } 
            시도 { 
                BASEFONT 부호화 = BaseFont.createFont ( "STSong 라이트"를 "UniGB-UCS2-H" , BaseFont.NOT_EMBEDDED); 
                폰트 폰트 = 새로운 폰트 (인코딩 DEFAULT_FONT_SIZE, Font.NORMAL, BaseColor.BLACK); 
                파일 파일 = 새로운 파일 (파일 경로를)
                경우 (! . file.getParentFile ()가 존재 ()) { 
                    file.getParentFile () mkdirs ().; 
                }
                file.createNewFile (); 
                PdfWriter.getInstance (문서, 새로운 FileOutputStream에 (파일 경로)); 
                () 다음 Document.open; 
                단락 표제는 = 새로운 단락 (DEFAULT_TITLE, 폰트); 
                data.put (PRINTER_STATUS, STATE_SUCCESS); 
                data.put (PRINTER_TIME, LocalDateTime.now ()); 
                data.put (PRINTER_NAME, "프로 MFP M128fw HP 레이저젯" ); 
                문자열 텍스트 = printTemplateText (데이터); 
                단락 체 = 새로운 단락 (텍스트 폰트); 
                title.setAlignment (Element.ALIGN_CENTER)를;
                title.setSpacingAfter (DEFAULT_AFTER_SPACING); 
                title.setSpacingBefore (DEFAULT_BEFORE_SPACING); 
                (제목) document.add; 
                (본체) document.add; 
                () document.close; 
                경우 (logger.isDebugEnabled ()) { 
                    logger.debug ( "PDF 생성 파일 경로 :"+ file.getAbsolutePath ()); 
                } 
                INT의 형식 = ConversionUtil.toInt (방법);
                경우 (file.exists ()) { 
                    data.put (PRINTER_CODE, 200); // 目前生成PDF,打印失败也算处置成功
                } 

                경우 (printAction (데이터 파일 포맷)) { 
                    data.put (PRINTER_CODE, 200 );
                    경우 (logger.isDebugEnabled ()) { 
                        logger.debug (파일 경로 + "파일을 성공적으로 인쇄" ); 
                    } 
                } { 
                    data.put (PRINTER_CODE, 500 ); 
                } 
            } 캐치 (Throwable를 전자) { 
                logger.error ( "PDF 파일 실패 만들기" , 전자); 
            } 
        } 
        리턴 데이터;
    }

 

2. pdf 파일 인쇄

 개인  정적  부울 printAction (지도 <문자열, 개체> 데이터, 파일 파일, INT 방법) 발생 PrinterException가, IOException가 { 
        부울 isPrint = 거짓을 ; 
        PDDocument 문헌 = ;
        시도 { 
            문서 = PDDocument.load (파일); 
            PrinterJob에 PRINTJOB = PrinterJob.getPrinterJob (); 
            printJob.setJobName (file.getName ()); 
            // 查找并设置打印机,获得所有打印机 
            PrintService의 [] = 가지는 PrintService PrinterJob.lookupPrintServices ();
            만약(가지는 PrintService는 == null이 || printServices.length == 0 ) { 
                logger.error ( "인쇄하는 데 실패 없음 가능한 프린터를 찾을 수 없습니다.." ); 
                isPrint는 = 거짓 ;
                반환 isPrint을; 
            } 
            의 PrintService의 PrintService = ;
             ( INT I = 0, = LEN printServices.length; I <렌; I ++ ) { 
                의 PrintService = 가지는 PrintService [I];
                경우 (PrintService에 == null이 ) {
                     계속; 
                } 다른 { 
                    printJob.setPrintService (PrintService의) 
                    data.put (PRINTER_NAME, printService.getName는 ()); 
                } 
                // 용지를 설정하고 확대 
                PDFPrintable pdfPrintable = 새로운 새 ; PDFPrintable (문서 Scaling.ACTUAL_SIZE)
                 // 세트 다중 인쇄 
                예약 = 예약 새로운 새 도서 () 
                PageFormat의의 PageFormat = 새로운 새로운 PageFormat의 ();
                 // 세트 인쇄 방향 1 0 측면 길이 
                pageFormat.setOrientation (웨이)
                 // 용지 설정
                pageFormat.setPaper는 (폭 getPaper ()); 
                book.append (pdfPrintable, PageFormat에, document.getNumberOfPages는 ()); 
                printJob.setPageable (책); 
                // 설정 복사의 수 
                printJob.setCopies (1. );
                 // 속성 인쇄 추가 
                HashPrintRequestAttributeSet을 = 갈 거예요 새로운 새로운 HashPrintRequestAttributeSet (); 
                pars.add (Sides.DUPLEX는); // 홀수, 심지어 페이지를 설정 
                은 try { 
                    ; printJob.print (파스) 
                    isprint = true로 ; 
                } 캐치 (PrinterException가와 E의를) {
                    isPrint는 = 거짓 ;
                    계속 ; 
                } 
            } 
        } 마지막으로 {
             경우 (문서! = null이 ) {
                 시도 { 
                    document.close (); 
                } 캐치 (IOException이 전자) { 
                    e.printStackTrace (); 
                } 
            } 
        } 
        반환 isPrint을; 
    }

추천

출처www.cnblogs.com/daijiabao/p/12092824.html