Yanıt Convertion de documents Visio en PDF dans un workflow

  • 17 Nisan 2012 Salı 08:36
     
      Kod İçerir

    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 !

Tüm Yanıtlar

  • 19 Nisan 2012 Perşembe 14:00
     
     

    Petit UP !

  • 24 Nisan 2012 Salı 16:28
     
     Yanıt

    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