【发布时间】:2009-09-05 14:33:09
【问题描述】:
我需要以编程方式将新图像附加到多页 TIFF 或 PDF。问题是单个图像(构成多页图像)具有较大的分辨率,ImageMagick 首先将整个多页图像加载到内存中,这会消耗系统的所有内存。
我需要能够附加到多页图像,而不必将整个图像加载到内存中。 ImageMagick 可以做到这一点吗?我应该使用哪些 C/C++ 函数?
【问题讨论】:
标签: c++ pdf imagemagick append tiff
我需要以编程方式将新图像附加到多页 TIFF 或 PDF。问题是单个图像(构成多页图像)具有较大的分辨率,ImageMagick 首先将整个多页图像加载到内存中,这会消耗系统的所有内存。
我需要能够附加到多页图像,而不必将整个图像加载到内存中。 ImageMagick 可以做到这一点吗?我应该使用哪些 C/C++ 函数?
【问题讨论】:
标签: c++ pdf imagemagick append tiff
我不确定在 ImageMagick 中是否可行。
对于 TIFF,您需要做的是从一个 TIFF 中读取 TIFF 目录,并在您要附加到的那个中创建新的目录,然后通过缓冲区复制编码的图像。不需要对图像进行解码来执行此操作,但您必须小心正确地执行此操作并带入与页面关联的任何目录(如关联的元数据)。
我认为 libtiff(ImageMagick 包装的)提供了可以帮助您执行此操作的函数。
对于 PDF,也很难——这个页面有一些替代方案:
http://ansuz.sooke.bc.ca/software/pdf-append.php
还有许多可以操作 PDF 的 3rd 方 SDK(ActivePDF、PDFTron、Amyuni)。
免责声明:我为 Atalasoft 工作:我们有一个 .NET SDK,它具有 TIFF(和纯图像 PDF)的此功能。它可以通过 C++/CLI 调用,但不确定您是否在 Windows 上。
【讨论】:
实际上我昨天刚刚经历过这个。 ghostscript 的追加速度要快得多。
首先 cd 进入保存要附加到 pdf 的 tiff 的目录 那么
$> for i in `ls *.tif | sort -g`; do echo -n $i" " >> list.txt; done <br>
$> gs -q -sPAPERSIZE=letter -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=out.pdf $(cat list.txt)
【讨论】:
使用 Imagemagick,创建多页 PDF 非常容易。这不完全是问题的答案,而是我在谷歌上搜索的答案......
无论如何...使用 ImageMagick 将 3 张图像转换为 3 页 PDF:
convert imageForPage1.jpg imageForPage2.jpg imageForPage3.jpg resulting3Pages.pdf
【讨论】: