Imagemagick을 사용하여 상단 공간을 남기지 않고 JPG를 A4 PDF로 변환

Imagemagick을 사용하여 상단 공간을 남기지 않고 JPG를 A4 PDF로 변환

다양한 크기의 JPG 문서를 A4 용지로 변환하려고 합니다. (NextCloud Android 앱의 "문서 스캔" 기능에서 가져온 문서 사진) 그러나 문제는 다음 고양이 사진에서도 재현될 수 있습니다.

나는 노력했다

convert -page A4 -background white in.jpg out.pdf

하지만 이렇게 하면 페이지 상단에 공백이 남게 됩니다.

jpg를 맨 위에 정렬하고 싶습니다.

출력 11

convert -page A4 -gravity north -background white in.jpg out.pdf

하지만 이제는 기본적으로 완전히 흰색 페이지가 표시됩니다.

Inkscape에서 파일을 열 때 입력 내용이 페이지 외부 어딘가에 배치되었음을 깨달았습니다.

출력 2

여기서 무슨 문제가 있습니까?

의견을 바탕으로 편집:

convert -page A4 -gravity north -background white +repage cat-stairs.jpg /tmp/out.pdf작동하지 않습니다. 아마도 이것은 실제로 참조용으로 원본 jpg를 추가하는 것일 수 있습니다.

원본 입력 JPG

버전 정보:

Version: ImageMagick 6.9.10-23 Q16 x86_64 20190101 https://imagemagick.org
Copyright: © 1999-2019 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC Modules OpenMP 
Delegates (built-in): bzlib djvu fftw fontconfig freetype jbig jng jpeg lcms lqr ltdl lzma openexr pangocairo png tiff webp wmf x xml zlib

답변1

여기서 무슨 문제가 있습니까?

내가 아는 한 이것은 버그입니다.


ImageMagick이 올바른 도구가 아닐 수도 있습니다.

일반적으로 ImageMagick의 convert솔루션은 일반적으로 만능이지만 가장 느린 경우가 많으며 ImageMagick은 아마도 기존 서버의 원격 코드 실행 취약점에 대해 가장 많이 악용되는 라이브러리이므로 최소한 메모리 요구 사항이 더 적은 형제 GraphicsMagick을 살펴보십시오.

매우 특정한 경우에는 둘 중 하나를 사용하지 않는 것이 가장 좋습니다. 기본적으로 모든 유형의 입력 파일을 가져와 이를 메모리 내 비트맵으로 렌더링한 다음 비트맵을 지정된 출력 파일 형식으로 저장하기 때문입니다.

특정 사용 사례에서 PDF는 JPEG 파일을 완벽하게 포함할 수 있습니다. 손실이 있는 재압축을 수행해서는 안 됩니다. 그러니: 하지 마세요!

@nobody의 의견은 매우 유용합니다. 간단히 말해서 다음 내용이 포함된 텍스트 파일을 작성하면 됩니다.

다음 이름으로 저장하세요 magicpage.

#!/usr/bin/env zsh
infile="$1"

fname="$(mktemp --suffix=.tex magicpage.XXXXX)"
>"${fname}" print -R '
\documentclass[a4paper]{article}
\usepackage{background}
\backgroundsetup{
  placement=top,
  scale=1,
  angle=0,
  opacity=1,
  contents={\includegraphics[width=\paperwidth,height=\paperheight,keepaspectratio]{\imagename}}
}
\begin{document}
\thispagestyle{empty}
\,
\end{document}
'
pdflatex -jobname "${infile:r}" "\\def\\imagename{${infile}}\\input{${fname}}" > /dev/null

그런 다음 이를 사용하여 실행 가능하게 만듭니다 chmod 755 /path/to/magicpage. 이제 동일한 디렉토리에서 실행 /path/to/magicpage yourimage.jpg하고 .yourimage.pdf

관련 정보