Pages: 1
- Sujet précédent - [ArcGis Desktop 10.1] Génération d'une mise en page pdf automatique - Sujet suivant
#1 Mon 28 January 2013 17:01
- frtou
- Participant actif
- Lieu: Cergy
- Date d'inscription: 6 Sep 2005
- Messages: 71
[ArcGis Desktop 10.1] Génération d'une mise en page pdf automatique
Bonjour à tous,
Je suis en train de créer une interface utilisateur dans arcgis desktop.
Je voudrais pouvoir créer un bouton qui me génère un fichier pdf, si possible, avec une mise en page prédéfinie notamment échelle, légende....
Le soucis, c'est que la mise en page ne doit pas être celle apparaissant dans la projet arcgis.
J'ai bien pensé créer un un autre projet mxd avec cette mise en page, mais je ne sais pas automatiser la génération du pdf.
Quelqu'un a des pistes ?
Merci d'avance.
Cordialement,
Franck
Hors ligne
#2 Wed 30 January 2013 23:24
- Kevin Jousseaume
- Participant assidu
- Lieu: Nanterre, région parisienne
- Date d'inscription: 20 Mar 2006
- Messages: 217
Re: [ArcGis Desktop 10.1] Génération d'une mise en page pdf automatique
Bonsoir,
La réponse va dépendre du langage de développement que vous choisissez.
Si vous développez en .NET, je vous suggère de regarder ce post, il y a un extrait de code qui devrait vous intéresser si vous développez
http://gis.stackexchange.com/questions/ … ave-as-jpg
Les éléments importants :
- l'utilisation de l'interface IExportPDF
- l'utilisation d'un mxd modèle (partie non décrite dans le code car passé en paramètre de la fonction)
Je n'ai pas testé ce code mais il me semble valide après une lecture rapide.
Si vous développez en Python, il faudra utiliser la librairie arcpy.mapping, plus précisément la méthode ExportToPDF. Vous pourrez trouver des informations dans ces liens :
- http://help.arcgis.com/en/arcgisdesktop … 0027000000
- http://geochalkboard.wordpress.com/2010 … y-mapping/
Cordialement,
Kevin
Dernière modification par Kevin Jousseaume (Wed 30 January 2013 23:26)
Hors ligne
#3 Thu 31 January 2013 08:39
- Kevin Jousseaume
- Participant assidu
- Lieu: Nanterre, région parisienne
- Date d'inscription: 20 Mar 2006
- Messages: 217
Re: [ArcGis Desktop 10.1] Génération d'une mise en page pdf automatique
Bonjour,
En complément, si le language Java ne vous effraie pas, je ne peux que vous conseiller de regarder le code source de l'excellent Web service d'impression développé par Tom Schuller. Ce code est accessible ici : http://bitbucket.schuller.lu/pchprintsoe/src
Ce Web service est basé justement par la création d'un fichier MXD temporaire contenant des services cartographiques et des éléments cartographiques (images, échelle, etc.) chargés à la volée.
Vous trouverez ainsi une fonction qui devrait vous intéresser ici : http://bitbucket.schuller.lu/pchprintso … ?at=master
Code:
public String exportMapToMxdFile(SOELogger logger, String exportFileName, Map map) throws IOException { if (!exportFileName.endsWith(".mxd")) exportFileName = exportFileName + ".mxd"; logger.debug(TAG, "exportMapToMxdFile.exportFileName: " + exportFileName); File outFile = new File(exportFileName); logger.debug(TAG, "exportMapToMxdFile.outFile: " + outFile); if (outFile.exists()) { logger.debug(TAG, "exportMapToMxdFile.EXISTS.outFile: " + outFile); boolean deleted = outFile.delete(); logger.debug(TAG, "exportMapToMxdFile.deleting.exportFileName: " + deleted); } logger.debug(TAG, "exportMapToMxdFile.creatingNewMapDocument"); MapDocument mapDocument = new MapDocument(); logger.debug(TAG, "exportMapToMxdFile.mapDocument: " + mapDocument); mapDocument.esri_new(exportFileName); mapDocument.replaceContents(map); mapDocument.setActiveView(map); mapDocument.setComments("developed by tom@schuller.lu"); mapDocument.setDocumentTitle("generated by PChPrintSOE"); mapDocument.setSubject("generated by PChPrintSOE"); logger.debug(TAG, "exportMapToMxdFile.saving.exportFileName: " + exportFileName); mapDocument.save(false, false); mapDocument.close(); logger.debug(TAG, "exportMapToMxdFile.DONE.exportFileName: " + exportFileName); return exportFileName; }
Cette fonction crée un nouveau MXD et importe son contenu à partir d'un objet Map qui n'est autre qu'un IActiveView. Exemple d'appel de cette fonction ici :http://bitbucket.schuller.lu/pchprintso … ?at=master
Code:
private String exportViewToFile(String exportFileName, PchPrintOutput printOutput, IActiveView activeView, boolean gpTask) throws IOException { String mxdFileName = "?"; if (GENERATE_ALWAYS_MXD || printOutput.getFormat().equalsIgnoreCase("mxd")) { try { if (activeView instanceof Map) { mxdFileName = mxdUtils.exportMapToMxdFile(logger, exportFileName, (Map) activeView); } else if (activeView instanceof PageLayout) { mxdFileName = mxdUtils.exportLayoutToMxdFile(logger, exportFileName, (PageLayout) activeView); } else { logger.error(TAG, "\n\n\n\nUnHandled exportViewToFile on IActiveView: " + activeView); return mxdFileName; } } catch (Exception ex) { logger.error(TAG, "PrintTask.exportViewToFile.generateMXD.Exception", ex); ex.printStackTrace(); } } [...]}
Hors ligne
Pages: 1
- Sujet précédent - [ArcGis Desktop 10.1] Génération d'une mise en page pdf automatique - Sujet suivant