상세 컨텐츠

본문 제목

JPG 파일을 PDF 파일로 변환하기

MS Batch

by techbard 2022. 2. 5. 12:33

본문

반응형

일하느라 필요가 있어 여러 JPG 파일의 썸네일을 만들 필요가 있어 고민을 해보았다.

 

다수의 방법이 존재할 수 있는데

 

  1. JPG 파일을 합쳐 하나의 거대한 JPG 파일을 생성한다.
  2. index.html 파일을 생성해 웹 브라우저에서 JPG 파일의 썸네일을 본다.
  3. JPG 파일을 합쳐 PDF 파일을 생성한다.

이 중에서 jpg 파일의 href= 에 등록해 index.html을 웹 브라우저에서 읽는 방식은 이미 구현해서 쓰고 있으므로 JPG 파일에서 PDF 파일을 생성하는 방법을 찾아 보았다.

 

역시 구글링을 하면 이와 유사한 기능을 수행하는 다양한 소프트웨어가 존재하는데 업무적으로 사용해야 하고 CLI (Command Line Interface)를 지원하는 방식을 고려하면 다음의 오픈 소스 소프트웨어가 적합했다.

 

https://sourceforge.net/projects/jpeg2pdf/

 

jpeg2pdf

Download jpeg2pdf for free. Create PDF from JPEG scans and photos. Cross-platform command-line tool for creation of PDF documents from scans/photos of pages in JPEG (.jpg) format and the lightest weight ANSI C library to put multiple JPEG files into one PD

sourceforge.net

다운로드 받아 테스트를 해 본 결과 한 가지 문제가 발견되었다.

 

Usage: jpeg2pdf.exe [options] filemask-1 ... [filemask-N]

 

위의 방식으로 옵션을 주어 PDF 파일을 생성하게 되는데 생성된 PDF 파일을 열어 보니 입력 파일을 받는대로 PDF 파일 내의 페이지 순서를 정해준다. 즉 입력 값으로 *.jpg 와 같은 와일드 카드를 주는 경우에는 각 jpg 파일의 이름의 알파벳 순서 정렬로 입력이 정해진다.

 

※ 결국 JPG 파일의 생성 일자 순으로 PDF 페이지 순서가 정해지기를 바랬지만 그냥 JPG 파일 이름의 알파벳 순으로 페이지가 생성되므로 나의 필요에 맞지 않았다.

 

다시 jpg 파일을 개별 입력하는 경우 순서가 지켜지는 PDF 페이지가 생성되는지 테스트 해보았다.

 

jpeg2pdf -o output.pdf "jpg1" "jpg2"

 

결과는 jpg1, jpg2 순서대로 PDF 페이지가 생성된다.

 

※ 따라서 jpg 파일의 입력을 와일드 카드로 하지 말고 생성일자 순으로 파일 이름을 공백을 구분자로 해서 넣어 주면 된다는 결론에 도달했다.

 

이제는 생성일자 순으로 한 줄로 된 파일이름 스트링을 어떻게 만드느냐만 고민하면 되는데 배치 파일에서 이런 문자열 처리를 하는 것이 관건이다.

 

구글링을 해보니 다음의 코드 조각을 찾았다.

https://superuser.com/questions/1204347/combine-all-the-lines-of-a-text-file-into-a-single-line-via-the-windows-command

 

Combine all the lines of a text file into a single line via the Windows Command line

I wrote a command line script that makes a list of files I want to do things to such as compress, delete or email. The list would be in the following format: 7z-Compression-List.txt: =============...

superuser.com

이 소스를 참고해 파일 이름이 라인 단위로 입력된 텍스트 파일을 던지면 한 줄로 만들어 변수에 넣는 코드를 작성했다.

set "file-list="
for /f "delims=" %%F in (jpglist.txt) do (
	call set file-list=%%file-list%% "%%~nxF"
)
set file-list=%file-list:~1%

그러면 jpglist.txt는 어떻게 생성할까? 다음의 라인으로 가능하다.

dir /od /b /a:-d *.jpg > jpglist.txt

※ 결론적으로 CLI 프로그램으로 다수의 jpg 파일을 읽어 pdf 파일로 생성하는 작업을 완료했다. 작업의 결과인 jpg 파일은 생성 순서를 가지고 있으며 그 생성 순서가 의미가 있는 정보이므로 이 생성일 정렬 순서를 유지할 필요가 있었다. 따라서 이 생성 순서로 페이지 연번을 가지는 pdf 파일을 생성해 정보를 유지했다. 따라서 해당 작업 시점의 jpg 파일로 pdf 파일을 만들어 저장해 두면 하나의 파일로 그 작업 결과 전체를 저장할 수 있으며 이후 생성하는 pdf 파일과 비교해 작업의 성공 유무를 판단할 수 있게 되었다.

반응형

관련글 더보기

댓글 영역