Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog
3 mars 2016 4 03 /03 /mars /2016 13:22

Pdf et autocad

Si le driver dwg2pdf a été une révolution, la version 2016 à encore amélioré l’export pdf en rendant possible, par exemple l’export d’hyperliens.

Pour ceux qui n’ont pas 2016, ils pourront toujours utiliser cette astuce que j’avais présenté en 2010

Pour le problème de la suppression des zones blanches, vous trouver ce qu’il vous faut avec cette solution de VincenTP

Qu’est-ce-qui manque encore ?

Autocad ne permet toujours pas d’exporter des formulaires, c’est à dire des zones de texte, des cases à cocher, des boutons avec des javascripts …

L’idée de base

Un peu comme dans la solution développée pour les hyperliens, créer une entité qui servira de marqueur pour un post traitement.

Le post traitement sera un  exécutable qui transformera le pdf

Quels types de marqueurs ?
  • Un rectangle dans un calque $CheckBox deviendra un composant Checkbox
  • Ou un texte du style $CB servira pour dimensionner un checkbox
En utilisant quelle librairie ?
Acrobat

Apparemment les anciennes versions d’acrobat reader étaient livrées avec une interface com, AcroPDFLib. Celle-ci ne permettait que la visualisation ou l’impression, mais elle n’est plus déployée avec les dernières versions d’acrobat

Pdf architect

A ma connaissance, aucune dll de pdf architect n’est reconnue comme une référence valable

Ghostscript

Il y a bien un projet d’utilisation de ghostscript en .net, mais au final, c’est une interface net pour passer des arguments en ligne de commande à ghostscrip

PdfClown

Une vraie librairie pour .net, avec des exemples simples : je pars la dessus

Installer pdf clown et ses exemples

Il suffit de décompresser l’archive dans le répertoire projet. Ne pas oublier d’ajouter l’archive « bugfix snapshot: source code » , en écrasant les fichier du même nom

Puis pour essayer les exemples, il faut lancer une 1ère fois le run.bat, ensuite on pourra directement lancer PDFClownCLISamples.exe

Le principe :

Les  fichiers  sources sont dans :

C:\Users\Gerald\Documents\Visual Studio 2013\Projects\PDFClown\main\res\samples\input

Les fichiers  transformés dans:

C:\Users\Gerald\Documents\Visual Studio 2013\Projects\PDFClownV2\dotNET\pdfclown.samples.cli\output

Ajouter des pdf personnels pour les tests:

Il suffit de les placer dans input/pdf, ils seront automatiquement reconnus

Créer de nouveaux programmes de test

Par un système que je ne connais pas, chaque .cs est ajouté à un menu (il faut qu'il ait  le même namespace, et un nom de classe unique) il suffit de lancer le débogage, qui ouvre une fenêtre dos, où l’on choisit le numéro du programme que l'on veut déboguer.

Première tentative : Repérer une entité par son calque

 

C’était ma 1ère idée, un rectangle dans un calque $CheckBox deviendrait un composant Checkbox

Je suis donc parti de contentscanningsample, et je l’ai modifié

Avec cette version on a un scan total du contenu, mais impossible de trier par le calque

J’ai fait des tests à partir de LayerEditingSample.cs, mais sans succès.

La méthode que décrit l’auteur pour identifier un calque (avec MarkedContent

)  ne marche pas chez moi

On trouve sur le site de pdf clown un exemple en vb, que je n’ai pas encore réussi à décortiquer : son auteur en semble satisfait

Deuxième tentative : Repérer une entité par une chaine de caractère

C’est de loin la plus fructueuse.

Je suis parti de l’exemple TextHighlightSample.cs, que j’ai adapté à mon besoin sous TextHighlightSampleGx.cs

Le principe est simple, je cherche le texte .x' (qui a l’avantage de former un carré, et qui a peu de chance d’être utilisé dans une phrase courante

J’en extrais une box, que je transforme en checkbox

Mon idée de départ était que je peux identifier la checkbox (pour un rapport ou une action) en commençant avec le texte .x’, et en suivant avec toute info utile : « .x’ChoixN°1_Oui » par exemple

Dans mon exemple de code, j’ai ajouté également un javascript sur action

Problèmes principaux
  • Les pdf générés à partir d’Autocad créent des textes sous forme graphique sans raisons apparente, donc on est pas sûr que tous ses textes soient exportés en tant que text dans le pdf
  • Les textes des pdf générés à partir d’Autocad ne sont pas toujours reconnus par pdf clown

Illustration en utilisant l’exemple TextInfoExtractionSample :

 

Les textes graphique sont surlignésLes textes graphique sont surlignés

Les textes graphique sont surlignés

Figure 1 les textes graphique sont surlignés

Figure 2 Les textes non reconnus sont surlignés

Problèmes secondaires

Certaines entités, bien que non concernées par le traitement, peuvent disparaitre ou changer de couleur

 

Dans cet exemple, on voit que les regards 1 à 4 on leur étiquette .x’ s’est convenablement transformée en checkbox, mais la vanne 1 est passée du noir au cyan …

Conclusion

Malgré des débuts prometteurs, je ne suis pas arrivé à mes fins avec pdfclown

Il me reste à explorer plus avant la sélection par calque, mais d’autres écueils,  comme la disparition d’entités, restent à redouter.

Pdfclown annonce depuis 1an une version 0.2.0 très prometteuse, notamment pour la recherche par calques.

Il faut espérer qu’elle sorte rapidement

G-EAUX

Partager cet article
Repost0

commentaires

J
J’utilise la version 2016 d’Autocad en ce moment et des vidéos sur http://www.alphorm.com/tutoriel/formation-en-ligne-autocad-2016-perfectionnement m’ont aidé à le manipuler et je dois dire que ce billet m’intéresse vraiment. Merci pour ce partage.
Répondre