none
Convertion de documents Visio en PDF dans un workflow RRS feed

  • Question

  • Bonjour,

    Je développe actuellement un Workflow permettant de convertir un document Visio en fichier PDF, mon code de fonctionne parfaitement bien dans une application console mais lorsque je l'implémente dans mon workflow j'obtient une exception sans aucun message.

    Voici l'exception :

    L'exception System.Runtime.InteropServices.COMException n'a pas été gérée par le code utilisateur
      Message=

    Une exception s'est produite.
      Source=Microsoft Visio
      ErrorCode=-2032463768
      StackTrace:
           à Microsoft.Office.Interop.Visio.DocumentsClass.OpenEx(String FileName, Int16 Flags)
           à WorkflowVisioToPDF.WorkflowVisioToPDF.WorkflowVisioToPDF.CheckDocument(String siteURL, String VisioListName, String PDFListName)
           à WorkflowVisioToPDF.WorkflowVisioToPDF.WorkflowVisioToPDF.<CallExecute_ExecuteCode>b__0()
           à Microsoft.SharePoint.SPSecurity.<>c__DisplayClass4.<RunWithElevatedPrivileges>b__2()
           à Microsoft.SharePoint.Utilities.SecurityContext.RunAsProcess(CodeToRunElevated secureCode)
      InnerException:

    Voici mon code :

                            Visio.Document vxdDoc = default(Visio.Document);
    
                            Visio.InvisibleApp VisioApp = new Visio.InvisibleApp();
                            VisioApp.Settings.ShowFileOpenWarnings = false;
                            VisioApp.Settings.ShowFileSaveWarnings = false;
    
                            vxdDoc = VisioApp.Documents.OpenEx("C:\\test.vdw", 130);
    
                            vxdDoc.ExportAsFixedFormat(Visio.VisFixedFormatTypes.visFixedFormatPDF, "C:\\test.pdf", Visio.VisDocExIntent.visDocExIntentScreen, Visio.VisPrintOutRange.visPrintAll, 1, -1, false, true, true, true, false, Type.Missing);
    
                            VisioApp.Quit();

    Si quelqu'un a une idée ?

    Merci d'avance !

    mardi 17 avril 2012 08:36

Réponses

  • Bonjour Maxime51100,

    Vous utilisez l'API Microsoft.Office.Interop.Visio.

    Cette API est prévue pour fonctionner dans un environnement client et non serveur. C'est pourquoi votre code fonctionne trés bien sur votre poste de travail dans une console application mais pas dans un workflow qui s'execute sur un serveur SharePoint.

    Vous trouverez toute la documentation a ce sujet à cette adresse: Considérations sur l'automatisation côté serveur de Microsoft Office - http://support.microsoft.com/kb/257757.

    L'utilisation de cette API impliquerait l'installation de Visio sur le serveur; cela n'est pas recommandé. De plus votre code contient des références vers le systeme de fichier du serveur (i.e. "C:\\test.vdw"). Cela non plus n'est pas recommandé (pour ne pas dire interdit).

    En bref, je pense qu'il vous faut trouver une autre approche:

    - Vous pourriez essayez un des outils tier (et peut etre payant) de converssion de documents.

    - Ou encore regardez si vous ne pouvez pas répondre aux besoins de votre client en utilisant une autre approche.

    Cordialement,

    Ludovic Caffin

    • Proposé comme réponse Patrice ScribeMVP mardi 24 avril 2012 16:32
    • Marqué comme réponse Pascal P mardi 24 avril 2012 18:27
    mardi 24 avril 2012 16:28

Toutes les réponses

  • Petit UP !

    jeudi 19 avril 2012 14:00
  • Bonjour Maxime51100,

    Vous utilisez l'API Microsoft.Office.Interop.Visio.

    Cette API est prévue pour fonctionner dans un environnement client et non serveur. C'est pourquoi votre code fonctionne trés bien sur votre poste de travail dans une console application mais pas dans un workflow qui s'execute sur un serveur SharePoint.

    Vous trouverez toute la documentation a ce sujet à cette adresse: Considérations sur l'automatisation côté serveur de Microsoft Office - http://support.microsoft.com/kb/257757.

    L'utilisation de cette API impliquerait l'installation de Visio sur le serveur; cela n'est pas recommandé. De plus votre code contient des références vers le systeme de fichier du serveur (i.e. "C:\\test.vdw"). Cela non plus n'est pas recommandé (pour ne pas dire interdit).

    En bref, je pense qu'il vous faut trouver une autre approche:

    - Vous pourriez essayez un des outils tier (et peut etre payant) de converssion de documents.

    - Ou encore regardez si vous ne pouvez pas répondre aux besoins de votre client en utilisant une autre approche.

    Cordialement,

    Ludovic Caffin

    • Proposé comme réponse Patrice ScribeMVP mardi 24 avril 2012 16:32
    • Marqué comme réponse Pascal P mardi 24 avril 2012 18:27
    mardi 24 avril 2012 16:28