해결책

해결책

PDF 문서가 있으면 문서를 스캔한 것이고, 스캔한 문서의 사진만 저장하기 때문에 용량이 아주 큰 파일인거 아시죠?

텍스트만 저장하는 올바른 문서를 만드는 데 도움이 되는 OCR 도구가 있습니까?

글쎄, 나는 그 반대가 필요합니다! 완벽한 PDF 문서가 있고 pdflatex이를 종이에 인쇄했을 때(특정 dpi 값으로) 정확히 동일해 보이지만 원본 이미지인 "거대한" PDF로 변환해야 한다고 가정해 보겠습니다 .

내 초기 아이디어는 PDF를 일련의 JPG로 변환한 다음 다시 PDF로 변환하는 것이었지만 표준적인 방법이 있을까요?


내가 왜 이런 일을 하고 싶은지 궁금하시다면, 현재 제가 관리하지 않는 네트워크 프린터에 갇혀서 인쇄된 파일에서 무작위로 문자를 삭제하고 있습니다! 따라서 누군가 거기에 무엇이 잘못되었는지 알아낼 때까지는 이를 해결 방법으로 남겨두고 싶습니다.

답변1

이미지 기반 PDF도 오염되었는지 테스트할 수 있습니다. 먼저 PDF를 (여러 페이지) TIFF로 변환합니다.고스트 스크립트:

gs -sDEVICE=tiffg4 -o sample.tif sample.pdf

그런 다음 TIFF를 PDF로 변환합니다. 예:

tiff2pdf -z -f -F -pA4 -o sample-img.pdf sample.tif

그러면 페이지가 텍스트가 아닌 이미지인 PDF 파일이 생성됩니다.

또는 시스템이 TIFF 파일 인쇄를 지원하는 경우 직접 인쇄해 보십시오.

PDF를 PS로 변환하는 옵션 도 있는데 pdf2ps, 가능하다면 더 좋을 것 같습니다.

답변2

나는 이걸했다디미트리에 설명된논평pdf2ps및 을 사용하여 ps2pdf.

.ps먼저 다음 명령을 사용하여 PDF를 일부 형식으로 변환합니다.

pdf2ps my_file.pdf my_file.ps

그런 다음 다시 PDF 형식으로 변환하세요.

ps2pdf my_file.ps my_file.pdf

이렇게 하면 콘텐츠가 실제로 이미지인 원본 PDF의 래스터화된 버전을 얻을 수 있습니다. 도움이 되었기를 바랍니다.

답변3

해결책

다음 코드는 1200 DPI로 래스터화 a.pdf하고 c.pdf먼저 2400 DPI로 래스터화한 다음 출력하기 전에 2만큼 축소합니다.문서.

gs -dNOPAUSE -dBATCH -sDEVICE=pdfimage24 -r2400 -dDownScaleFactor=2 -o c.pdf a.pdf

흑백으로만 인쇄해야 하는 경우 이를 교체하여 작업 속도를 높일 수 pdfimage24있습니다 pdfimage8.

기준

pdf2ps위의 솔루션이 가장 빠르며 + 에게만 지는 것을 볼 수 있습니다 ps2pdf(그러나 pdf2ps+ ps2pdf보장하지 않는다파일을 래스터화) 및 pdf2ppm(단, .jpg파일을 확대하려면 변환)

해결책 소요 시간(초) 점유된 메모리(KiB) 출력 파일 크기(KiB) 인쇄 시간(초)
pdftoppm(1200) ( .jpg) + img2pdf(†) 2.710 603092 10341.3
pdf2ps+ ps2pdf임시 파일 포함(원천) (*) 4.110 37596 1706.4
pdfimage8(1200) 4.180 35668 2348.6 9.5
pdfimage24(1200/2) 5.020 36088 1971.9 9.7
pdfimage24(1200) 6.520 36212 3316.1
pdf2ps+ ps2pdf파이프 포함(*) 7.230 37668 1706.4
convert(600) 9.560 964532 5953.6
pdftoppm(1200) ( .tiff) + img2pdf(†) 10.850 1539512 14483.3
convert(600) + gs최적화(원천) 12.010 964532 1989.4 9.9
pdfimage8(2400/2) 20.350 43872 3481.9
pdfimage24(2400/2) 23.510 46484 4833.2 15.8
pdftoppm(1200) ( .png) + img2pdf(원천) (†) 33.000 626896 14127.2

(*): 실제로 항상 PDF를 래스터화하는 것이 해결책은 아니지만 gs경우에 따라 이를 수행하기로 결정할 수도 있습니다(어떤 경우 래스터화되는지 알 수 없으며 PDF가 너무 복잡한 경우일 수 있음).

(†): 코드는 1페이지 PDF 파일에만 맞도록 작성되었지만 조정할 수 있습니다.

벤치마크 솔루션 세부정보

pdftoppm(1200) ( .jpg) + img2pdf(†)

pdftoppm -progress -r 1200 -jpeg a.pdf a
img2pdf a-1.jpg -o c.pdf

pdf2ps+ ps2pdf임시 파일 포함(원천) (*)

gs -sDEVICE=ps2write -dNOCACHE -sOutputFile=c.ps -q -dBATCH -dNOPAUSE a.pdf
ps2pdf c.ps c.pdf

pdfimage8(1200)

gs -dNOPAUSE -dBATCH -sDEVICE=pdfimage8 -r1200 -o c.pdf a.pdf

pdfimage24(1200/2)

gs -dNOPAUSE -dBATCH -sDEVICE=pdfimage24 -r1200 -dDownScaleFactor=2 -o c.pdf a.pdf

pdfimage24(1200)

gs -dNOPAUSE -dBATCH -sDEVICE=pdfimage24 -r1200 -o c.pdf a.pdf

pdf2ps+ ps2pdf파이프 포함(*)

gs -sDEVICE=ps2write -dNOCACHE -sOutputFile=- -q -dBATCH -dNOPAUSE a.pdf -c quit | ps2pdf - c.pdf

convert(600)

convert -density 600 a.pdf c.pdf

pdftoppm(1200) ( .tiff) + img2pdf(†)

pdftoppm -progress -r 1200 -tiff a.pdf a
img2pdf a-1.tif -o c.pdf

convert(600) + gs최적화(원천)

convert -density 600 a.pdf b.pdf
gs -dBATCH -dNOPAUSE -sDEVICE=pdfwrite  -sOutputFile=c.pdf b.pdf   -q

pdfimage8(2400/2)

gs -dNOPAUSE -dBATCH -sDEVICE=pdfimage8 -r2400 -dDownScaleFactor=2 -o c.pdf a.pdf

pdfimage24(2400/2)

gs -dNOPAUSE -dBATCH -sDEVICE=pdfimage24 -r2400 -dDownScaleFactor=2 -o c.pdf a.pdf

pdftoppm(1200) ( .png) + img2pdf(원천) (†)

pdftoppm -progress -r 1200 -png a.pdf a
img2pdf a-1.png -o c.pdf

벤치마크의 소스 코드를 찾을 수 있습니다.여기.

답변4

이것수락된 답변대부분의 사용 사례를 다루어야 합니다. 그러나 래스터화하고 싶은 상황에 처해 있습니다.특정 해상도로.이 답변pdftoppm비슷한 질문을 통해 최고의 품질 결과를 생성하는 도구를 알게 되었습니다.

간단한 사용 예는 다음과 같습니다.

pdftoppm input.pdf output -tiff

그러면 PDF 파일의 페이지 번호에 해당하는 output-X.tif이름 의 파일이 생성됩니다 .X

관련 정보