의지
컴파일 그룹 : '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을; }