GhostScript-PDF 파일 크기를 줄이려고 시도 중-오류 줄이려고합니다. 일반적으로

GhostScript를 사용하여 PDF의 파일 크기를 줄이려고합니다. 일반적으로 다음과 같이 작동합니다.

gswin32c -sDEVICE=pdfwrite -sOutputFile=out.pdf in.pdf

북마크, 주석 등을 제거한다고 생각합니다.

일부 PDF에서는 빈 PDF로 끝납니다. 다음과 같은 결과가 나타납니다.

GPL Ghostscript 9.04 (2011-08-05)
Copyright (C) 2011 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Error: /rangecheck in --run--
Operand stack:
   15   0   15   --nostringval--   15
Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval-
-   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   fa
lse   1   %stopped_push   1926   1   3   %oparray_pop   1925   1   3   %oparray_
pop   1909   1   3   %oparray_pop   --nostringval--   --nostringval--   --nostri
ngval--   --nostringval--   --nostringval--   --nostringval--
Dictionary stack:
   --dict:1166/1684(ro)(G)--   --dict:1/20(G)--   --dict:82/200(L)--   --dict:82
/200(L)--   --dict:108/127(ro)(G)--   --dict:291/300(ro)(G)--   --dict:22/30(L)-
-
Current allocation mode is local
GPL Ghostscript 9.04: Unrecoverable error, exit code 1

오류 메시지는 특별히 도움이되지 않습니다. 이 문제를 해결하는 방법에 대한 제안 사항이 있습니까?



답변

pdfwrite 이외의 장치를 사용하여 시작하십시오. 인수없이 Ghostscript를 시작한 다음 (Windows 버전 gswin32 사용) 파일을 끌어다 놓을 수 있습니다. 결과가 표시되는 창이 열립니다.

그것이 작동한다면 아마도 pdfwrite에서 버그를 발견했을 것입니다. 그렇지 않으면 Ghostscript 버그이거나 PDF가 어떤 식 으로든 유효하지 않은 것입니다. Acrobat이 열리면 유효하지 않습니다. Acorbat은 많은 깨진 PDF 파일을 엽니 다 ….

오류 메시지 PostScript를 사용하는 사람들에게 도움이됩니다. 😉 그렇지 않은 사람들에게는 ‘무슨 일이 발생했습니다 ‘를 의미 하지만 PostScript를 이해하지 못하면 예상 할 수있는 가장 유용한 오류에 관한 것입니다. 이 경우 피연산자가 연산자의 허용 범위를 벗어 났음을 알려줍니다.

당신은 -dPDFDEBUGPDF 파일의 어떤 객체가 문제를 일으켰는지 알려줄 것입니다. 그러나 PDF를 잘 모르면 아마 도움이되지 않을 것입니다.

가장 좋은 방법은 http://bugs.ghostscript.com 에서 버그 보고서를 여는 것입니다. 문제가되는 PDF 파일을 첨부하고 문제를 표시하는 명령 줄을 제공해야합니다. 디스플레이 장치 에 표시되는 경우 (예 : gswin32c.exe파일을 끌어서 놓기위한 인수없이 시작할 때 열리는 창 ) pdfwrite가 아닌 해당 명령 줄을 제공하십시오. 가정은 그 장치가 다음이 쓰기에서의 문제으로, pdfwrite 경우 아마이 없습니다.

pdfwrite는 단순히 주석과 책갈피를 제거 할뿐만 아니라 PDF 파일을 그래픽 프리미티브로 완전히 해석 한 다음 해당 그래픽 프리미티브를 포함하는 새로운 PDF 파일을 만듭니다. 결과적으로 생성 된 PDF 파일의 내용이 원본의 내용과 유사하다는 보장은 없습니다. 모양이 일치해야하지만 객체는 다른 유형으로 변환 될 수 있습니다.


답변

KenS가 언급 한 것 외에도 XFA 주석 (Adobe LifeCycle으로 생성 된 PDF 양식) 은 Ghostscript 에서 지원되지 않으므로 이러한 항목 만 포함 된 파일은 gswin32c에서 처리 할 때 빈 파일로 표시 될 수 있습니다.


답변

사용 :

gswin64c -dQUIET -dBATCH -dNOPAUSE -dSAFER -dMaxSubsetPct = 100 -dPDFSETTINGS = / ebook -sDEVICE = pdfwrite -sOutputFile = outputfile.pdf inputfile.pdf

전자 책 대신 화면이나 프린터를 사용할 수 있습니다. 이미지의 해상도가 변경됩니다 (72 / 150 / 300dpi).

행운을 빕니다 😉