Problème d'extraction lors d'une convertion de document
-
vendredi 28 mai 2010 07:53
Bonjour,
Je développe en ce moment avec VS2010 un workflow devant convertir (via le service word automation) un document Word en PDF après une approbation.
Mes bibliothèques doivent avoir le système d'extraction d'activé.
Mon problème est lors de la conversion d'un document possedant déjà une version PDF.
Je m'explique : la 1ère fois que je converti le document avec en nom "20100528", tous se passe bien. Si je veux convertir une nouvelle version de ce même document (avec le même nom), le workflow plante avec une exception sur l'extraction du document de destination.
J'ai donc essayé de l'extraire avant la conversion, mais je reçois une erreur sur la méthode job.AddFile me disant que le document est extrait et ne peut petre remplacé.
System.Exception: Le fichier de sortie «*32Processus dOprations PO/Sous Processus « Gestion des partenariats » (PO21)/20100527v0.2.pdf*» est extrait et ne peut pas être remplacé
Et si je n'extrait pas mon document, j'ai une erreur pendant la conversion me disant que le document doit être extrait avant d'être modifié.
Error uploading output file to Sharepoint document library. Microsoft.SharePoint.SPFileCheckOutException: Le fichier «*http://srv465/direction_qualite/32Processus dOprations PO/Sous Processus « Gestion des partenariats » (PO21)/20100527v0.1.pdf*» n'est pas extrait. Vous devez d'abord extraire ce document avant de le modifier.
Mon code :
private void convertDocument_ExecuteCode(object sender, EventArgs e) { SPListItem currentItem = workflowProperties.Item; // Verify the document added is a Word document // before starting the conversion. if (currentItem.Name.Contains(".docx") || currentItem.Name.Contains(".doc")) { // Create a Word Automation Services conversion job ConversionJob job = new ConversionJob("Word Automation Services"); // Specify conversion settings job.UserToken = workflowProperties.OriginatorUser.UserToken; if (workflowProperties.Site.SiteSubscription != null) job.SubscriptionId = workflowProperties.Site.SiteSubscription.Id; job.Settings.OutputFormat = SaveFormat.PDF; job.Settings.OutputSaveBehavior = SaveBehavior.AppendIfPossible; job.Name = "Publication Document"; // Add the file String fileUrl = workflowProperties.WebUrl + "/" + workflowProperties.ItemUrl; fileName = System.IO.Path.GetFileNameWithoutExtension(fileUrl); newFileName = DateTime.Now.ToString("yyyyMMdd") + "v" + currentItem.File.UIVersionLabel; String outputUrl = fileUrl.Replace(fileName, newFileName); /* SPListItemCollection items = workflowProperties.Web.Lists[workflowProperties.ListId].Items; for (int i = 0; i < items.Count; i++) { SPListItem item = items[i]; if (item.FileSystemObjectType == SPFileSystemObjectType.File) { if (item.File.Name.Contains(newFileName)) { item.File.CheckOut(); } } } */ job.AddFile(fileUrl, System.IO.Path.ChangeExtension(outputUrl, "pdf")); // Schedule the conversion job.Start(); // Save the conversion job ID jobId = job.JobId; } }
Merci pour tout aide.
Toutes les réponses
-
vendredi 28 mai 2010 14:19
Après moulte essai et prise de tête, j'ai trouvé la solution.
L'extraction du document doit en fait etre faite après le avoir ajouter le fichier à notre ConversionJob.private void convertDocument_ExecuteCode(object sender, EventArgs e) { currentItem = workflowProperties.Item; // Verify the document added is a Word document // before starting the conversion. if (currentItem.Name.Contains(".docx") || currentItem.Name.Contains(".doc")) { // Create a Word Automation Services conversion job ConversionJob job = new ConversionJob("Word Automation Services"); // Specify conversion settings job.UserToken = workflowProperties.OriginatorUser.UserToken; if (workflowProperties.Site.SiteSubscription != null) job.SubscriptionId = workflowProperties.Site.SiteSubscription.Id; job.Settings.OutputFormat = SaveFormat.PDF; job.Settings.OutputSaveBehavior = SaveBehavior.AppendIfPossible; job.Settings.UpdateFields = true; job.Name = "Publication Document"; // Add the file String fileUrl = workflowProperties.WebUrl + "/" + workflowProperties.ItemUrl; fileName = System.IO.Path.GetFileNameWithoutExtension(fileUrl); newFileName = DateTime.Now.ToString("yyyyMMdd") + "v" + currentItem.File.UIVersionLabel; String outputUrl = fileUrl.Replace(fileName, newFileName); job.AddFile(fileUrl, System.IO.Path.ChangeExtension(outputUrl, "pdf")); SPListItemCollection items = workflowProperties.Web.Lists[workflowProperties.ListId].Items; for (int i = 0; i < items.Count; i++) { SPListItem item = items[i]; if (item.FileSystemObjectType == SPFileSystemObjectType.File) { if (item.File.Name.Contains(newFileName)) { item.File.CheckOut(); } } } // Schedule the conversion job.Start(); // Save the conversion job ID jobId = job.JobId; } }

