/// <summary> /// Generates a document given a template and some data /// </summary> /// <returns></returns> public ProdoctivityService.DocumentGenerationResponse GenerateDocument(String xmlData) { using (ProdoctivityService.ProdoctivityServiceSoapClient client = new ProdoctivityService.ProdoctivityServiceSoapClient()) { //Getting user and password from app.config string user = System.Configuration.ConfigurationManager.AppSettings["prodoctivityUser"], password = System.Configuration.ConfigurationManager.AppSettings["prodoctivityPassword"]; int templateHandle = int.Parse(System.Configuration.ConfigurationManager.AppSettings["sampleTemplateHandle"]) /* ProDoctivity Sample Template */; var request = new ProdoctivityService.ProdoctivityDocumentGenerationRequest() { Contexts = new List <ProdoctivityService.GenerationContext>( new ProdoctivityService.GenerationContext[] { new ProdoctivityService.GenerationContext() { Data = XElement.Parse(xmlData), //This is where your data is located Documents = new List <ProdoctivityService.Document>( new ProdoctivityService.Document[] { new ProdoctivityService.Document() { TemplateKey = "word" + templateHandle, //This template's key must match "word + <the key of your template> Dispositions = new List <ProdoctivityService.DocumentDisposition>( new ProdoctivityService.DocumentDisposition[] { new ProdoctivityService.DocumentDisposition() { DispositionKey = "prodoctivity", //For this specific endpoint your disposition name MUST be "prodoctivity" Parameters = XElement.Parse("<data xmlns=\"http://documentgeneration.prodoctivity.com/2011/\"><DocumentKey></DocumentKey><KeywordMap></KeywordMap></data>") } } ) } } ), Id = "MyGenerationId" //This is your own personal ID, you set here whatever you want. This is just a way to distinguish a document from another one in your response } } ), Dispositions = new List <ProdoctivityService.Disposition>( new ProdoctivityService.Disposition[] { new ProdoctivityService.Disposition() { ClassName = "ProdoctivityDocumentGenerationLib.ProdoctivityInsertDisposition, ProdoctivityDocumentGenerationLib", Key = "prodoctivity", GlobalParameters = XElement.Parse("<data xmlns=\"http://documentgeneration.prodoctivity.com/2011/\"></data>") } //This one MUST be sent as is, sorry } ), DocumentHandle = templateHandle, UserName = "******", //Find out what are your fluency generator credentials. Chances are that if you didn't change anything it's probably this Password = "******", ProdoctivityUsername = user, ProdoctivityPassword = password, ProdoctivityAgent = null, ResultType = ProdoctivityService.ClientRequestResultType.Inline //Inline result means that this client will wait for fluency to generate the document and return it in Response.Data. This only applies for one template and one context }; return(client.GenerateDocumentFromProdoctivityDocumentHandle(request)); } }
/// <summary> /// /// </summary> /// <returns>The new document's handle</returns> public string SampleContext() { using (ProdoctivityService.ProdoctivityServiceSoapClient client = new ProdoctivityService.ProdoctivityServiceSoapClient()) { //Getting user and password from app.config string user = System.Configuration.ConfigurationManager.AppSettings["prodoctivityUser"], password = System.Configuration.ConfigurationManager.AppSettings["prodoctivityPassword"]; var xml = client.GetTemplateSampleContextXml(user, password, null, int.Parse(System.Configuration.ConfigurationManager.AppSettings["sampleTemplateHandle"]) /* ProDoctivity Sample Template */); return(xml.ToString()); } }
/// <summary> /// Queries a document by it's document handle /// </summary> /// <returns>The new document's handle</returns> public ProdoctivityService.ProdoctivityDocument GetDocument(int documentHandle) { using (ProdoctivityService.ProdoctivityServiceSoapClient client = new ProdoctivityService.ProdoctivityServiceSoapClient()) { //Getting user and password from app.config string user = System.Configuration.ConfigurationManager.AppSettings["prodoctivityUser"], password = System.Configuration.ConfigurationManager.AppSettings["prodoctivityPassword"]; var document = client.GetDocument( user, password, null, documentHandle, false // Setting this to false means that we are getting that specific version. Setting it to true means getting it's latest version regardless of which one you provided ); return(document); } }
/// <summary> /// Saves a document using ProDoctivity's API given it's parent in order to save a new version of it. /// </summary> /// <remarks> /// In this sample we are saving a word document into ProDoctivity by using the SaveDocumentWithKeywords operation /// </remarks> /// <param name="originalDocumentHandle">Document handle of it's parent version</param> /// <returns>The new document's handle</returns> public int SaveDocument(int originalDocumentHandle) { using (ProdoctivityService.ProdoctivityServiceSoapClient client = new ProdoctivityService.ProdoctivityServiceSoapClient()) { //Getting user and password from app.config string user = System.Configuration.ConfigurationManager.AppSettings["prodoctivityUser"], password = System.Configuration.ConfigurationManager.AppSettings["prodoctivityPassword"]; var data = new ProdoctivityService.ArrayOfBase64Binary(); //Loading data from a sample document that is in Resource.resx data.Add(Resource.Document1); var documentData = new ProdoctivityService.DocumentData() { Data = new ProdoctivityService.KeywordData() { //Creating a list of keywords with only one keyword Keywords = new List <ProdoctivityService.Keyword>( new ProdoctivityService.Keyword[] { new ProdoctivityService.Keyword() { DataType = ProdoctivityService.DataTypes.Alphanumeric, //This keyword's data type is Alphanumeric, although there are more KeywordHandle = 1, //Keyword with handle 1 is a sample keyword. Do not use this in production Value = "Test" //Sample "Test" value } } ) } }; var newDocument = client.SaveDocumentWithKeywords( user, password, null, // null agent because we are doing direct authentication 1 /* Sample Pages, do not use this in production */, data, originalDocumentHandle, // lastVersionDocumentHandle. This means that this new document is a newer version of the provided one. This is very important in order to save a new version MSWORD_CONTENT_TYPE, // MSWord content-type. This value is important if you are saving a docx document documentData ); return(newDocument.DocumentHandle); } }