김프에서는 .pdf를 가져 와서 GUI를 사용하여 “이미지”드롭 다운 메뉴에서 “플래 튼 이미지”를 선택하여 여러 레이어로 만든 경우이를 평평하게 만들 수 있습니다. 그런 다음 새 파일 이름으로 .pdf를 내보낼 수 있습니다.
이것을 자동화하고 싶습니다. 터미널을 통해 할 수있는 방법이 있습니까?
답변
이 스레드에서 Google을 통해이 두 가지 방법을 찾았습니다. 제목 : Re : PDF 파일을 UNIX 명령 줄에서 병합 합니다.
방법 # 1-Imagemagick의 변환 사용 :
$ convert orig.pdf flattened.pdf
참고 : 이 접근 방식에서는 품질이 그렇게보고됩니다.
방법 # 2-pdf2ps 사용-> ps2pdf :
$ pdf2ps orig.pdf - | ps2pdf - flattened.pdf
참고 : 이 방법은 이미지 품질을 유지하는 것으로보고되었습니다.
답변
고스트 스크립트 (GS)는보다 더 일을 pdf2ps
하고 convert
나를 위해. 품질이 거의 저하되지 않았고 파일 크기가 작습니다.
gs -dSAFER -dBATCH -dNOPAUSE -dNOCACHE -sDEVICE=pdfwrite \
-sColorConversionStrategy=/LeaveColorUnchanged \
-dAutoFilterColorImages=true \
-dAutoFilterGrayImages=true \
-dDownsampleMonoImages=true \
-dDownsampleGrayImages=true \
-dDownsampleColorImages=true \
-sOutputFile=document_flat.pdf document_original.pdf
여기에서 찾을 수 있습니다 :
http://zeroset.mnim.org/2015/01/07/flatten-pdfs-with-ghostscript/
답변
변환은 동일한 파일 크기를 유지하지만 느리다는 것을 알았습니다.
pdf2ps ps2pdf 방법이 더 빠르지 만 파일 크기가 커지고 있음을 알았습니다.
pdftk는 빠를뿐만 아니라 비슷한 파일 크기를 유지하기 때문에 좋습니다.
이것이 디렉토리를 대량 평평하게하는 데 사용하는 것입니다.
function pdfflatten () {
pdftk "$1" output "$2" flatten
}
export pdfflatten
alias pdfflattenDIR='mkdir flattenedPDFs; for i in `seq $(ls *.pdf | wc -l)`; do a=`ls *.pdf | head -$i | tail -1`; pdfflatten "$a" flattenedPDFs/"$a"; done'