0. 스탬프 모드 (Stamp Mode)
종이에 도장(Stamp)을 찍 듯이, 기존의 PDF 파일 위에 새로운 데이터를 덧쓴다는 의미에서 스탬프 모드라고 한다.
1. 의존 라이브러리 추가
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>kernel</artifactId>
<version>7.1.18</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>layout</artifactId>
<version>7.1.18</version>
</dependency>
2. 코드 작성
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import org.springframework.stereotype.Service;
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
@Service("pdfService")
public class PDFService {
private static final String FONT = "C:\\Windows\\Fonts\\malgun.ttf"; // 사용 폰트
public void writePdf(String content) throws IOException {
FileInputStream fis = new FileInputStream(new File("작성할 기존 PDF 파일 경로"));
FileOutputStream fos = new FileOutputStream(new File("작성된 PDF 파일 출력 경로"));
// new PdfDocument(InputStream, OutputStream) -> 스탬프 모드
PdfDocument pdf = new PdfDocument(new PdfReader(fis), new PdfWriter(fos));
Document document = new Document(pdf);
// 작성할 내용을 Paragraph에 제공
Paragraph p = new Paragraph(content);
// x축, y축, 단락 너비
p.setFixedPosition(100, 100, 150);
// 폰트 설정
PdfFont font = PdfFontFactory.createFont(FONT, "Identity-H");
p.setFont(font);
document.add(p);
document.close();
}
}
'웹 개발 > 웹 개발' 카테고리의 다른 글
| 혼합 데이터 타입의 JSON 데이터 받기 (0) | 2023.03.07 |
|---|---|
| sweetalert 2 사용하기 (0) | 2023.02.09 |
| Naver NCloud Platform - SMS 서비스 (0) | 2023.02.06 |
| 중첩된 자바빈을 위한 폼 작성 (0) | 2023.02.06 |
| Mybatis - Mapper 인터페이스 (0) | 2023.02.06 |