ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [chatGPT] chatGPT를 이용한 pdf 워터마크 씌우기
    개발공부/ETC 2023. 2. 9. 23:10

    chatGPT가 장안의 화제이다

    마침 내부적으로 pdf 기능 테스트를 해야할 일이 있어 이참에 한번 경험해 볼 겸 구글링 대신 chatGPT에게 물어봐서 테스트를 해보았다

    구현하는 방법 뿐만 아니라 코드를 어떻게 짜야하는지 물어보니 코드까지 작성해주는 수준이라니..

    실행시키면 정상동작하는걸 보니 AI 기술이 정말 많이 발전했음을 느끼고 있다

    #01. pom.xml에 필요한 라이브러리 추가

    		<!-- pdf watermark -->
    		<dependency>
    			<groupId>com.itextpdf</groupId>
    			<artifactId>itextpdf</artifactId>
    			<version>5.5.13.1</version>
    		</dependency>

    #02. 테스트 코드

    import java.io.FileOutputStream;
    import java.io.IOException;
    
    import com.itextpdf.text.BaseColor;
    import com.itextpdf.text.DocumentException;
    import com.itextpdf.text.Font;
    import com.itextpdf.text.pdf.*;
    
    public class pdftest {
    
        public static void main(String[] args) {
    
            String dataDir = "파일경로";
    
            try {
    
                // PDF 문서 읽어들이기
                PdfReader reader = new PdfReader(dataDir + "inputTmp.pdf");
                int n = reader.getNumberOfPages();
    
                // PDF 문서 새로 생성하기
                PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dataDir + "output.pdf"));
    
                // 글꼴 설정
                BaseFont baseFont = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, true);
    
                //GrayColor의 생성자에서 0f~1f 사이의 값을 전달할 수 있으며, 0f는 투명하게, 1f는 불투명하게 렌더링
                Font font = new Font(baseFont, 12, Font.NORMAL, BaseColor.GRAY);
    
                //색상 흐리게
                PdfGState gstate = new PdfGState();
                gstate.setFillOpacity(0.3f);
    
    
                // Watermark 생성
                PdfContentByte watermark;
    
                for (int i = 1; i <= n; i++) {
                    watermark = stamper.getOverContent(i);
                    watermark.saveState();
                    watermark.setGState(gstate);
                    watermark.beginText();
                    watermark.setFontAndSize(font.getBaseFont(), 42);
                    watermark.showTextAligned(PdfContentByte.ALIGN_CENTER, "WATERMARK TEST", 297, 230, 45);
                    watermark.endText();
                    watermark.restoreState();
                }
    
                stamper.close();
                reader.close();
    
            } catch (IOException | DocumentException e) {
                e.printStackTrace();
            }
        }
    }

    #03. 결과

    원본 pdf
    워터마크 적용 pdf

     

    '개발공부 > ETC' 카테고리의 다른 글

    .NET 프로젝트 실행하기  (0) 2022.12.12
Designed by Tistory.