Java 3

PDFBox 실무 적용기 - 좌표계 꼬임 문제와 래퍼 설계

들어가며외부에서 전달받은 PDF 문서에 텍스트나 이미지를 추가로 삽입해야 하는 업무가 있었고 이를 처리하기 위해 PDFBox를 사용해 구현을 시작했습니다.처음에는 단순히 newLineAtOffset(x, y)로 좌표를 이동하고 showText()로 텍스트를 출력하는 방식으로 접근했습니다.하지만 실제로는 다양한 툴에서 생성된 PDF 문서를 다루게 되었고, 각 툴마다 내부 좌표계(CTM, Current Transformation Matrix)가 조금씩 달랐습니다. 일부 문서는 좌표계가 회전된 상태로 저장되어 있기도 했습니다.그래서 제가 의도한 위치가 아닌 전혀 다른 곳에 텍스트나 이미지가 삽입되는 문제가 발생했습니다.이번 글에서는 이 문제를 어떻게 마주했고, 어떤 방식으로 해결했는지를 정리해 보려고 합니다...

Java 2025.08.24

[Java] Stream 생성하는 방법들

들어가면서오늘은 Stream 생성하는 방법에 대해서 정리하겠습니다.1. 컬렉션(List, Set등)으로 스트림 생성2. 배열로 스트림 생성3. Stream.of, Stream.ofNullable(java 9)로 스트림 생성4. 무한 스트림(iterate)으로 스트림 생성5. 무한 스트림(generate)으로 스트림 생성6. 스트림 빌더로 스트림 생성7. 빈스트림으로 스트림 생성8. Stream 연결로 스트림 생성9. 기본형 특화 스트림(Int, Long, Double)으로 스트림 생성컬렉션(List, Set등)으로 스트림 생성List, Set등 Collection을 상속받은 객체에서 사용할 수 있는 방법입니다.// Collection 인터페이스에 정의됨default Stream stream() { ..

Java 2025.05.06

java Optional 문법 정리

Optional 문법은 java 개발자의 NullPointerException을 방지 해주기 위한 문법입니다.Optional 문법에 대해서 알아보겠습니다.Optional 생성 (of, ofNullable, empty)Optional.of는 값이 있는 상태에서 Optional을 객체로 감싸기 위해 사용됩니다.만약 값이 null인 경우 NullPointExcetion을 발생합니다.Optional value = Optional.of("value");Optional nullValue = Optional.of(null); // NullPointExcetion 발생Optional.ofNullable은 값이 null인 경우도 있을 경우 사용할 수 있습니다.Optional value = Optional.ofNullab..

Java 2025.03.01