추가 자료:

추가 자료:

다음 명령을 사용하여 pdf 파일을 jpg 파일 묶음으로 변환하면

convert -quality 100 file.pdf page_%04d.jpg

품질이 눈에 띄게 저하되었습니다.

그러나 다음을 수행하면 (눈에 띄는) 품질 손실이 없습니다.

gscan2pdf를 시작하고 파일 -> 가져오기(그런 다음 file.pdf 선택)를 선택합니다. 그런 다음 gscan2pdf의 임시 디렉터리를 입력합니다. 많은 pnm 파일이 있습니다(pdf 파일의 각 페이지마다 하나씩). 지금은 그래

  for file in *.pnm; do            
  convert $file $file.jpg done

결과 jpg 파일은 (내가 원하는) 원본 PDF와 (대략) 동일한 품질을 갖습니다.

이제 제 질문은 눈에 띄는 품질 저하 없이 pdf 파일을 jpg 파일 묶음으로 변환하는 간단한 명령줄 방법이 있습니까?입니다. (위의 솔루션은 너무 복잡하고 시간이 많이 걸립니다).

답변1

"품질 손실"이 무엇을 의미하는지 명확하지 않습니다. 이것은 매우 다양한 것을 의미할 수 있습니다. 설명하기 위해 몇 가지 예를 게시할 수 있나요? 품질이 나쁜 버전과 좋은 버전에서 동일한 부분을 잘라낼 수도 있습니다(추가 품질 손실을 피하기 위해 PNG로).

-density변환을 위해 더 높은 dpi를 사용해야 할 수도 있습니다 .

convert -density 300 file.pdf page_%04d.jpg

-units PixelsPerInch(필요한 경우 또는 앞에 추가할 수 있습니다 -units PixelsPerCentimeter. 내 사본의 기본값은 ppi입니다.)

고쳐 쓰다: 당신이 지적했듯이 gscan2pdf(당신이 그것을 사용하는 방식은) 단지 pdfimages(from포플러). PDF를 입력으로 사용할 때와 동일한 작업을 pdfimages수행하지 않습니다 .convert

convertPDF를 가져와서 특정 해상도로 렌더링하고 결과 비트맵을 소스 이미지로 사용합니다.

pdfimages포함된 비트맵 이미지에 대한 PDF를 보고 각 이미지를 파일로 내보냅니다. PDF의 텍스트 또는 벡터 그리기 명령은 무시됩니다.

따라서 가지고 있는 PDF가 일련의 비트맵을 둘러싼 래퍼일 뿐이라면 pdfimages원래 크기의 원시 데이터를 제공하므로 해당 PDF를 추출하는 것이 좋습니다. PDF에는 원시 JPEG 데이터가 포함될 수 있으므로 -j이 옵션을 사용할 수도 있습니다 . pdfimages기본적으로 pdfimages모든 것은 PNM 형식으로 변환되며 JPEG > PPM > JPEG 변환은 손실이 많은 프로세스입니다.

그러니 한번 시도해 보세요

pdfimages -j file.pdf page

PDF에서 사용하는 비트맵 형식에 따라 단계를 convert따를 수도 있고 필요하지 않을 수도 있습니다 ..jpg

일련의 JPEG 이미지로 만든 PDF에서 이 명령을 시도했습니다. 추출된 JPEG는 소스 이미지와 바이트 단위로 동일합니다. 이보다 더 높은 퀄리티를 얻을 수는 없습니다.

답변2

convert나에게 적합하지 않음. 그러나 이( pdftoppm)는 잘 작동합니다. 다음 각 명령은 "images" 디렉터리가 있는지 확인하고, 존재하지 않으면 디렉터리를 만들고, 결과 이미지를 해당 디렉터리에 저장합니다.

1200 해상도

mkdir -p images && pdftoppm -jpeg -r 1200 mypdf.pdf images/pg

600 해상도

mkdir -p images && pdftoppm -jpeg -r 600 mypdf.pdf images/pg

300 DPI(페이지당 약 1MB의 파일 크기 생성)

mkdir -p images && pdftoppm -jpeg -r 300 mypdf.pdf images/pg

300 DPI, 최소 압축/최고 품질(페이지당 최대 2MB 파일 크기 생성)

mkdir -p images && pdftoppm -jpeg -jpegopt quality=100 -r 300 mypdf.pdf images/pg

추가 자료:

  1. https://stackoverflow.com/questions/43085889/how-to-convert-a-pdf-into-jpg-with-commandline-in-linux/61700520#61700520
  2. https://stackoverflow.com/questions/6605006/convert-pdf-to-image-with-high-solution/58795684#58795684
  3. https://askubuntu.com/questions/150100/extracting-embedded-images-from-a-pdf/1187844#1187844

답변3

학생들의 반응에 따르면 pdfimages이는 좋은 선택입니다. 내 경험상 올바른 dpi를 지정하든 아니든 내보내기 품질이 좋지 않습니다 gs.convert

그러나 PDF에 페이지당 여러 레이어가 있는 경우 작동하지 않고 레이어를 별도의 이미지로 추출합니다. 이 경우 표시된 대로 내보낸 페이지를 pdfimages사용하는 것이 좋습니다 .inskcape

이것은 내가 사용하는 명령입니다:

pdftk combined_to_do.pdf burst output pg_%04d.pdf
ls ./pg*.pdf | xargs -L1 -I {}  inkscape {} -z --export-dpi=300 --export-area-drawing --export-png={}.png

첫 번째 명령은 모든 페이지를 분할하고 두 번째 명령은 페이지별로 png로 변환합니다. png로 유지하거나 JPEG로 변환할 수 있습니다.

ls ./p*.png | xargs -L1 -I {} convert {}  -quality 100 -density 300 {}.jpg

pdfimagesImageMagick, gsImageMagick 및 ImageMagick 에 비해 내보내기 품질이 가장 좋은 것으로 convert나타났습니다 .inkscape

답변4

gscan2pdf 소스 코드를 살펴보면 pdfimages를 사용하는 것으로 나타났습니다. 그래서 그것은 기다림 pdfimages file.pdf page으로 이어진다 page-001.ppm, page-002.ppm.

관련 정보