pdf - 使用带有打印边距的 ImageMagick 在页面上平铺图像?

标签 pdf svg imagemagick tile

我试图让 ImageMagick 为我做一些事情,但我遇到了一些问题。首先,我不理解度量单位,因此传递到 ImageMagick 中,因此我的脚本没有生成我需要的内容。其次,我这样做的方式效率极低。运行此脚本需要很长时间(您在下面看到的脚本与我正在运行的脚本相比略有缩减)。

所以我在做什么......我有许多带有图标的svg文件。我希望为每个文件生成一个页面。生成的页面将包含平铺在整个页面上的图标,侧面有边距。我正在寻找页面周围有 1/2 边距的 1/2 英寸瓷砖,它需要是美国信函(8 1/2 x 11 英寸)。

在阅读了大量文档后,这就是我想出的。

colors=(red blue purple yellow green black)

mkdir -p generated/icons/
for color in ${colors[@]}; do
  images=`printf "source/icons/${color}.svg%.0s " {1..300}`
  montage $images -tile 15x20 -page Letter+1+1 -units PixelsPerInch -density 2550x3300 \
                  generated/icons/${color}.pdf
done

所以对于我的每个文件,我都运行蒙太奇。我使用 printf 将图像文件名重复 300 次。然后我将其平铺 15x20 次。 15x20 来自 8.5 减 1 英寸边距 = 7.5*2 = 15,同样 (11-1)*2 = 20。300 张图像来自 15*20。然后我说我想要这个偏移量 1x1 的信件页面。 (这是我的尝试)我说我说的是每英寸像素(但似乎没有一个单位匹配)。我通过密度命令将 dpi 设置为 300,其中 8.5*300 = 2550 和 11*300 = 3300。

我一直在玩其他设置(几何等),但这些都不起作用。而且单位似乎也没有意义......现在我得到的pdf是一个正方形等......

我如何制作平铺页面?还有没有办法让我更有效地做到这一点?到目前为止,我所拥有的非常缓慢。

编辑:

更多信息:
i:montage --version Version: ImageMagick 6.8.8-10 Q16 x86_64 2015-03-10 http://www.imagemagick.org
瓷砖图像:enter image description here

我当前的输出:enter image description here

注意边距不正确,是方形而不是字母页,也有倾斜的瓷砖

最佳答案

鉴于您提供的 PNG 图像,我想您希望在 8.5x11 英寸的打印图像内有一个 1 英寸的白色边框。因此,平铺宽度将为 7.5 英寸,平铺高度将为 10 英寸。

  • 1 英寸 = 300 dpi 所以边框厚度 = 300 像素 = 2 格厚
  • 11-1 = 10 英寸高,平铺区域高度 = 10*300 = 3000 像素
  • 8.5-1 = 7.5 英寸宽,平铺区域宽度 = 7.5*300 = 2250 像素
  • 1 块 = 0.5 英寸,300 dpi = 0.5*300 = 150 像素

  • convert lUDbK.png -resize "150x150!" -write mpr:tile +delete -size 2250x3000 tile:mpr:tile -bordercolor white -border 300 -units pixelsperinch -density 300 tiled_page.png
    

    在我的 Mac Mini 上,处理时间为 1.75 秒。

    这会产生一个相当大的图像。您必须提取图像才能看到边框,因为此页面背景是白色的。

    enter image description here

    (请注意,PNG 仅支持像素每厘米,但 IM 会相应地转换我对像素每英寸的规范。因此,如果您查看元数据,它可能会以像素每厘米为单位显示一些其他密度。但它们将对应于所需的 300 dpi。)

    关于pdf - 使用带有打印边距的 ImageMagick 在页面上平铺图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43921422/

    相关文章:

    java - 在 Amazon EC2 suse Linux 中导出 JasperReports PDF 时段落高度不够

    javascript - Jquery:将 SVG 转换为新尺寸的 PNG

    javascript - HTML5 SVG 和鼠标事件

    css - img src SVG 使用 CSS 改变样式

    linux - Inkscape 0.92.2编译: links with two libMagick versions

    imagemagick - 如何在 Mountain Lion (10.8.2) 上安装 Image Magick for MAMP (Pro)

    ios - swift/Xcode6 : Are PDF images working with UIImage(named:)?

    javascript - 下载pdf.js中base64生成的pdf

    perl - 如何使用 PerlMagick 替换任何不是特定颜色的颜色?

    python - 使用 Flask - Python 下载 ReportLab PDF