private OASResponse ConvertWordImmediately(OASModels.ConversionSettings settings, SPUserToken userToken) { OASResponse oasResponse = new OASResponse(); ConversionJobSettings set = FillWordConversionOptions(settings.Options); set.OutputFormat = SaveFormat.PDF; SyncConverter syncConv = new SyncConverter(ConfigurationManager.AppSettings["WASName"], set); if (userToken != null) { syncConv.UserToken = userToken; } byte[] input = Convert.FromBase64String(settings.Content); byte[] output; ConversionItemInfo convInfo = syncConv.Convert(input, out output); if (convInfo.Succeeded) { oasResponse.Content = Convert.ToBase64String(output); oasResponse.ErrorCode = OASErrorCodes.Success; } else { oasResponse.ErrorCode = OASErrorCodes.ErrFailedConvert; oasResponse.Message = convInfo.ErrorMessage; } return(oasResponse); }
static void Main(string[] args) { using (SPSite spSite = new SPSite("http://*****:*****@"<View Scope='Recursive'> <Query> <Where> <Or> <Contains> <FieldRef Name='File_x0020_Type'/> <Value Type='Text'>doc</Value> </Contains> <Contains> <FieldRef Name='File_x0020_Type'/> <Value Type='Text'>docx</Value> </Contains> </Or> </Where> </Query> </View>"; //Obtaining files from query result SPListItemCollection listItems = library.GetItems(query); if (listItems.Count > 0) { mailBody += "<b>Archivos de " + depto + "</b><br><br><ul>"; ConversionJobSettings jobSettings = new ConversionJobSettings(); jobSettings.OutputFormat = SaveFormat.PDF; SyncConverter pdfConversion = new SyncConverter("Word Automation Services", jobSettings); pdfConversion.UserToken = spSite.UserToken; foreach (SPListItem li in listItems) { string fileSource = (string)li[SPBuiltInFieldId.EncodedAbsUrl]; string fileDest = fileSource.Replace("docx", "pdf"); fileDest = fileDest.Replace("doc", "pdf"); fileDest = fileDest.Replace(depto, "Documentacion"); mailBody += "<li><b>Origen: </b>" + fileSource + "</li>"; mailBody += "<li><b>Destino: </b>" + fileDest + "</li><br>"; Console.Write("Origen: " + fileSource + "\n"); Console.Write("Dest: " + fileDest + "\n\n"); pdfConversion.Convert(fileSource, fileDest); } mailBody += "</ul><br><br>"; } //foreach depto try { MailMessage mail = new MailMessage(); SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com"); mail.IsBodyHtml = true; mail.From = new MailAddress("*****@*****.**"); mail.To.Add("*****@*****.**"); mail.Subject = "Lista de Archivos"; mail.Body = mailBody; SmtpServer.Port = 587; SmtpServer.Credentials = new System.Net.NetworkCredential("*****@*****.**", "******"); SmtpServer.EnableSsl = true; SmtpServer.Send(mail); Console.Write("Mail enviado"); } catch (Exception ex) { Console.Write(ex.ToString()); } } } }
private void WordDocsToConvertToPdf(SPList library, int ElementID) { //Perform a SPQuery that returns only Word Documents. SPQuery query = new SPQuery(); query.Folder = library.RootFolder; //Include all subfolders so include Recursive Scope. query.ViewXml = @"<View Scope='Recursive'> <Query> <Where> <Or> <Contains> <FieldRef Name='File_x0020_Type'/> <Value Type='Text'>doc</Value> </Contains> <Contains> <FieldRef Name='File_x0020_Type'/> <Value Type='Text'>docx</Value> </Contains> </Or> </Where> </Query> </View>"; //Get Documents // SPListItemCollection listItems = library.GetItems(query); SPListItem listitem = library.Items.GetItemById(ElementID); //Check that there are any documents to convert. // if (listItems.Count > 0) // { // foreach (SPListItem li in listItems) // { //Perform the conversion in memory first, therefore we require a MemoryStream. using (MemoryStream destinationStream = new MemoryStream()) { //Call the syncConverter class, passing in the name of the Word Automation Service for your Farm. SyncConverter sc = new SyncConverter(WASName); //Pass in your User Token or credentials under which this conversion job is executed. if (SPContext.Current != null) { sc.UserToken = SPContext.Current.Site.UserToken; } sc.Settings.UpdateFields = true; //Save format sc.Settings.OutputFormat = SaveFormat.PDF; //Convert to PDF by opening the file stream, and then converting to the destination memory stream. ConversionItemInfo info = sc.Convert(listitem.File.OpenBinaryStream(), destinationStream); var filename = Path.GetFileNameWithoutExtension(listitem.File.Name) + ".pdf"; if (info.Succeeded) { //File conversion successful, then add the memory stream to the SharePoint list. SPFile newfile = library.RootFolder.Files.Add(filename, destinationStream, true); } else if (info.Failed) { throw new Exception(info.ErrorMessage); } } // } // } }
public static bool ConvertDocument(SPListItem listItem, string fileFormat, string newFileName, bool isWorkflow, ActivityExecutionContext executionContext, WorkflowContext __Context, SPFolder folder, string settings, bool isImmediate) { ISharePointService wfService = null; if (executionContext != null) { wfService = executionContext.GetService <ISharePointService>(); } using (SPSite spSite = new SPSite(listItem.ParentList.ParentWeb.Url)) { using (SPWeb spWeb = spSite.OpenWeb()) { int i = listItem.Url.IndexOf("/"); var listUrl = listItem.Url.Remove(i + 1); var listItemUri = new Uri(listItem.Web.Url + "/" + listItem.Url); var listItemLibraryUri = new Uri(listItem.Web.Url + "/" + listUrl); var fileName = listItem.Name; var idx = fileName.LastIndexOf(".", StringComparison.Ordinal); if (string.IsNullOrEmpty(newFileName)) { newFileName = fileName.Replace(fileName.Substring(idx, fileName.Length - idx), "." + fileFormat); } else { if (isWorkflow) { newFileName = newFileName + fileName.Replace(fileName.Substring(idx, fileName.Length - idx), "." + fileFormat); } } try { var proxies = SPServiceContext.GetContext(spSite).GetProxies(typeof(WordServiceApplicationProxy)); if (proxies.Any()) { _proxy = proxies.First(); } else { var exception = new SPException(); throw exception; } #region ImmediateJob if (isImmediate) { SyncConverter immJob; if (isWorkflow) { immJob = new SyncConverter(_proxy.DisplayName) { UserToken = __Context.InitiatorUser.UserToken }; } else { immJob = new SyncConverter(_proxy.DisplayName) { UserToken = spSite.UserToken }; } if (spSite.SiteSubscription != null) { immJob.SubscriptionId = spSite.SiteSubscription.Id; } immJob.Settings.OutputFormat = DeriveFileFormat(fileFormat); if (!string.IsNullOrEmpty(settings)) { var splitSettings = settings.Split(';'); if (fileFormat.ToLower(CultureInfo.InvariantCulture) == splitSettings[0].Remove(0, 2).ToLower(CultureInfo.InvariantCulture)) { switch (fileFormat) { case "xps": case "pdf": { immJob.Settings.FixedFormatSettings.Bookmarks = (FixedFormatBookmark) Enum.Parse(typeof(FixedFormatBookmark), splitSettings[1].Remove(0, 2)); immJob.Settings.FixedFormatSettings.BalloonState = (BalloonState) Enum.Parse(typeof(BalloonState), splitSettings[2].Remove(0, 2)); if (splitSettings.Contains("BitmapEmbeddedFonts")) { immJob.Settings.FixedFormatSettings.BitmapEmbeddedFonts = true; } if (splitSettings.Contains("IncludeDocumentProperties")) { immJob.Settings.FixedFormatSettings.IncludeDocumentProperties = true; } if (splitSettings.Contains("IncludeDocumentStructure")) { immJob.Settings.FixedFormatSettings.IncludeDocumentStructure = true; } if (splitSettings.Contains("OptimizeForMinimumSize")) { immJob.Settings.FixedFormatSettings.OutputQuality = FixedFormatQuality.Minimum; } if (splitSettings.Contains("UsePdfA")) { immJob.Settings.FixedFormatSettings.UsePDFA = true; } break; } case "doc": case "docx": case "docm": case "dot": case "dotx": case "dotm": { immJob.Settings.CompatibilityMode = (CompatibilityMode) Enum.Parse(typeof(CompatibilityMode), splitSettings[1].Remove(0, 2)); if (splitSettings.Contains("AddThumbnail")) { immJob.Settings.AddThumbnail = true; } if (splitSettings.Contains("EmbedFonts")) { immJob.Settings.AddThumbnail = true; } if (splitSettings.Contains("UpdateFields")) { immJob.Settings.UpdateFields = true; } break; } } } } var sStream = new SPFileStream(spWeb, 0x1000); var inputStream = listItem.File.OpenBinaryStream(); immJob.Convert(inputStream, sStream); try { if (folder == null) { listItem.Folder.Files.Add(newFileName, sStream); } else { if (spWeb.Url != folder.ParentWeb.Url) { using (SPWeb web2 = spSite.OpenWeb(folder.ParentWeb.Url)) { folder.Files.Add(newFileName, sStream); } } folder.Files.Add(newFileName, sStream); } } catch (Exception exception) { if (wfService != null) { Exceptions.CheckedOutException(exception, listItem, wfService, executionContext); return(false); } Exceptions.CheckedOutException(exception, listItem, null, null); return(false); } return(true); } #endregion #region Timer Conversion Job else { ConversionJob job; if (isWorkflow) { job = new ConversionJob(_proxy.DisplayName) { UserToken = __Context.InitiatorUser.UserToken }; } else { job = new ConversionJob(_proxy.DisplayName) { UserToken = spSite.UserToken }; } if (spSite.SiteSubscription != null) { job.SubscriptionId = spSite.SiteSubscription.Id; } job.Settings.OutputFormat = DeriveFileFormat(fileFormat); job.Name = listItem.Name + "-" + Guid.NewGuid(); if (!string.IsNullOrEmpty(settings)) { var splitSettings = settings.Split(';'); if (fileFormat.ToLower(CultureInfo.InvariantCulture) == splitSettings[0].Remove(0, 2).ToLower(CultureInfo.InvariantCulture)) { switch (fileFormat) { case "xps": case "pdf": { job.Settings.FixedFormatSettings.Bookmarks = (FixedFormatBookmark) Enum.Parse(typeof(FixedFormatBookmark), splitSettings[1].Remove(0, 2)); job.Settings.FixedFormatSettings.BalloonState = (BalloonState) Enum.Parse(typeof(BalloonState), splitSettings[2].Remove(0, 2)); if (splitSettings.Contains("BitmapEmbeddedFonts")) { job.Settings.FixedFormatSettings.BitmapEmbeddedFonts = true; } if (splitSettings.Contains("IncludeDocumentProperties")) { job.Settings.FixedFormatSettings.IncludeDocumentProperties = true; } if (splitSettings.Contains("IncludeDocumentStructure")) { job.Settings.FixedFormatSettings.IncludeDocumentStructure = true; } if (splitSettings.Contains("OptimizeForMinimumSize")) { job.Settings.FixedFormatSettings.OutputQuality = FixedFormatQuality.Minimum; } if (splitSettings.Contains("UsePdfA")) { job.Settings.FixedFormatSettings.UsePDFA = true; } break; } case "doc": case "docx": case "docm": case "dot": case "dotx": case "dotm": { job.Settings.CompatibilityMode = (CompatibilityMode) Enum.Parse(typeof(CompatibilityMode), splitSettings[1].Remove(0, 2)); if (splitSettings.Contains("AddThumbnail")) { job.Settings.AddThumbnail = true; } if (splitSettings.Contains("EmbedFonts")) { job.Settings.EmbedFonts = true; } if (splitSettings.Contains("UpdateFields")) { job.Settings.UpdateFields = true; } break; } } } } try { if (folder == null) { job.AddFile(listItemUri.ToString(), listItemLibraryUri + newFileName); } else { job.AddFile(listItemUri.ToString(), string.Format("{0}/{1}/{2}", folder.ParentWeb.Url, folder.Url, newFileName)); } } catch (Exception exception) { if (wfService != null) { Exceptions.CheckedOutException(exception, listItem, wfService, executionContext); return(false); } Exceptions.CheckedOutException(exception, listItem, null, null); return(false); } job.Start(); if (wfService != null) { wfService.LogToHistoryList(executionContext.ContextGuid, SPWorkflowHistoryEventType.WorkflowCompleted, 0, TimeSpan.Zero, "Information", "Conversion job queued for " + listItem.DisplayName, string.Empty); } return(true); #endregion } } catch (SPException exception) { if (wfService != null) { Exceptions.SharePointException(exception, listItem, wfService, executionContext); return(false); } Exceptions.SharePointException(exception, listItem, null, null); return(false); } catch (InvalidOperationException exception) { if (wfService != null) { Exceptions.InvalidOperationException(exception, listItem, wfService, executionContext); return(false); } Exceptions.InvalidOperationException(exception, listItem, null, null); return(false); } } } }
private String WordDocsToConvertToPdf(SPList library) { StringBuilder logResult = new StringBuilder(); SPQuery query = new SPQuery(); query.Folder = library.RootFolder; //query.ViewAttributes = "Scope=\"Recursive\""; query.ViewXml = @"<View Scope='Recursive'> <Query> <Where> <Or> <Contains> <FieldRef Name='File_x0020_Type'/> <Value Type='Text'>doc</Value> </Contains> <Contains> <FieldRef Name='File_x0020_Type'/> <Value Type='Text'>docx</Value> </Contains> </Or> </Where> </Query> </View>"; SPListItemCollection listItems = library.GetItems(query); if (listItems.Count > 0) { foreach (SPListItem li in listItems) { using (MemoryStream destinationStream = new MemoryStream()) { SyncConverter sc = new SyncConverter(WORD_AUTOMATION_SERVICE); sc.UserToken = SPContext.Current.Site.UserToken; sc.Settings.UpdateFields = true; sc.Settings.OutputFormat = SaveFormat.PDF; //Convert to PDF ConversionItemInfo info = sc.Convert(li.File.OpenBinaryStream(), destinationStream); var filename = Path.GetFileNameWithoutExtension(li.File.Name) + ".pdf"; if (info.Succeeded) { SPFile newfile = library.RootFolder.Files.Add(filename, destinationStream, true); logResult.AppendLine("Successfully converted " + li.File.Name); } else if (info.Failed) { //http://www.ilikesharepoint.de/2014/07/sharepoint-word-automation-service-does-not-work-file-may-be-corrupted/ logResult.AppendLine("Error converted file: " + li.File.Name + info.ErrorMessage); } } } } return logResult.ToString(); }