Hi,
we’ve find an issue in the method that concatenates streams into pdf:
public Stream MergeDocAndPdf()
{
MemoryStream[] ss = new MemoryStream[2];
MemoryStream output = new MemoryStream();
//test aspose merge between 1 doc and 1 pdf document
using (SPSite siteCollection = new SPSite(“http://webapp/sites/site”))
{
using (SPWeb web = siteCollection.OpenWeb())
{
SPDocumentLibrary lib = (SPDocumentLibrary)web.Lists[“doclib”];
if (lib != null)
{
SPFile fileDoc = lib.GetItemById(1).File;
SPFile filePdf = lib.GetItemById(2).File;
ss[0] = new MemoryStream();
ss[1] = new MemoryStream();
//load doc
using (var stream = fileDoc.OpenBinaryStream())
{
stream.CopyTo(ss[0]);
ss[0].Position = 0;
}
Aspose.Words.Document asposeDoc = new Aspose.Words.Document();
ss[0].Close();
ss[0] = new MemoryStream();
asposeDoc.Save(ss[0], Aspose.Words.SaveFormat.Pdf);
ss[0].Position = 0;
//load pdf
using (var stream = filePdf.OpenBinaryStream())
{
stream.CopyTo(ss[1]);
ss[1].Position = 0;
}
Aspose.Pdf.Document asposePdf = new Aspose.Pdf.Document(ss[1]);
ss[1].Position = 0;
PdfFileEditor pdfEditor = new PdfFileEditor();
pdfEditor.Concatenate(ss, output); //THE ERROR OCCURS HERE
}
}
}
String headerInfo = “attachment; filename=” + “MergeDocAndPdf.pdf”;
WebOperationContext.Current.OutgoingResponse.Headers[“Content-Disposition”] = headerInfo;
WebOperationContext.Current.OutgoingResponse.ContentType = “application/octet-stream”;
return output;
}
the output stream is empty and i see that, in the pdfEditor.LastException, there is an exception in loading Aspose.Font.dll:
Message “Could not load file or assembly ‘Aspose.Font, Version=17.4.0.0, Culture=neutral, PublicKeyToken=716fcc553a201e56’ or one of its dependencies. The system cannot find the file specified.”
how can we resolve this?
I’ve see that this errors is already reported in your forum but with no resolution.
Thanks
Hi lechter,
Thanks for contacting support.
I have tested the scenario and have managed to reproduce the issue. This issue has already been logged in our issue tracking system as PDFNET-42378. However currently there are two workarounds for this problem.
1.Do not use assembly.GetTypes(), use assembly.GetExportedTypes() instead.
System.Reflection.Assembly assembly = System.Reflection.Assembly.LoadFrom(@“d:\MyApp\References\Aspose.Pdf.dll”);
var types = assembly.GetExportedTypes(); // <-- it works fine now and returns all public exported non-obfuscated classes.
2. Call assembly.CreateInstance(“Aspose.Pdf.Document”); after LoadFrom(), before GetTypes(). Something like this:
System.Reflection.Assembly assembly = System.Reflection.Assembly.LoadFrom(@“d:\MyApp\References\Aspose.Pdf.dll”);
assembly.CreateInstance(“Aspose.Pdf.Document”);
var types = assembly.GetTypes(); // <-- it works fine now.
The product team is working on fixing this problem and we hope to get it resolved in next release versions of Aspose.Pdf for .NET. Please be patient and spare us little time.
We are sorry for this inconvenience.
Best Regards,
Hi,
how can i use it inside that code for solve the problem?
Thanks
Hi lechter,
Thanks for your inquiry. You need to implemented an AssemblyResolveHandler within the code. You may write your own AssemblyResolveHandler Event and call it after form load. This way you can ignore assemblies which will not be needed for the execution process of your application/program. As development team is resolving the issue and hopefully, a fix will be included in upcoming version of Aspose.Pdf for .NET, so you can implement this work around for now.
Please check following link for more details on how to implement AssemblyResolveHandler.
https://msdn.microsoft.com/en-us/library/system.appdomain.assemblyresolve(v=vs.110).aspx
We are sorry for this inconvenience.
Best Regards,
Hi Fahad,
first of all i-m not sure that a link to the msdn is a good way to provide a solution for an issue with your product. By the way, is there a date when you plan to resolve this?
Thanks
Hi Lechter,
Thanks for contacting support.
The reason we have shared the link is to highlight the reasons behind this problem. However the team is working on fixing the issue and it will be resolved in upcoming release versions of Aspose.Pdf for .NET. As soon as the solution becomes available, we will let you know.