며칠 전 Plasma 데스크톱의 기본 PDF 뷰어인 Okular에서 정보를 수정하는 방법을 보여 드렸습니다. 이 작업은 비교적 간단하지만 수정된 정보를 효과적으로 파괴하지 않고 보는 사람에게 가려질 뿐입니다.
오늘 제가 보여드리고 싶은 것은 퍼즐의 두 번째 부분인 PDF 문서의 병합입니다. 여러 레이어가 있는 이미지를 생각한 다음 모두 레이어가 없는 형식으로 저장합니다. 그런 다음 정보는 단일 레이어로 병합됩니다. 수직으로 쌓인 모든 픽셀의 값이 계산됩니다(더하기/빼기/무엇이든). 그런 다음 이 작업에 대한 단일 최종 계산으로 표시됩니다. PDF와 동일하지만 PDF 구조가 주어지면 더 복잡합니다. 해보자.
거래 도구 - 고스트스크립트
이전에 Ghostscript(gs)에 대해 들어본 적이 있을 것입니다. 수년 동안 LaTeX 및 LyX와 관련된 다양한 기사에서 이에 대해 확실히 이야기했습니다. 이제 gs 엔진을 사용하여 기존의 "다중 레이어" PDF를 병합된 PDF로 처리하여 정보를 적절하게 편집할 것입니다. 우리는 Linux에서 이 작업을 수행할 것입니다. Linux가 다른 운영 체제보다 훨씬 더 나은 한 가지가 있다면 파일 형식 처리와 관련된 특정 집중 작업이 있기 때문입니다. 따라서 Ghostscript는 배포판에서 사용할 수 있어야 하며 설치되지 않은 경우 저장소 아카이브에 있습니다.
gs -sDEVICE=pdfwrite -dPDFSETTINGS=/default -dNOPAUSE -dQUIET -dBATCH -sOutputFile=flattened.pdf input.pdf
이것은 마법을 수행하는 명령입니다. PDF 파일에 있을 수 있는 이미지를 추가로 처리하지 않으므로 크기가 크게 줄어들지 않을 것입니다. 결국, 그것은 여기서 목적이 아닙니다. 하지만 사실상 그게 전부입니다.
대체 방법 - ImageMagick 및 pdf2ps
어떤 이유로든 위의 방법이 만족스럽지 않으면 시도할 수 있는 다른 두 가지 방법이 있습니다. 그러나 이것이 gs를 사용하는 것보다 덜 효과적이라는 것을 알았습니다. 따라서 아래 나열된 제안을 진행할 때 기억하십시오.
ImageMagick 변환 유틸리티를 사용해 볼 수 있습니다. 하지만 기다리세요.
변환 -밀도 300 original.pdf flattened.pdf
기본적으로 Ghostscript 엔진의 보안 취약성으로 인해 ImageMagick은 PS, PDF, EPS, XPS 등을 포함한 다양한 파일을 처리하지 않도록 구성됩니다. 따라서 ImageMagick 정책을 편집하지 않고 시도하면 다음 오류가 표시됩니다.
convert-im6.q16:보안 정책 'PDF' @ error/constitute.c/IsCoderAuthorized/408에서 허용하지 않는 작업을 수행하려고 시도합니다.
convert-im6.q16:'flattened.pdf' @ error/convert.c/ConvertImageCommand/3258에 정의된 이미지가 없습니다.
이 문제를 해결하려면 다음 파일을 편집해야 합니다. [NUMBER]를 관련 버전의 6 또는 7로 바꾸십시오.
/etc/ImageMagick-[NUMBER]/policy.xml
이 파일에는 보안 정책 목록이 있습니다.
...
<정책 도메인="코더" 권리="없음" 패턴="EPS" />
<정책 도메인="코더" 권리="없음" 패턴="PDF" />
rights="none"이 rights="read|write"가 되도록 PDF용으로 변경합니다. 보안이 걱정된다면 특정 파일을 병합하는 동안 일시적으로만 변경한 다음 더 강력한 설정으로 되돌릴 수 있습니다.
...
이제 파일을 처리할 수 있습니다. 일반적으로 gs를 직접 사용하는 것보다 시간이 오래 걸립니다. 또한 매우 큰 파일로 작업하는 경우 메모리가 부족하여 변환이 실패할 수도 있습니다. 예를 들면:
convert-im6.q16:캐시 리소스 소진 `flattened.pdf' @ error/cache.c/OpenPixelCache/4083 `flattened.pdf' @ error/pdf.c/WritePDFImage/2341.
다시 한 번 XML 구성 파일을 변경하고 다른 정책에서 메모리 제한을 늘려야 합니다. 그러나 시스템에 있는 사용 가능한 메모리 리소스에 비해 문서가 너무 클 수 있습니다. 제안할 마법 세트가 없습니다:
...
<정책 도메인="리소스" 이름="폭" 값="256KP"/>
<정책 도메인="리소스" 이름="높이" 값="256KP"/>
<정책 도메인="리소스" 이름="영역" 값="1024MB"/>
<정책 도메인="리소스" 이름="디스크" 값="4GiB"/>
...피>
두 번째 도구는 pdf2ps와 ps2pdf의 쌍입니다. 기본적으로 PDF를 PS 파일로 변환한 다음 다시 PDF로 변환하면 문서가 효과적으로 병합됩니다. 마법 명령의 기능:
pdf2ps 원본.pdf - | ps2pdf - flattened.pdf
이것은 훌륭하고 빠르게 작동하지만 기본값은 공격적인 압축으로 인해 저해상도 이미지가 됩니다. 이는 필요한 문서 충실도를 유지하기 위해 도구의 다양한 옵션을 고려하고 실험해야 할 사항입니다.
결론
그리고 당신은 간다. 이제 PDF 파일을 병합하는 방법을 배웠습니다. 이 모든 것이 어떻게 작동하는지에 대한 기술적 복잡성은 이 기사의 범위를 벗어나지만 적어도 작업을 완료할 수 있는 도구는 있습니다. 내 경험에 따르면 Ghostscript는 가장 빠르고 효과적이면서도 최상의 결과를 제공합니다.
언급된 다른 두 유틸리티인 ImageMagick 및 pdf2ps/ps2pdf 콤보를 사용해 볼 수도 있습니다. 그러나 결과에 덜 만족했습니다. 어쨌든 PDF 파일을 다른 사람과 공유해야 하고 그 안에 포함된 정보의 일부를 수정하려는 경우 이제 이를 정렬하는 두 가지 자습서 프로세스가 있습니다. 이 두 번째 가이드는 그림을 완성합니다. 이제 안녕.
건배.