2009-09-05 8 views
2

J'ai besoin d'ajouter une nouvelle image à un fichier TIFF ou PDF de plusieurs pages. Le problème est que les images individuelles (qui composent le multi-pages) ont de grandes résolutions et ImageMagick charge d'abord toute l'image de plusieurs pages en mémoire, ce qui consomme toute la mémoire du système.Comment puis-je ajouter des images à une image de plusieurs pages?

Je dois pouvoir ajouter à une image de plusieurs pages sans devoir charger l'image entière dans la mémoire. Est-ce possible avec ImageMagick? Quelles fonctions C/C++ dois-je utiliser?

Répondre

2

Je ne suis pas sûr que ce soit possible dans ImageMagick. Pour TIFF, vous devez lire les répertoires TIFF sur un TIFF et en créer de nouveaux dans celui que vous ajoutez, puis copier l'image codée via un tampon. Il n'est pas nécessaire de décoder l'image pour ce faire, mais vous devez faire attention de le faire correctement et de ramener l'un des répertoires associés à la page (comme les métadonnées associées).

Je pense que libtiff (dont ImageMagick wraps) fournit des fonctions qui peuvent vous aider à le faire.

Pour PDF, il est également difficile - cette page a quelques alternatives:

http://ansuz.sooke.bc.ca/software/pdf-append.php

Il y a aussi beaucoup SDKs 3ème partie qui peut manipuler PDF (ActivePDF, PDFTron, Amyuni). Clause de non-responsabilité: Je travaille pour Atalasoft: nous avons un SDK .NET qui a cette fonctionnalité pour le format TIFF (et PDF uniquement pour l'image). Il peut être appelé via C++/CLI, mais pas sûr si vous êtes sur Windows.

0

Avec Imagemagick, il est assez facile de créer un PDF multi-pages. Ce n'est pas tout à fait la réponse à la question, mais la réponse que je recherche sur Google pour ...

... Pour convertir Anyways 3 images à un fichier PDF de 3 pages en utilisant ImageMagick:

convert imageForPage1.jpg imageForPage2.jpg imageForPage3.jpg resulting3Pages.pdf 
1

En fait, je juste lutté à travers cela hier. ghostscript est beaucoup plus rapide à ajouter.

premier cd dans le répertoire qui tient les tiffs que vous souhaitez ajouter à pdf puis

$> 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) 

Regardez aussi http://www.novell.com/coolsolutions/tools/17083.html