none
Transcrire un PDF en un format image

    Question

  • Bonjour, je souhaiterai savoir si il était possible de convertir un pdf en une image ou un fichier tiff en pdf. Tout ça en code vb.

    J'ai bien regardé sur google mais aucun code ne fonctionne et la je desespére complétement.


    Cordialement, maxkun ;)
    mercredi 1 février 2012 09:01

Réponses

  • Pour les types non reconnus, il faut ajouter une référence vers la DLL correspondante après avoir installé le produit. VB est "juste" un langage de programmation qui fournit la "glue" (if, select case, function, sub) entre divers éléments.

    Tous les éléments un tant soit peu fonctionnel (envoi de mail, ouverture de fichier etc...) sont fournis par des bibliothèques soit fournies avec le produit (.NET Framework) soit fournies par des fournisseurs tiers (ici l'auteur d'une bibliothèque de fonctions permettant de manipuler les fichiers PDF).

    Il faut donc ajouter une référence vers la DLL correspondante (dans le menu "projet", "références" et sélectionnez la DLL voulue).

    Il faut aussi que les produits soient installés. CreateObject("AcroExch.App") crée une instance d'une application et cette application doit être installée sur le poste pour que cela marche.

    Donc si on part sur PDFRasterizer, avez vous bien ajouté la référence vers cette bibliothèque ?

    Accessoirement je ne vois pas de type appelé PDFRasterizer. Le document PDF serait plutôt géré via le type TallComponents.PDF.Rasterizer.Document ? Avez-vous essayé les exemples ?

     

     


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".


    mercredi 1 février 2012 14:24
    Modérateur
  • ok chez moi donc avec qq chose comme :

            ' Noms
            Dim Desktop As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
            Dim PDF As String = IO.Path.Combine(Desktop, "Test.pdf")
            Dim Img As String = IO.Path.Combine(Desktop, "Test.tiff")
            ' Streams
            Dim pdfStream As System.IO.FileStream = New System.IO.FileStream(PDF, System.IO.FileMode.Open)
            Dim imgStream As New System.IO.FileStream(Img, System.IO.FileMode.Create)
            ' Conversion
            Dim doc As New TallComponents.PDF.Rasterizer.Document(pdfStream)
            Dim options As New TallComponents.PDF.Rasterizer.ConvertToTiffOptions
            doc.ConvertToTiff(imgStream, options)
            pdfStream.Close()
            imgStream.Close()
    

    avec un fichier Test.pdf sur mon bureau.


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    • Proposé comme réponse Ciprian Duduiala jeudi 2 février 2012 08:18
    • Marqué comme réponse maxkun jeudi 2 février 2012 10:40
    mercredi 1 février 2012 17:24
    Modérateur
  • Ok donc enlever la référence actuelle et ajouter celle qui se trouve dans le dossier "Microsoft.NET 4.0 Client Profile". Le "Client Profile" est la version de base de .NET qui ne comporte que ce qui est utilisé sur un client (notamment pas la partie Web). Apparemment ce produit vient en deux versions, une qui se contente de cette version réduite et une autre qui nécessite le framework "complet".


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    • Marqué comme réponse maxkun jeudi 2 février 2012 10:40
    jeudi 2 février 2012 09:33
    Modérateur

Toutes les réponses

  • Bonjour,

    Pour PDF vers TIFF, voir peut-être http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/447b4310-2d9f-4307-b648-775f6d091ab1/ pour des liens vers différentes bibliothèques ou encore imprimer le PDF vers une imprimante comme http://sourceforge.net/projects/imageprinter/ depuis votre application.

    Pour TIFF vers PDF, je me souviens avoir vu http://sourceforge.net/projects/itextsharp/ qui permet de générer des fichiers PDF depuis une application .NET.

    Ou indiquer le problème que vous rencontrez avec l'une des solutions que vous avez commencé à tester ?

    Voir peut-être aussi si vous trouvez des informations dans un forum sur le format PDF. Il n'y a à priori rien en standard en .NET donc le problème pour l'instant serait déjà de sélectionner une bibliothèque qui répondrait à vos besoins de traitement de fichiers PDF plus qu'un problème de programmation VB.

     


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    mercredi 1 février 2012 12:29
    Modérateur
  • A vrai dire j'ai testé plusieurs codes mais aucun ne fonctionnaient, certains type d'objet n'était pas reconnu (alors que la source du code que j'ai copié était bien du vb) ou alors la transition c#/vb passait mal (certaines fonctions et certains type d'objet non reconnu).

    Par exemple :

    Dim theDoc As New Doc()
    

    Ici le type Doc n'est pas reconnu.

    Dim oPDF As New Acrobat.AcroPDDoc
            Dim i As Short
    
            oPDF.Open("C:\Documents and Settings\mdorget\Mes documents\fax_maxime4\fax_maxime3\fax_maxime\bin\Debug\faxErreur\test.pdf")
    
            i = Acrobat.PDSaveFlags.PDSaveFull
    
            oPDF.Save(i, "C:\Documents and Settings\mdorget\Mes documents\fax_maxime4\fax_maxime3\fax_maxime\bin\Debug\faxErreur\test.jpeg")
    


    Ici j'ai l'erreur suivant a la déclaration de l'objet oPDF : La récupération de la fabrique de classes COM pour le composant avec le CLSID {FF76CB60-2E68-101B-B02E-04021C009402} a échoué en raison de l'erreur suivante : 80040154 Classe non enregistrée (Exception de HRESULT : 0x80040154 (REGDB_E_CLASSNOTREG))

     

    Dim MyPdf As PdfRasterizer = New PdfRasterizer("C:\DocumentA.pdf")
    

    Ici pdfrasterizer n'est pas connu.

    objAcro = CreateObject("AcroExch.App")
    

    Et pour cette ligne j'ai cette erreur : Impossible de créer le composant ActiveX.

    Donc voila, tout les code ici sont issu s de différentes méthode mais a chaque fois j'ai une erreur et je sais pas du tout comment les corrigés...


    Cordialement, maxkun ;)
    mercredi 1 février 2012 12:59
  • Bonjour,

    Apparemment le problème est qu'il faut déjà disposer d'une version pro du Reader et peut-être même du SDK d'Adobe.

    Pour info, je suis tomber sur ceci http://www.soliddocuments.com/fr/products.htm?product=SolidFramework
    Il y a une exemple d'utilisation ici : http://www.codeproject.com/Articles/42287/Convert-PDF-pages-to-image-files-using-the-Solid-F

    Malheureusement l'exemple est en C#.

    Bien à vous.


    ZGuideTV.NET - administrator/developer
    mercredi 1 février 2012 13:44
  • Et bien j'ai trouvé une petite appli en vb qui fonctionne, j'ai donc essayé de prendre le code pour mon appli mais ça ne marche pas (et oui encore...).

    Donc ça ne peut venir que des bibliothèques. J'ai chopper le programme sur ce lien : http://www.tallcomponents.com/pdfrasterizer3-directdownload.aspx?download=200995. Il y a plusieurs version de code, c#/vb et suivant les différentes version de visualstudio.

    Pour ma part j'ai le 2010, si vous avez 5 min, essayé de copier le code dans un nouveau projet et regarait les erreurs, mais je pense que cela vient des bibliothèques.


    Cordialement, maxkun ;)
    mercredi 1 février 2012 14:15
  • Pour les types non reconnus, il faut ajouter une référence vers la DLL correspondante après avoir installé le produit. VB est "juste" un langage de programmation qui fournit la "glue" (if, select case, function, sub) entre divers éléments.

    Tous les éléments un tant soit peu fonctionnel (envoi de mail, ouverture de fichier etc...) sont fournis par des bibliothèques soit fournies avec le produit (.NET Framework) soit fournies par des fournisseurs tiers (ici l'auteur d'une bibliothèque de fonctions permettant de manipuler les fichiers PDF).

    Il faut donc ajouter une référence vers la DLL correspondante (dans le menu "projet", "références" et sélectionnez la DLL voulue).

    Il faut aussi que les produits soient installés. CreateObject("AcroExch.App") crée une instance d'une application et cette application doit être installée sur le poste pour que cela marche.

    Donc si on part sur PDFRasterizer, avez vous bien ajouté la référence vers cette bibliothèque ?

    Accessoirement je ne vois pas de type appelé PDFRasterizer. Le document PDF serait plutôt géré via le type TallComponents.PDF.Rasterizer.Document ? Avez-vous essayé les exemples ?

     

     


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".


    mercredi 1 février 2012 14:24
    Modérateur
  • Et bien j'ai une dll qui se nomme : TallComponents.PDF.Rasterizer.dll

    Donc je pense que c'est la bonne.

    J'ai suivi vos conseils, en faisant parcourir et j'ai cherché cette dll pour l'ajouter au projet, donc ça me supprime mes erreurs, or quand je compile, bah ça revient, comme si je n'avais pas ajouter la référence.


    Cordialement, maxkun ;)
    mercredi 1 février 2012 14:34
  • Avez-vous examiné le code présent dans Code Samples\VB.NET\ConvertToTiff ?

    Toujours indiquer explicitement le problème SVP pour être sûr du point où vous en êtes ? Pouvez vous confirmer que vous n'utilisez plus la classe PDFRasterizer ? Cette classe n'existe pas (je pense que c'est juste le nom du produit !).

    L'exemple ci-dessus utilise une classe Document qui se trouve dans l'espace de noms TallComponents.PDF.Rasterizer.

     

     
    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    mercredi 1 février 2012 17:09
    Modérateur
  • ok chez moi donc avec qq chose comme :

            ' Noms
            Dim Desktop As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
            Dim PDF As String = IO.Path.Combine(Desktop, "Test.pdf")
            Dim Img As String = IO.Path.Combine(Desktop, "Test.tiff")
            ' Streams
            Dim pdfStream As System.IO.FileStream = New System.IO.FileStream(PDF, System.IO.FileMode.Open)
            Dim imgStream As New System.IO.FileStream(Img, System.IO.FileMode.Create)
            ' Conversion
            Dim doc As New TallComponents.PDF.Rasterizer.Document(pdfStream)
            Dim options As New TallComponents.PDF.Rasterizer.ConvertToTiffOptions
            doc.ConvertToTiff(imgStream, options)
            pdfStream.Close()
            imgStream.Close()
    

    avec un fichier Test.pdf sur mon bureau.


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    • Proposé comme réponse Ciprian Duduiala jeudi 2 février 2012 08:18
    • Marqué comme réponse maxkun jeudi 2 février 2012 10:40
    mercredi 1 février 2012 17:24
    Modérateur
  • Et bien en fait j'ai ces lignes là au dessus de mon main :

     

    Imports TallComponents.PDF.Rasterizer.Document
    Imports TallComponents.PDF.Rasterizer.Configuration
    Imports TallComponents.PDF.Rasterizer
    

     


    J'ai bien bien inclus TallComponent au programme, et j'ai fait de même en rajoutant la référence pointant sur TallComponents.PDF.Rasterizer.dll

    Donc si je compile pas, ça me met aucune erreur, par contre quand je compile j'ai ces 3 erreurs :

    Erreur    12    Type 'Document' non défini.

    Erreur    11    Type 'TallComponents.PDF.Rasterizer.ConvertToTiffOptions' non défini.

    Erreur    10    Type 'TallComponents.PDF.Rasterizer.Document' non défini.

    Alors que j'ai bien la référence qui pointe sur la dll. J'avoue que la je ne comprends pas trop, surtout que j'ai reprit votre code, donc cela devrait fonctionnait.

    J'ai aussi cet avertissement : 

     Impossible de résoudre l'assembly référencé "TallComponents.PDF.Rasterizer, Version=3.0.72.1, Culture=neutral, PublicKeyToken=76bf2dedaa68ccb5, processorArchitecture=MSIL", car il dépend de "System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" qui ne figure pas dans le Framework ciblé actuel ".NETFramework,Version=v4.0,Profile=Client". Supprimez les références aux assemblys qui ne se trouvent pas dans le Framework ciblé ou reciblez votre projet.

     


    Cordialement, maxkun ;)

    • Modifié maxkun jeudi 2 février 2012 07:45
    jeudi 2 février 2012 07:22
  • Ok donc enlever la référence actuelle et ajouter celle qui se trouve dans le dossier "Microsoft.NET 4.0 Client Profile". Le "Client Profile" est la version de base de .NET qui ne comporte que ce qui est utilisé sur un client (notamment pas la partie Web). Apparemment ce produit vient en deux versions, une qui se contente de cette version réduite et une autre qui nécessite le framework "complet".


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    • Marqué comme réponse maxkun jeudi 2 février 2012 10:40
    jeudi 2 février 2012 09:33
    Modérateur
  • Merci ça marche nickel, par contre j'ai une petite question, quand on converti le pdf en tiff, on a des écriture qui s'ajoute sur le tiff avec la référence de la dll, on peut l'enlever ou c'est impossible?
    Cordialement, maxkun ;)
    jeudi 2 février 2012 10:39
  • En achetant le produit ! C'est une version d'évaluation qui affiche donc un filigrane. Si vous avez une license, il y a généralement une fonction à appeler pour indiquer le fichier licence au produit ce qui fera disparaitre le filigrane.

    Sinon il vous choisir qq chose de gratuit (je ne connais pas spécialement les librairies disponibles, je me souviens avoir entendu parler de GhostScript qui est en ligne de commande).


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    jeudi 2 février 2012 10:51
    Modérateur
  • Ok, bah je ne suis pas trop chaud pour me refaire du code, je verrais avec mes supérieurs si je peux appliquer le programme quand même.

    En tout cas merci à vous pour m'avoir aider :)


    Cordialement, maxkun ;)
    jeudi 2 février 2012 10:55
  • Bonjour, je relance le sujet pour savoir si on peut convertir des pdf en image en utilisant la bibliothéque itextsharp.

    Si oui, comment fait-on?


    Cordialement, maxkun ;)

    lundi 13 février 2012 10:41
  • Bonjour,

    "iText can't convert PDF to an image, nor can iText be used to print a PDF." http://support.itextpdf.com/node/21

    Bien à vous.


    ZGuideTV.NET - administrator/developer

    lundi 13 février 2012 23:06
  • Merci

    Cordialement, maxkun ;)

    mardi 14 février 2012 07:03