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);
        }
Exemplo n.º 2
0
 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());
             }
         }
     }
 }
Exemplo n.º 3
0
        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);
                }
            }
//                }
//            }
        }
Exemplo n.º 4
0
        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);
                    }
                }
            }
        }
Exemplo n.º 5
0
        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();
        }