さまざまなサイズのJPG文書をA4用紙に変換しようとしています。 (NextCloud Androidアプリの「ドキュメントスキャン」機能から取得したドキュメントの写真)しかし、問題は次の猫の写真でも再現される可能性があります。
頑張った
convert -page A4 -background white in.jpg out.pdf
ただし、これによりページの上部にスペースが残ります。
jpgを一番上に揃えたいです。
convert -page A4 -gravity north -background white in.jpg out.pdf
しかし、今ではデフォルトでは完全に白いページが表示されます。
Inkscapeでファイルを開くと、入力内容がページの外側のどこかに配置されたことに気づきました。
ここで何の問題がありますか?
コメントに基づいて編集:
convert -page A4 -gravity north -background white +repage cat-stairs.jpg /tmp/out.pdf
動作しません。おそらく、これは実際に参照用にオリジナルの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