Microsoft 社는 2022년 6월 15일 Internet Explorer 11의 지원을 종료했습니다.

Ghostscript로 PDF 파일 다루기

제목

Ghostscript로 PDF 파일 다루기

Windows 에서는 gswin32.exe 일 것으로 생각된다.

1. PDF 파일에서 일부 페이지만 추출하여 새로운 PDF 파일 만들기

gs  -dNOPAUSE -dBATCH -sOutputFile="output.pdf" -dFirstPage=3 -dLastPage=4 -sDEVICE=pdfwrite "input.pdf"
  • 입력파일 : input.pdf
  • 출력파일 : output.pdf (-sOutputFile="output.pdf")
  • 시작페이지 : 3 (-dFirstPage=3)
  • 마지막페이지 : 4 (-dLastPage=4)

2. 여러개의 PDF 파일을 1개의 PDF 파일로 만들기(PDF 합치기)

gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE="output.pdf" -dBATCH input-001.pdf input-002.pdf input-003.pdf input-004.pdf input-005.pdf
  • 입력파일 : input-001.pdf ~ input-005.pdf
  • 출력파일 : output.pdf (-sOUTPUTFILE="output.pdf")

3. 여러개의 JPEG 파일을 1개의 PDF 파일로 만들기

gs -dBATCH -dNOPAUSE -sPAPERSIZE=a4 -sDEVICE=pdfwrite -o output.pdf viewjpeg.ps \
-c "(input-001.jpg) viewJPEG showpage \
(input-002.jpg) viewJPEG showpage \
(input-003.jpg) viewJPEG showpage \
(input-004.jpg) viewJPEG showpage \
(input-005.jpg) viewJPEG showpage"
  • 입력파일 : input-001.jpg ~ input-005.jpg
  • 출력파일 : output.pdf (-o output.pdf)

-sPAPERSIZE= 의 기본 값은 "letter" 이므로 대한민국에서 많이 사용되는 "a4" 로 한다.

Paper sizes known to Ghostscript 를 참조한다.

PAPERSIZE 대신 넓이와 높이를 지정할 수도 있다.

-dDEVICEWIDTHPOINTS=595 -dDEVICEHEIGHTPOINTS=842

넓이와 높이의 단위는 "Points" 인데, "Points" = 인치 * 72 이므로, mm 를 "Points" 로 환산하는 것은 Math.round((mm값 / 25.4) * 72) 이 된다.

4. PDF 파일을 흑백(Gray Scale)으로 변경하기

gs \
-dNOPAUSE \
-dBATCH \
-sOutputFile="output.pdf" \
-dProcessColorModel=/DeviceGray \
-dColorConversionStrategy=/Gray \
-sDEVICE=pdfwrite \
"input.pdf" \
  • 입력파일 : input.pdf
  • 출력파일 : output.pdf (-sOutputFile="output.pdf")

5. PDF 파일을 여러개의 JPEG 파일로 변환하기

gs -dBATCH -dNOPAUSE -sDEVICE=jpeg -sOutputFile=output-%03d.jpg -r300x300 -f input.pdf
  • 입력파일 : input.pdf (-f input.pdf)
  • 출력파일 : input-001.jpg ~ input-00X.jpg (-sOutputFile=output-%03d.jpg)

6. 관련 명령어

6.1. gdal로 tiff를 pdf로 변환

gdal_translate -of pdf input.tif output.pdf

6.2. ImageMagick 으로 (여러개의) tiff를 pdf로 변환

convert -limit memory 0 -limit map 0 *.tif -compress jpeg -quality 100 output.pdf

7. Apache PDFBox 를 이용해서 pdf 파일 다루기

시스템에 java 가 설치되어 있다면, Apache PDFBox® 에서 pdfbox-app-3.0.6.jar 파일을 다운로드 한다.

PDFBox 는 gui 는 아니지만, Command-Line Tools 을 제공한다.

PDF 파일 병합은 다음과 같다.

java -jar pdfbox-app-3.0.6.jar merge -o="d:\output.pdf" -i="d:\input_001.pdf" -i="d:\input_002.pdf"

d:\input_001.pdfd:\input_002.pdf 파일을 합쳐서 d:\output.pdf 파일을 만든다.

PDF 파일에서 일부 페이지만 떼어내서 새로운 PDF 를 만드는 것은 다음과 같다.

java -jar pdfbox-app-3.0.6.jar split --input="d:\input.pdf"  -outputPrefix="d:\input" -startPage=3 -endPage=4

결과파일은 d:\input-001.pdf 가 된다.

추가적인 사용법은 다음을 참조한다.

https://pdfbox.apache.org/3.0/commandline.html

cmd 나 powershell 같은 cli 환경에서 사용하는 것이 다소간의 불편함이 있을 수 있지만, 배치 파일로 만들어서 사용하면 그럭저럭 쓸만하다.

Windows 에서 .js 배치 파일로 만든다면, 메모장에서는 ANSI, jEdit 에서는 EUC-KR 로 저장한다.

Windows 에서 js 파일을 이용한 PDF 병합의 예는 다음과 같다.

var folder = "D:\\";
var outputFile = "output.pdf";
var inputFiles = new Array();
inputFiles.push("input_001.pdf");
inputFiles.push("input_001.pdf");
inputFiles.push("input_003.pdf");
var command = "java";
var args = " -jar pdfbox-app-3.0.6.jar";
args += " merge";
args += " -o=\"" + folder + outputFile + "\"";
for(var i = 0; i < inputFiles.length; i++) {
args += " -i=\"" + folder + inputFiles[i] + "\"";
}
var wsh = new ActiveXObject("WScript.Shell");
wsh.Run(command + " " + args);
제목

첨부파일