Hello everyone,
I was looking into the generatePDFOutput service using C# .Net, my requirements are to pass XML data file to the XDP and genrate the PDF file the problem currently I am running into is it generate the PDF on the server but and does not send anything to the client,
PDFOutputOptionsSpec pdfOptions = new PDFOutputOptionsSpec();
pdfOptions.fileURI = "C:\\temp\\sampleform.pdf";
my requirements are to get the PDF stream back to the client application and unfortunately this is not happening,
var outblob= client.generatePDFOutput(TransformationFormat.PDF,
"SampleForm.xdp",
"repository:///Applications/DHS_FAST_COSMOS/1.0/eForms/form/",
pdfOptions,
renderOptions,
inData,
out generatePDFOutputMetaDataDoc,
out generatePDFOutputResultDoc,
out outResult);
the output BLOB objects does not has byte streams, My question am I using the correct service? how can i make the server return the PDF bytes.
here is my complete code
var endpointAddress = new System.ServiceModel.EndpointAddress("http://<sever:port>/soap/services/OutputService?blob=mtom");
OutputServiceClient client = new OutputServiceClient();
client.Endpoint.Address = endpointAddress;
BasicHttpBinding binding = (BasicHttpBinding)client.Endpoint.Binding;
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
binding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly;
binding.MaxReceivedMessageSize = 4000000;
binding.MaxBufferSize = 4000000;
binding.ReaderQuotas.MaxArrayLength = 4000000;
binding.MessageEncoding = WSMessageEncoding.Mtom;
client.ClientCredentials.UserName.UserName = "training";
client.ClientCredentials.UserName.Password = "password";
BLOB inData = new BLOB();
string inputFileName = @"C:\\Temp\sampleform.xml";
FileStream fs = new FileStream(inputFileName, FileMode.Open);
//Get the length of the file stream and create a byte array
int len = (int)fs.Length;
byte[] byteArray = new byte[len];
//Populate the byte array with the contents of the file stream
fs.Read(byteArray, 0, len);
//Populate the BLOB object, NOTE the file is successfully writing on the server temp directory
inData.binaryData = byteArray;
//Set PDF run-time options
PDFOutputOptionsSpec pdfOptions = new PDFOutputOptionsSpec();
pdfOptions.fileURI = "C:\\temp\\sampleform.pdf";
//pdfOptions.fileURI = "/DHS_FAST_COSMOS/1.0/eForms/form/SampleForm.xdp";
//Set rendering run-time options
RenderOptionsSpec renderOptions = new RenderOptionsSpec();
renderOptions.cacheEnabled = true;
renderOptions.renderAtClient = "Yes";
renderOptions.PDFAConformance = PDFAConformance.A;
renderOptions.PDFARevisionNumber = PDFARevisionNumber.Revision_1;
pdfOptions.lookAhead = 300;
pdfOptions.recordLevel = 1;
BLOB generatePDFOutputMetaDataDoc = new BLOB();
BLOB generatePDFOutputResultDoc = new BLOB();
OutputResult outResult = new OutputResult();
//Create a PDF Document
var outblob= client.generatePDFOutput(TransformationFormat.PDF,
"SampleForm.xdp",
"repository:///Applications/DHS_FAST_COSMOS/1.0/eForms/form/",
pdfOptions,
renderOptions,
inData,
out generatePDFOutputMetaDataDoc,
out generatePDFOutputResultDoc,
out outResult);
//trying to populate a byte array with BLOB data, NOTE binaryData is null
byte[] outByteArray = generatePDFOutputResultDoc.binaryData;
Views
Replies
Total Likes
Which solution is in consideration? This is AEM's Community.
Views
Replies
Total Likes
kautuksahni - this is Forms for J2EE. Originally this used to be LC ES code.
In your C# code - does this service return a valid PDF?
Views
Replies
Total Likes
Using this C# code service create the valid PDF on the server but it is not streaming back ro the calling application.
Views
Replies
Total Likes
Yes this code is to use AEM services using C#
Views
Replies
Total Likes