ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • PDF_BOX
    카테고리 없음 2019. 5. 17. 11:40

    https://www.tutorialspoint.com/pdfbox/index.htm

    pdfbox 튜토리얼 

    pdf파일을 만드는 예제

    import java.io.IOException;
    
    import org.apache.pdfbox.pdmodel.PDDocument;
    
    public class PDFDocumentCreate {
    	public static void main(String[] args) {
    		PDDocument document = new PDDocument();//빈 PDF 문서를 만든다 . 
    		try {
    			document.save("D:/EDOC_JAVA/Study/pdfprac/test.pdf");
    			System.out.println("PDF Create");
    			document.close();
    			
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    }
    

     

    PDF파일생성후 빈페이지를 생성한다.

    import java.io.IOException;
    
    import org.apache.pdfbox.pdmodel.PDDocument;
    import org.apache.pdfbox.pdmodel.PDPage;
    
    public class AddingPage {
    	public static void main(String[] args) {
    		//create PDF documet object
    		PDDocument document = new PDDocument();
    		for(int i = 0 ; i<10 ; i++){//총 10 페이지가 만들어짐 
    			//create a blanck Page 
    			PDPage blanckPage = new PDPage();
    			
    			//Adding the blank page to the doucument;
    			document.addPage(blanckPage);
    		}
    		
    		//Saving the document 
    		try {
    			document.save("D:/EDOC_JAVA/Study/pdfprac/blanck.pdf");
    			System.out.println("PDF created");
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    				
    	}
    }
    

     

    기존의 PDF파일에 페이지를 추가 

    import java.io.File;
    import java.io.IOException;
    
    import org.apache.pdfbox.pdmodel.PDDocument;
    import org.apache.pdfbox.pdmodel.PDPage;
    import org.apache.pdfbox.pdmodel.encryption.InvalidPasswordException;
    
    public class LoadingExistingDocument {
    	public static void main(String[] args) {
    		
    		//Loading an exsiting document
    		File file = new File("D:"+File.separator+"DEV_DOC"+File.separator+"dev_book"+File.separator+"테스트주도개발ocr.pdf");
    		try {
    			PDDocument document = PDDocument.load(file);
    			System.out.println("PDF loaded");
    			
    			//adding a blank page to the document
    			document.addPage(new PDPage());
    			
    			//Saving the document
    			document.save("D:"+File.separator+"EDOC_JAVA"+File.separator+"Study"+File.separator+"pdfprac"+file.separator+"testadd.pdf");
    			
    			//close the document
    			document.close();
    		} catch (InvalidPasswordException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		
    		
    	}
    }
    

     

    페이지 삭제하기 

    import java.io.File;
    import java.io.IOException;
    
    import org.apache.pdfbox.pdmodel.PDDocument;
    import org.apache.pdfbox.pdmodel.encryption.InvalidPasswordException;
    import org.w3c.dom.css.DocumentCSS;
    
    public class Removing_pages {
    	public static void main(String[] args) throws InvalidPasswordException, IOException {
    		
    		//Loading an existing document 
    		File file = new File("D:"+File.separator+"EDOC_JAVA"+File.separator+"Study"+File.separator+"pdfprac"+File.separator+"testadd.pdf");
    		PDDocument document = PDDocument.load(file);
    		
    		//Listing the number of exsting page 
    		int noOfPages = document.getNumberOfPages();
    		System.out.println(noOfPages);
    		
    		//Removing the pages
    		document.removePage(2);//페이지는 0번 부터 시작 3번째 페이지가 삭제 된다. 
    		System.out.println("page removed");
    		
    		//Saving the document 
    		document.save("D:"+File.separator+"EDOC_JAVA"+File.separator+"Study"+File.separator+"pdfprac"+File.separator+"testadd2.pdf");
    		
    		//Closeing the document
    		document.close();
    		
    	}
    }
    

    PDF 문서에도 속성이 있다 . 
    이런 속성의 키와 값으로 이루어져 있다 . 


    PDF의 문서의 속성의 다음과 같다 . 

    File - 이 속성은 파일의 이름을 포함한다.

    Title - 이 속성을 사용하여 문서의 제목을 설정할수 있다.

    Author - 이 속성을 사용하여 문서 작성자의 이름을 설정할 수 있다. 

    Suject - 이 속성을 사용하여 PDF 문서의 제목을 지정할 수있다.

    Keywords - 이 속승ㄹ 사용하면 문서를검색 할 수있는 키워드를 나열 할 수있다.

    Created - 이 속성을 사용하면 생성된 날짜를 설정할 수 있다.

    Modified - 문서의 수정된 날짜를 설정할 수 있다.

    Application - 이 속성을 사용하여 문서의 응용 프로그램을 설정할 수 있다. 

     

     

    문서 속성 설정하기 

    setAuthor(String author)
    - PDF 문서 작성자 속성 값 설정에 사용

    setTitle(String title)
    - Title속성 설정에 사용

    setCreator(String creator)
    - Creator라는 PDF 문서의 속성값을 설정하는데 사용된다.
    setSubject(String subject)
    - Subject를 설정한다.
    setCreattionDate(Calendar date)
    - 이 메서드는 CreationDate 라는 PDF 문서의 속성 값을 설정하는 데 사용된다.
    setModificationDate(Calendar date)
    - ModificationDate 라는 PDF 문서의 속성 값을 설정하는 데 사용된다.
    setKeywords(String keywords list)
    - PDF 문서의 Keywords 속성 값을 설정하는 데 사용된다.

    import java.io.File;
    import java.io.IOException;
    import java.util.Calendar;
    import java.util.GregorianCalendar;
    
    import org.apache.pdfbox.pdmodel.PDDocument;
    import org.apache.pdfbox.pdmodel.PDDocumentInformation;
    import org.apache.pdfbox.pdmodel.PDPage;
    
    public class AddingDocumentAttributues {
    	public static void main(String[] args) throws IOException {
    		//Creating PDF document object 
    		PDDocument document = new PDDocument();
    		
    		//Creating a blank page 
    		PDPage blankPage = new PDPage();
    		
    		//Adding the blank page to the document;
    		document.addPage(blankPage);
    		
    		//Createing the PDDoucmentInfomation object
    		PDDocumentInformation pdd = document.getDocumentInformation();
    		
    		//Setting the author of the document 
    		pdd.setAuthor("Tutorialspoint");
    		
    		//Setting the title of the document 
    		pdd.setTitle("Sample document");
    		
    		//Setting the creator of the document
    		pdd.setSubject("Eample document");
    		
    		//Setting the created date of the document 
    		Calendar date = new GregorianCalendar();
    		date.set(2015, 11,5);
    		pdd.setCreationDate(date);
    		
    		//Settiong the modified date of the document
    		date.set(2099,6,5);
    		pdd.setModificationDate(date);
    		
    		//Setting keywords for the document 
    		pdd.setKeywords("sample,first example,my pdf");
    		
    		//Saving the document
    		document.save("D:"+File.separator+"EDOC_JAVA"+File.separator+"Study"+File.separator+"pdfprac"+File.separator+"testadd.pdf");
    		
    		System.out.println("Properties added successfully");
    		
    		//closing the document
    		document.close();
    		
    	}
    }
    

    문서 속성이 설정가능하다.

    가져오는 것도 가능

    import java.io.File;
    import java.io.IOException;
    
    import org.apache.pdfbox.pdmodel.PDDocument;
    import org.apache.pdfbox.pdmodel.PDDocumentInformation;
    import org.apache.pdfbox.pdmodel.encryption.InvalidPasswordException;
    
    public class RetrivingDoumentAttributes {
    	public static void main(String[] args) throws InvalidPasswordException, IOException {
    		 //Loading an existing document 
    	      File file = new File("D:"+File.separator+"EDOC_JAVA"+File.separator+"Study"+File.separator+"pdfprac"+File.separator+"testadd.pdf");
    	      PDDocument document = PDDocument.load(file);
    	      //Getting the PDDocumentInformation object
    	      PDDocumentInformation pdd = document.getDocumentInformation();
    
    	      //Retrieving the info of a PDF document
    	      System.out.println("Author of the document is :"+ pdd.getAuthor());
    	      System.out.println("Title of the document is :"+ pdd.getTitle());
    	      System.out.println("Subject of the document is :"+ pdd.getSubject());
    
    	      System.out.println("Creator of the document is :"+ pdd.getCreator());
    	      System.out.println("Creation date of the document is :"+ pdd.getCreationDate());
    	      System.out.println("Modification date of the document is :"+ 
    	         pdd.getModificationDate()); 
    	      System.out.println("Keywords of the document are :"+ pdd.getKeywords()); 
    	       
    	      //Closing the document 
    	      document.close();        
    	}
    }
    

     

    PDF에 텍스트 추가 

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    
    import org.apache.pdfbox.pdmodel.PDDocument;
    import org.apache.pdfbox.pdmodel.PDPage;
    import org.apache.pdfbox.pdmodel.PDPageContentStream;
    import org.apache.pdfbox.pdmodel.encryption.InvalidPasswordException;
    import org.apache.pdfbox.pdmodel.font.PDType0Font;
    import org.apache.pdfbox.pdmodel.font.PDType1CFont;
    import org.apache.pdfbox.pdmodel.font.PDType1Font;
    
    public class AddingContent {
    	public static void main(String[] args) throws InvalidPasswordException, IOException {
    		//Loding an Exsiting document 
    		File file = new File("D:"+File.separator+"EDOC_JAVA"+File.separator+"Study"+File.separator+"pdfprac"+File.separator+"testadd.pdf");
    		PDDocument document = PDDocument.load(file);
    		
    		//Retrieving the pages of the document
    		PDPage page = document.getPage(0);
    		PDPageContentStream contentStream = new PDPageContentStream(document, page);
    		
    		//Begin the Content Stream 
    		contentStream.beginText();
    		
    		//Setiing the font to the Content stream 
    		/*contentStream.setFont(PDType1Font.TIMES_ROMAN, 12);*/
    		//한글 폰트는 별도로 다운로드 받아서 사용 
    		InputStream in  = new FileInputStream("D:/EDOC_JAVA/Study/pdfprac/NanumFont_TTF_ALL/NanumMyeongjo.ttf");
    		PDType0Font korfont = PDType0Font.load(document, in);
    		contentStream.setFont(korfont, 25);
    		
    		//Setting the postion for the line 
    		contentStream.newLineAtOffset(25, 500);
    		
    		String text  = "인증서 진본 확인 ";
    		
    		//String text = "addtext";
    		
    		//Adding text in the form of string 
    		contentStream.showText(text);
    		
    		//Ending the content stream
    		contentStream.endText();
    		
    		System.out.println("Content added");
    		
    		//Closing the content stream
    		contentStream.close();
    		
    		//Saving the document 
    		document.save("D:/EDOC_JAVA/Study/pdfprac/testadd.pdf");
    	}
    }
    

     

    여러줄 입력은 다음과 같다 .

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    
    import org.apache.pdfbox.pdmodel.PDDocument;
    import org.apache.pdfbox.pdmodel.PDPage;
    import org.apache.pdfbox.pdmodel.PDPageContentStream;
    import org.apache.pdfbox.pdmodel.encryption.InvalidPasswordException;
    import org.apache.pdfbox.pdmodel.font.PDType0Font;
    
    public class AddingMutipleLine {
    	public static void main(String[] args) throws InvalidPasswordException, IOException {
    		File file = new File("D:/EDOC_JAVA/Study/pdfprac/testadd.pdf");
    		PDDocument doc = PDDocument.load(file);
    		PDPage page = doc.getPage(0);
    		PDPageContentStream contentStream = new PDPageContentStream(doc, page);
    		contentStream.beginText();//텍스트입력을 시작하겠다는 의미
    		
    		//Setting position for the line
    		contentStream.newLineAtOffset(25, 700);
    		
    		//글꼴 설정
    		InputStream in  = new FileInputStream("D:/EDOC_JAVA/Study/pdfprac/NanumFont_TTF_ALL/NanumMyeongjo.ttf");
    		PDType0Font korfont = PDType0Font.load(doc, in);
    		contentStream.setFont(korfont, 25);
    		
    		//택스트 행간 설정 
    		contentStream.setLeading(24.5f);
    		
    		//문자열 삽입 
    		contentStream.showText("여러 줄 입력을 ");
    		contentStream.newLine();
    		contentStream.showText("시도 합니다 .");
    		
    		//텍스트 끝내기 
    		contentStream.endText();
    		
    		System.out.println("Content added");
    		
    		//PDPageContentStream 닫기
    		contentStream.close();
    		doc.save("D:/EDOC_JAVA/Study/pdfprac/testadd.pdf");
    		
    		//문서닫기
    		doc.close();
    	}
    }
    

     

    PDF에 텍스트 읽기 

    import java.io.File;
    import java.io.IOException;
    
    import org.apache.pdfbox.pdmodel.PDDocument;
    import org.apache.pdfbox.text.PDFTextStripper;
    
    public class ReadingText {
    	public static void main(String[] args) throws IOException {
    		//Loading an exisiting document 기존 PDF문서 로드
    		File file = new File("D:/EDOC_JAVA/Study/pdfprac/testadd2.pdf");
    		PDDocument doc = PDDocument.load(file);
    		
    		//PDFextStripper 클래스 인스턴스 생성
    		PDFTextStripper pdfTextStripper = new PDFTextStripper();
    		
    		//텍스트 검색
    		String text = pdfTextStripper.getText(doc);
    		System.out.println(text);
    		doc.close();
    		
    	}
    }
    

     

    PDF에 이미지 삽입하기 

    import java.io.File;
    import java.io.IOException;
    
    import org.apache.pdfbox.pdmodel.PDDocument;
    import org.apache.pdfbox.pdmodel.PDPage;
    import org.apache.pdfbox.pdmodel.PDPageContentStream;
    import org.apache.pdfbox.pdmodel.encryption.InvalidPasswordException;
    import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
    
    public class InsertingImage {
    	public static void main(String[] args) throws InvalidPasswordException, IOException {
    		
    		File file  = new File ("D:/EDOC_JAVA/Study/pdfprac/testadd.pdf");
    		PDDocument doc = PDDocument.load(file);
    		
    		//페이지 가져오기 
    		PDPage page = doc.getPage(0);
    		
    		//PDImageXObject 객체 만들기 
    		PDImageXObject pdImage = PDImageXObject.createFromFile("D:/EDOC_JAVA/Study/pdfprac/한국전자인증_TSA.png", doc);
    		
    		//콘텐츠 스트림 준비 
    		PDPageContentStream contentStream = new PDPageContentStream(doc, page);
    		
    		//PDF 문서에 이미지 그리기 
    		contentStream.drawImage(pdImage,0,0);
    		
    		//PDPageContentStream 닫기 
    		contentStream.close();
    		
    		//문서 저장
    		doc.save("D:/EDOC_JAVA/Study/pdfprac/test_signed.pdf");
    		
    		//문서 닫기 
    		doc.close();
    		
    	}
    }
    

     

    그림 추가하기 

    import java.awt.Color;
    import java.io.File;
    
    import org.apache.pdfbox.pdmodel.PDDocument;
    import org.apache.pdfbox.pdmodel.PDPage;
    import org.apache.pdfbox.pdmodel.PDPageContentStream;
    
    public class ShowColorBoxes {
    	public static void main(String args[]) throws Exception {
    
    	      //Loading an existing document
    		File file  = new File ("D:/EDOC_JAVA/Study/pdfprac/testadd.pdf");
    	      PDDocument document = PDDocument.load(file);
    	        
    	      //Retrieving a page of the PDF Document
    	      PDPage page = document.getPage(0);
    
    	      //Instantiating the PDPageContentStream class
    	      PDPageContentStream contentStream = new PDPageContentStream(document, page);
    	       
    	      //Setting the non stroking color
    	      contentStream.setNonStrokingColor(Color.DARK_GRAY);
    
    	      //Drawing a rectangle 
    	      contentStream.addRect(200, 650, 100, 100);
    
    	      //Drawing a rectangle
    	      contentStream.fill();
    
    	      System.out.println("rectangle added");
    
    	      //Closing the ContentStream object
    	      contentStream.close();
    
    	      //Saving the document
    	      File file1 = new File("C:/PdfBox_Examples/colorbox.pdf");
    	      document.save(file1);
    
    	      //Closing the document
    	      document.close();
    	   }
    }
    
Designed by Tistory.