PDF를 병합하는 Ghostscript는 결과를 압축합니다.
Ghostscript를 사용하여 여러 PDF를 병합하는 정리 한 명령을 찾았습니다.
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=out.pdf in1.pdf in2.pdf
결과 크기는 2 개의 PDF를 결합한 크기보다 작습니다.
단일 파일을 입력으로 사용하여 명령을 실행하면 여전히 더 작은 크기의 출력 파일이 생성됩니다.
Ghostscript에 병합하지 않고 복사하는 옵션이 있습니까?
그렇지 않다면 Ghostscript 압축이 너무 좋아서 품질이 없습니까?
다음 은 장치로 사용할 때 사용할 수있는 몇 가지 추가 옵션 입니다 pdfwrite
. 페이지에 따르면 해당 아무것도 전달 하지 않으면 더 구체적이지는 않지만에 -dPDFSETTINGS
가까운 것으로 설정됩니다 /screen
. -dPDFSETTINGS=/prepress
300dpi 이상 만 접근 할 수 있습니다.
gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=out.pdf in1.pdf in2.pdf
또 다른 대안은 pdftk입니다 .
pdftk in1.pdf in2.pdf cat output out.pdf
관찰 한 크기 최적화 중 일부는 Ghostscript의 사용하지 않는 개체 정리, 최근 비용 한 글꼴 최적화 개선 (최신 버전의 GS?!?) 및 이미지 재 / 다운 샘플링에서 비롯된 수 있습니다. 일어난.
PDF-> PDF 변환에 사용되는 경우 Ghostscript 는 기본적으로 다음과 같이 작동합니다.
- 모든 개체와 함께 입력 파일을 읽고 그래픽 페이지 표현을위한 내부 형식으로 변환합니다.
- 형식의 페이지 내부 내용 에 대해 명령 줄 에서 요청 고객 된 조작을 수행 합니다.
- 완전히 새로운 PDF를 작성하십시오.
즉, 대부분의 PDF-> PDF 작업에서 PDF 개체의 순서와 번호가 다르며 개체의 내부 코드도 변경 될 수 있습니다 (입력 및 출력 PDF간에 차이가없는 경우에도).
기본적으로 Ghostscript는 원본 파일에서 압축되지 않은 모든 개체 스트림도 압축합니다 (그러나 이것은 무손실 압축입니다).
이제 조작에 대한 희망을 포함하지 않는 매우 단순한 명령 줄에 대해 Ghostscript 는 사용자가 사용하기를 원합니다 가정-dPDFSETTINGS=/default
하고이 매개 변수를 암시 적으로 설정하고 그에 따라 작동합니다.
이제 PDFSETTINGS 는 무엇/default
입니까?! 알아볼 수있는 두 가지 옵션이 있습니다.
설명서를 업그레이드 . 이 섹션 중간에 있는 큰 표 는 개요를 제공합니다. 이
-dPDFSETTINGS=/default
자체가 자체가 자체가 고유 한 다른 더 구체적인 설정에 대한 속기 일 뿐이라는 것을 알 수 있습니다 . 현재 문서에 대한 링크는 개발 코드의 현재 HEAD에 대한 사용되는 버전은 물론 다를 수 있습니다 .(자신의) Ghostscript를 쿼리하십시오. '출력 장치의 기본 옵션 / 설정에 대한 Ghostscript 쿼리 ...' 및 'PostScript 사전은 무엇이며 어떻게 액세스 할 수 있습니까 (Ghostscript를 통해)?'라는 질문에 대한 내 답변 입니다. 이것에 대해 조금 더 자세히 설명하십시오. 간단히 말해, Ghostscript에서
/default
PDFSETTINGS의 세부 정보를 쿼리하면 다음 명령을 실행하십시오.gs \ -q \ -dNODISPLAY \ -c ".distillersettings /default get {exch ==only ( ) print ===} forall quit"
다음과 동일한 결과를 얻을 수 있습니다.
/Optimize false /DoThumbnails false /PreserveEPSInfo true /ColorConversionStrategy /LeaveColorUnchanged /DownsampleMonoImages false /EmbedAllFonts true /CannotEmbedFontPolicy /Warning /PreserveOPIComments true /GrayACSImageDict << /HSamples [2 1 1 2] /VSamples [2 1 1 2] /QFactor 0.9 /Blend 1 >> /DownsampleColorImages false /PreserveOverprintSettings true /CreateJobTicket false /AutoRotatePages /PageByPage /NeverEmbed [/Courier /Courier-Bold /Courier-Oblique /Courier-BoldOblique /Helvetica /Helvetica-Bold /Helvetica-Oblique /Helvetica-BoldOblique /Times-Roman /Times-Bold /Times-Italic /Times-BoldItalic /Symbol /ZapfDingbats] /ColorACSImageDict << /HSamples [2 1 1 2] /VSamples [2 1 1 2] /QFactor 0.9 /Blend 1 >> /DownsampleGrayImages false /UCRandBGInfo /Preserve
중에서 눈에이 띄는 유일한 점은에서로 변경
/AutoRotagePages
하는/PageByPage
것이/None
좋습니다. 명령 줄에서-dAutoRotatePages=/None
.다음 매개 변수를 추가하여 입력 PDF에 가능한 많은 패스 스루 모드 를 사용하도록 Ghostscript에 지시하는 전체 매개 변수 목록을 제공하려면 다음을 수행하십시오.
-dAntiAliasColorImage=false \ -dAntiAliasGrayImage=false \ -dAntiAliasMonoImage=false \ -dAutoFilterColorImages=false \ -dAutoFilterGrayImages=false \ -dDownsampleColorImages=false \ -dDownsampleGrayImages=false \ -dDownsampleMonoImages=false \ -dColorConversionStrategy=/LeaveColorUnchanged \ -dConvertCMYKImagesToRGB=false \ -dConvertImagesToIndexed=false \ -dUCRandBGInfo=/Preserve \ -dPreserveHalftoneInfo=true \ -dPreserveOPIComments=true \ -dPreserveOverprintSettings=true \
따라서 다음 명령을 시도 할 수 있습니다.
gs \
-o output.pdf \
-sDEVICE=pdfwrite \
-dAntiAliasColorImage=false \
-dAntiAliasGrayImage=false \
-dAntiAliasMonoImage=false \
-dAutoFilterColorImages=false \
-dAutoFilterGrayImages=false \
-dDownsampleColorImages=false \
-dDownsampleGrayImages=false \
-dDownsampleMonoImages=false \
-dColorConversionStrategy=/LeaveColorUnchanged \
-dConvertCMYKImagesToRGB=false \
-dConvertImagesToIndexed=false \
-dUCRandBGInfo=/Preserve \
-dPreserveHalftoneInfo=true \
-dPreserveOPIComments=true \
-dPreserveOverprintSettings=true \
input1.pdf \
input2.pdf
마지막 으로 Chris Haas가 이미 암시 했듯이 Ghostscript가 기본적으로 적용 하는 최적화 를 특별히 원하지 않는pdftk
경우 에도 사용할 수 있습니다 . 단순히 그러한 작업을 수행 할 수 없으며 상대적으로 멍청한 작업으로 인해 상당한 속도를 얻을 수 있습니다 (그러나 Ghostscript보다 훨씬 큰 파일 크기 출력).pdftk
참고 URL : https://stackoverflow.com/questions/8158584/ghostscript-to-merge-pdfs-compresses-the-result
'ProgramingTip' 카테고리의 다른 글
Scala에서 특성 및 추상 메서드 재정의 (0) | 2020.12.01 |
---|---|
UIWebView에서 앱 URL을 처리하는 방법은 무엇입니까? (0) | 2020.12.01 |
Python mock의 모의 속성? (0) | 2020.12.01 |
SHA512에서 해시 된 길이는 얼마입니까? (0) | 2020.12.01 |
Golang 메모리를 분석하는 방법? (0) | 2020.12.01 |