본문 바로가기
Etc./Coding

PDF Unlock & Compressoion Batch Script (using ghostscript)

by 장 아제베도 2023. 1. 30.
반응형

개요

고스트스크립트와 배치파일을 이용하여 PDF 파일의 암호 잠금 해제와 압축등을 수행한다. 이를 위해서 고스트스크립트 사이트에서 프로그램을 다운받아 설치하여야 한다.

PDF 파일의 암호 잠금 해제는 아래 github에 올라와 있는 batch script가 실행이 안되어 일부 수정하였고, PDF 압축은 이를 응용하여 ghostscript 명령 부분만 수정하였다.

 

https://github.com/veerman/pdf-unlock/blob/master/unlock_pdf.bat

 

GitHub - veerman/pdf-unlock: PDF Unlock

PDF Unlock. Contribute to veerman/pdf-unlock development by creating an account on GitHub.

github.com

 

https://www.ghostscript.com/releases/gsdnld.html

 

Ghostscript : Downloads

 

www.ghostscript.com

 

고스트스크립트(Ghostscript)

https://ko.wikipedia.org/wiki/%EA%B3%A0%EC%8A%A4%ED%8A%B8%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8

 

고스트스크립트 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. -->

ko.wikipedia.org

고스트스크립트(Ghostscript)는 어도비(Adobe Systems)의 포스트스크립트 PostScript) 및 PDF (Portable Document Format)  페이지 기술 언어에 대한 인터프리터를 기반으로 한 소프트웨어이다. 주요 목적은 포스트스크립트(PostScript)와 PDF 파일에서 변환 및 완전한 호환을 가능하게 하는 페이지 기술 언어, 파일의 래스터화 또는 렌더링, 문서 페이지의 표시 또는 인쇄이다.
공개버전과 상용버전의 이중라이센스를 갖는 고스트스크립트는 고스트스크립트 공개소스를 사용할때에는 그 소프트웨어 프로그램 역시 공개소스로 배포되어야 한다. 한편 상용버전을 일정비용의 로열티를 고스트스크립트에 지불하고 사용한다면 그 소프트웨어 프로그램은 공개소스로 배포될 필요는 없게된다.

 

PDF 잠금해제 (Unlock)

@echo off
rem Windows Batch Script created by Steve Veerman

set /p locked_pdf_path="PDF File (use full path eg. C:\Users\You\Desktop\locked.pdf): "
echo.
rem echo %locked_pdf_path%

if not exist %locked_pdf_path% (
	echo PDF File not found. Please try again.
	goto done
)

call set unlocked_pdf_path=%%locked_pdf_path:.pdf=.unlocked.pdf%%
echo Saving %unlocked_pdf_path%

set gs_exec="gswin*c.exe"

set gs_path_x64=
for /f "delims=" %%a in ('where /R "c:\Program Files" %gs_exec%') do @set gs_path_x64=%%a
rem echo x64 path="%gs_path_x64%"

if not ["%gs_path_x64%"] == [""] (
	rem echo is x64
	set gs_path=%gs_path_x64%
	goto run_gs
)

set gs_path_x86=
for /f "delims=" %%a in ('where /R "c:\Program Files (x86)" %gs_exec%') do @set gs_path_x86=%%a
rem echo x86 path="%gs_path_x86%"

if not ["%gs_path_x86%"] == [""] (
	rem echo is x86
	set gs_path=%gs_path_x86%
	goto run_gs
)

echo %gs_exec% not found. Please install Ghostscript.
goto done

:run_gs
rem gswin64c.exe -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite  -sFONTPATH=%windir%/fonts;xfonts;. -sPDFPassword= -dPDFSETTINGS=/prepress -dPassThroughJPEGImages=true -sOutputFile=%unlocked_pdf_path%  %locked_pdf_path%
"%gs_path%" -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite  -sFONTPATH=%windir%/fonts;xfonts;. -sPDFPassword= -dPDFSETTINGS=/prepress -dPassThroughJPEGImages=true -sOutputFile=%unlocked_pdf_path%  %locked_pdf_path%
goto done

:done
echo.
echo Done.
echo.
pause
exit /B

PDF Unlock.zip
0.00MB

 

PDF 압축 (Compression)

@echo off
setlocal enabledelayedexpansion

rem set /p original_pdf_path="PDF File (use full path eg. C:\Users\You\Desktop\original.pdf): "
set /p original_pdf_path="PDF File (use full path eg. C:\Users\You\Desktop\original.pdf): "
echo.
rem echo %original_pdf_path%

if not exist %original_pdf_path% (
	echo PDF File not found. Please try again.
	goto done
)

call set compressed_pdf_path=%%original_pdf_path:.pdf=.compression.pdf%%
echo Saving %compressed_pdf_path%

set gs_exec="gswin*c.exe"

set gs_path_x64=
for /f "delims=" %%a in ('where /R "c:\Program Files" %gs_exec%') do @set gs_path_x64=%%a
rem echo x64 path="%gs_path_x64%"

if not ["%gs_path_x64%"] == [""] (
	rem echo is x64
	set gs_path=%gs_path_x64%
	goto run_gs
)

set gs_path_x86=
for /f "delims=" %%a in ('where /R "c:\Program Files (x86)" %gs_exec%') do @set gs_path_x86=%%a
rem echo x86 path="%gs_path_x86%"

if not ["%gs_path_x86%"] == [""] (
	rem echo is x86
	set gs_path=%gs_path_x86%
	goto run_gs
)

echo %gs_exec% not found. Please install Ghostscript.
goto done

:run_gs
"%gs_path%" -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite  -sFONTPATH=%windir%/fonts;xfonts;. -sPDFPassword= -dPDFSETTINGS=/prepress -dPassThroughJPEGImages=true -sOutputFile=%compressed_pdf_path%  %original_pdf_path%
rem gswin64c.exe -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite  -sFONTPATH=%windir%/fonts;xfonts;. -sPDFPassword= -dPDFSETTINGS=/prepress -dPassThroughJPEGImages=true -sOutputFile=%compressed_pdf_path%  %original_pdf_path%
goto done

:done
echo.
echo Done.
echo.
pause
exit /B

PDF Compression.zip
0.00MB

반응형