我正在尝试将不同尺寸的 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
并获取 a 。yourimage.pdf