2017-01-25 4 views

Répondre

1

Comme libTiff.Net est basé sur libTiff, il est clair qu'il sera possible d'effectuer cette tâche, mais les API pour cela ne sont pas là dans un format raisonnable. Pour la plupart, je crois que le rôle de libTiff.Net dans l'univers est de fournir à BitMiracle (hi!) Un moyen de convertir des fichiers TIFF en PDF, ce qui est une tâche très courante.

Le problème est que vous devez trouver le IFD approprié pour la page dans le document et le supprimer. C'est simple, mais cela laisse toutes les données d'image derrière. Si vous fusionnez les données dans le trou à partir des données d'image, vous devez trouver tout ce qui se rapporte aux données déplacées et les ajuster, ce qui signifie que vous devez comprendre complètement les spécifications TIFF pour le faire. Bienvenue en enfer, vous êtes en accordéon.

Si vous cherchez une alternative, j'ai écrit du code pour envelopper tous les détails de la manipulation TIFF dans a nice little API lors de ma dernière entreprise, Atalasoft pour le produit dotImage. Ce n'est pas gratuit et quand j'ai vérifié pour la dernière fois, on aurait dit qu'ils avaient augmenté le prix. Pourtant, vous pouvez toujours obtenir un essai gratuit de 30 jours si c'est un one-off, sinon, sortez le chéquier.

Voilà comment vous le feriez dans DotImage:

TiffDocument doc = new TiffDocument(sourceStream); 
// obviously, in a loop you should remove the pages in descending order 
doc.Pages.RemoveAt(zeroBasedPageIndex); 
doc.Save(destinationStream); 

Pour votre information, tout le levage lourd arrive à doc.Save(). Le reste est assez léger.

+1

Salut! C'est vrai, nous avons lancé LibTiff.Net car nous avions besoin d'un moyen de convertir les fichiers TIFF en PDF. Mais depuis lors, la bibliothèque s'est avérée utile pour d'autres personnes aussi. Particulièrement dans les cas où le code non géré est un non-non (par exemple Silverlight). Il y a même un système d'exploitation utilisant la bibliothèque (https://github.com/CosmosOS/Cosmos) – Bobrovsky

0

Il n'y a pas de moyen facile de le faire en utilisant la bibliothèque.

Vous pouvez essayer d'utiliser UnlinkDirectory mais cela ne réduira pas la taille du fichier. Et les données résident toujours dans le fichier. Le cadre ne sera tout simplement pas accessible pour un spectateur bien élevé.

Un autre moyen consiste à copier des images pertinentes à une nouvelle image. Vous pouvez commencer par jouer avec l'utilitaire TiffCP pour cela. Ensuite, vous pouvez jeter un coup d'œil au code source de l'utilitaire.

Veuillez noter que la compression OJPEG est prise en charge en mode lecture seule uniquement. Vous ne serez pas en mesure de copier les données d'image sans décompresser et recompresser à nouveau. Ce processus peut être déficitaire ou sans perte. Un processus sans perte produira probablement des fichiers plus gros.