PDFRenderer는 pdf파일을 page단위로 java.awt.Image 개체로 만듭니다.

package com.pdfImg.pdfTest;

import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import javax.imageio.ImageIO;
import com.sun.pdfview.PDFFile;
import com.sun.pdfview.PDFPage;

public class PdfImage {
	public static void main(String args[]) throws IOException{
    
    	//load a pdf from a byte buffer
        File file = new File("c:\\User\\test.pdf");
        RandomAccessFile raf = new RandomAccessFile(file, "r");
        FileChannel channel = raf.getChannel();
        ByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size());
        PDFFile pdffile = new PDFFile(buf);
        
        // draw the first page to an image
        PDFPage page = pdffile.getPage(2);
        
        //get the width and height for the doc at the default zoom 
        Rectangle rect = new Rectangle(0,0,(int)page.getBBox().getWidth(),(int)page.getBBox().getHeight());
        
        //generate the image
        Image image = page.getImage(
        	rect.width, rect.height, //width & height
                rect, // clip rect
                null, // null for the ImageObserver
                true, // fill background with white
                true  // block until drawing is done
		);
        
        int w = image.getWidth(null);
        int h = image.getHeight(null);
        BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
        Graphics2D g2 = bi.createGraphics();
        g2.drawImage(image, 0, 0, null);
        g2.dispose();
        
        try{
        	ImageIO.write(bi, "jpg", new File("c:\\User\\imagePdfTest.jpg"));
        }catch(IOException ioe){
        	System.out.println("write: " + ioe.getMessage());
        }
	}        
}

---------------- 간략한 소스 설명 ----------------
// draw the first page to an image
PDFPage page = pdffile.getPage(2);

위의 코드가 pdf의 특정 page를 선택하는 부분입니다. 2페이지를 선택했습니다.

pdffile.getNumPages();
위의 코드로 pdf파일의 총 페이지 수를 알 수 있습니다.

총 페이지 수로 for문을 돌리면 모든 페이지를 이미지로 만들 수 있을 것 입니다.

'JAVA' 카테고리의 다른 글

[JAVA] RequestContextListene request 반환  (0) 2022.05.24
[JAVA] replaceAll 정규식  (0) 2022.05.23
[JAVA] PathVariable  (0) 2022.05.23
[JAVA] Object Array  (0) 2022.05.23
[JAVA] 휴일 알아내기  (0) 2021.06.25
블로그 이미지

마크제이콥스

초보 개발자의 이슈및 공부 내용 정리 블로그 입니다.

,

[JAVA] PathVariable

JAVA 2022. 5. 23. 15:36
@RequestMapping("/{siteTp}/test/selectTestList.do")
public String selectTestList(HttpServletResponse response,HttpServletRequest request,
@PathVariable("siteTp") String siteTp,ModelMap model) throws Exception{

tmpPage = "/"+siteTp+"/test/testList";

// @PathVariable 을 이용하여 REST 방식의 url을 적용

//Rest 방식으로 url을 지정할 경우에

//게시판의 경우 http://~/board/[관리자ID]/[게시물ID] 호출하면 내용을 볼 수 있도록 될 것입니다.

//컨텐츠 관리의 경우 http://~/contents/[컨텐츠ID] 호출하면 내용을 볼 수 있도록 될 것입니다.

수정된 소스 부분

1. spring-context.xml 추가

<!-- 어노테이션 스캔 설정-->
<context:component-scan base-package="*" />

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" p:alwaysUseFullPath="true" />

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" p:alwaysUseFullPath="true" />

2. springmvc-context.xml

// 인터셉터 추가

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
	<property name="alwaysUseFullPath" value="true" />
	<property name="interceptors">
		<list>
			<ref bean="localeChangeInterceptor" />
		</list>
	</property>
</bean>
 
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" >
	<property name="alwaysUseFullPath" value="true" />
</bean> 

3. web.xml 추가

<filter-mapping>
	<filter-name>authenticationFilter</filter-name>
    <url-pattern>*.do</url-pattern>
    <url-pattern>*.jsp</url-pattern>
    <url-pattern>/board/*</url-pattern>
</filter-mapping>

<!-- 스프링 mvc 적용 URL -->
<servlet-mapping>
	<servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
    <url-pattern>*.static</url-pattern>
    <url-pattern>/board/*</url-pattern>
</servlet-mapping>

4. @Controller (kr.test.you.board.web.BoardCtrl) 함수

@RequestMapping(value = "/board/view/{manageIdx}/{boardIdx}")
public ModelAndView boardView1(@PathVariable("manageIdx") String manageIdx, @PathVariable("boardIdx") String boardIdx, ModelMap model) throws Exception {

	Map<String, Object> resultMap = new HashMap<String, Object>();

    resultMap.put("boardIdx", boardIdx);

	resultMap.put("manageIdx", manageIdx);
    
    String resultURL = "board/view";
    
    return new ModelAndView(resultURL, "resultMap", resultMap);
}
블로그 이미지

마크제이콥스

초보 개발자의 이슈및 공부 내용 정리 블로그 입니다.

,

[JAVA] Object Array

JAVA 2022. 5. 23. 14:21
Object params[] = {
	StringUtils.nvl(parameters.print("cc_yn"), "n"),
    StringUtils.nvl(parameters.print("aveeno_yn"), "n"),
    StringUtils.nvl(parameters.print("johnsons_yn"), "n"),

    StringUtils.nvl(parameters.print("listerine_yn"), "n"),
    StringUtils.nvl(parameters.print("nizoral_yn"), "n"),
    StringUtils.nvl(parameters.print("rogaine_yn"), "n"),
    StringUtils.nvl(parameters.print("bandaid_yn"), "n"),

    StringUtils.nvl(parameters.print("nicorette_yn"), "n"),
    StringUtils.nvl(parameters.print("neutrogena_yn"), "n"),

    sessionEntity.print("id")
};
블로그 이미지

마크제이콥스

초보 개발자의 이슈및 공부 내용 정리 블로그 입니다.

,