728x90
반응형
PDF 파일 생성 및 저장 관련 기능은 1편 참고 PDF 수정1 - 파일 생성 및 저장 https://kimji0139.tistory.com/85 PDF 수정2 - 양식 필드 https://kimji0139.tistory.com/88 |
1. 글자 삽입 방법1
PDTextField textField = (PDTextField) field;
// Helv는 영어만 지원
String font = "/Helv "+ fontsize + " Tf 0 0 1 rg";
textField.setDefaultAppearance(font);
textField.setValue(text);
2. 글자 삽입 방법2
resources/resources/fonts 경로 내에 폰트가 있어야 함
네이버 나눔고딕폰트를 사용하였음
PDPageContentStream contentStream = new PDPageContentStream(document, page, PDPageContentStream.AppendMode.PREPEND, true, true);
contentStream.beginText();
PDFont font = PDType0Font.load(document, new ClassPathResource("resources/fonts/NanumGothic.ttf").getFile());
contentStream.setFont(font, fontsize);
contentStream.newLineAtOffset(x, y);
contentStream.showText(text);
contentStream.endText();
contentStream.close();
3. 이미지 삽입
PDPageContentStream contentStream = new PDPageContentStream(this.document, page, PDPageContentStream.AppendMode.PREPEND, true, true);
contentStream.drawImage(imageXObject, x, y, imgW, imgH);
contentStream.close();
이때 이미지는 PDImageXObject 타입을 사용하기 때문에 이미지 타입을 형변환 해야한다.
4. Base64 이미지 PDImageXObject 타입으로 변경
byte[] base64ToBytes = Base64Utils.decodeBase64ToBytes(base64);
return PDImageXObject.createFromByteArray(document, base64ToBytes, name);
public class Base64Utils {
public Base64Utils() {
}
public static byte[] decodeBase64ToBytes(String imageString) {
if (imageString.startsWith("data:image/png;base64,")) {
return Base64.getDecoder().decode(imageString.substring("data:image/png;base64,".length()));
} else {
throw new IllegalStateException("it is not base 64 string");
}
}
}
728x90
반응형
'Web 개발 > Java, SpringBoot, JPA' 카테고리의 다른 글
[JPA] 변경 사항 추적 기능 구현 - Envers (0) | 2022.05.30 |
---|---|
[jquery] Form submission canceled because the form is not connected (0) | 2022.04.20 |
[SPRING/JAVA] Apache Pdfbox를 이용한 PDF 수정2 - 양식 (0) | 2022.04.05 |
[JPA] The type of the containing value was : extended_has+string 오류 (0) | 2022.03.22 |
[SPRING/JAVA] Apache Pdfbox를 이용한 PDF 생성, 저장, 병합, 비밀번호 설정, 다운로드 (0) | 2022.03.18 |