lundi 24 juin 2013

Création d'un module convertissant un fichier PDF en un fichier TIF

Dans ce nouvel article, je vais vous présenter un module que j’ai crée afin de répondre à un besoin exprimé par un certain nombre de clients. Mon module permet de convertir un fichier PDF en un fichier TIF ou JPEG sous ZwCAD.


Pour pouvoir réaliser la conversion d’un fichier PDF en un autre format, j’ai utilisé le SDK GFL développé par la société XnSoft.




Vous pouvez télécharger le SDK en suivant le lien suivant: http://www.xnview.com/fr/GFL/#downloads


Cependant pour pouvoir convertir des fichiers à l’aide de ce SDK, il faut installer les librairies Ghotscript. Pour ceux qui ne connaissent pas Ghostscript, il s’agit     d’un interprète qui offre la possibilité de convertir des fichiers PostScript vers de nombreux formats raster, en permettant de les visualiser et de les imprimer.
Il permet de réaliser les mêmes types de conversion pour les fichiers PDF.




Ces logiciels sont totalement gratuit.


Maintenant que nous avons tout les outils installés, nous allons voir comment permettre la conversion d’un fichier PDF en un fichier TIF.


Tout d’abord, nous allons créer une boite de dialogue semblable à celle-ci:




Dans ma classe principale, je définis juste des options à ma boite de dialogue:


Class Program
       <CommandMethod("PDFTOTIF")> _
       Public Sub Main()
           Dim dlName As String = "Selectionnez votre fichier PDF"
           Dim doc As Document = Application.DocumentManager.MdiActiveDocument
           Dim db As Database = doc.Database
           Dim ed As Editor = doc.Editor
           Dim dlg As recherchepdf = New recherchepdf()
           dlg.ComboBoxCompression.Items.Add("TIF")
           dlg.ComboBoxCompression.Items.Add("JPEG")
           ZcadAp.ShowModalDialog(dlg)
       End Sub
    End Class


Ensuite, je configure ma fenêtre parcourir à partir de ma boite de dialogue. Lors du clic sur le bouton parcourir, je souhaite que ma fenêtre souvre directement dans le disque “C:”, et qu’il ouvre seulement des fichiers PDF.


    Private Sub Button_Parcourir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Parcourir.Click
       Dim doc As Document = ZwSoft.ZwCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument
       Dim db As Database = doc.Database
       Dim ed As Editor = doc.Editor
       Dim selectedFile As String = String.Empty
       Dim ofd As OpenFileDialog = New OpenFileDialog()
       ofd.InitialDirectory = "c:\"
       ofd.Filter = "pdf files (*.pdf)|*.pdf"
       ofd.FilterIndex = 2
       ofd.RestoreDirectory = True
       If ofd.ShowDialog() = Windows.Forms.DialogResult.OK Then
           selectedFile = ofd.FileName
       End If
       If (selectedFile IsNot Nothing) Then
' Pour insérer l'emplacement du fichier choisi dans la TextBox ‘selectedFile’
           TextBoxChemin.Text = selectedFile
       End If
    End Sub


Désormais nous allons voir comment utiliser le SDK. En un premier temps, n’oublliez d’ajouter la référence à la dll ‘GflAx.dll’ à partir de l’onglet ‘COM’ ou en allant la chercher dans le dossier ‘GflSDK’.





Dim chemin As String = Mid(Me.TextBoxChemin.Text, 1, Me.TextBoxChemin.TextLength - 4)


           Dim g As New GflAx.GflAx
           g.Page = 1
           g.EpsDpi = FormatNumber(Convert.ToInt16(dlg.TextBoxDPI.Text))
           g.LoadBitmap(chemin & ".pdf")
           Select Case Me.ComboBoxCompression.SelectedItem.ToString
               Case "TIF"
                   g.SaveFormat = GflAx.AX_SaveFormats.AX_TIFF
                 g.EnableLZW = True
                   g.UseTransparency = True


                   g.SaveBitmap(chemin & ".tif")
                   chemin = Replace(chemin, "\", "\\")
                   doc.SendStringToExecute("(command ""_.-image"" ""_attach"" """ & chemin & ".tif"") ", True, False, False)
               Case "JPEG"
                   g.SaveFormat = GflAx.AX_SaveFormats.AX_JPEG
                   g.SaveBitmap(chemin & ".jpg")
                   chemin = Replace(chemin, "\", "\\")
                   doc.SendStringToExecute("(command ""_.-image"" ""_attach"" """ & chemin & ".jpg"") ", True, False, False)




Pour expliqué, je créer tout d’abord une variable ‘chemin’ qui va contenir le chemin du fichier PDF mais sans l’extension PDF: car je souhaite enregistrer le fichier TIF dans le même dossier que le fichier PDF (un peu plus tard dans le code).


    g.SaveBitmap(chemin & ".tif")


Ainsi je crée un fichier TIF portant le même nom que le fichier PDF et dans le même dossier.


Ensuite, je crée une nouvelle instance d’une classe du SDK utilisé.
Dim g As New GflAx.GflAx


Cette instance me sert donc à définir les options de mon fichier TIF: le fichier PDF à convertir, le fichier TIF à générer, le nombre de DPI (ici je convertis le nombre contenu dans ma textbox en entier afin d’être sur qu’il soit bien reconnu).


Après, je filtre le choix du format en fonction de l’élément sélectionné dans le ComboBox: soit je génère un fichier TIF soit un fichier JPEG.


Enfin, je lance une commande Lisp, qui va charger le fichier qui lui est passé en paramètre.


Pour pouvoir renseigner le chemin du fichier TIF ou JPEG, vous devez remplacer chaque \ par \\ : \\ sont interpretés comme \. C’est pourquoi j’ai utilisé la ligne de code suivante:


chemin = Replace(chemin, "\", "\\")

Maintenant, nous avons finis de coder, il ne nous reste plus qu’à tester le module.



Après validation de la fenêtre, vous avez accès au dessin ZwCAD où l'on vous demande de renseigner le point d'insertion de l'image, la taille de l'image, un facteur d'échelle et l'angle de rotation.

Après avoir validé ces données, nous avons notre image qui s'affiche à l'écran:



Aucun commentaire:

Enregistrer un commentaire