The EvoPDF HTML to PDF conversion library (http://www.evopdf.com/) claims it supports the Windows Azure Cloud platform, however I can't get it to work. I get the exception:
[Exception: Could not get conversion result header. Data receive error. Could not receive data. Error code: 109]
EvoPdf.HtmlToPdf.ImgConverter.GetLayoutFromUrl(String url, ps& htmlParseInfo) +622
EvoPdf.HtmlToPdf.PdfConverter.ConvertAndGetPdfDocument(String url, String htmlString, String baseUrl, String internalLinksDocUrl, Boolean fromUrl) +9748
EvoPdf.HtmlToPdf.PdfConverter.ConvertAndSaveToStream(Stream outStream, String url, String htmlString, String baseUrl, String internalLinksDocUrl, Boolean fromUrl) +61
EvoPdf.HtmlToPdf.PdfConverter.SavePdfFromUrlToStream(String url, Stream outPdfStream) +20
This looks like its failing at the point where the library fetches the HTML content via a web request. Is there anything in Azure which prevents outgoing web requests?
The library is deployed as two DLLs, a native DLL and a managed assembly - is there any special Azure configuration required to allow native DLLs to be loaded? (The library does support xcopy deployment, I have it working this way in other hosting environments).
From what I can see you need to use and Azure Web Role and not an Azure Web Site. The sites doesn't support running with Full trust.
http://blogs.msdn.com/b/silverlining/archive/2012/06/27/windows-azure-websites-web-roles-and-vms-when-to-use-which.aspx
EvoPdf have an example project for Azure that you can download that shows how to setup up a Web Role with a site that can run the EvoPdf dll.
EVO HTML to PDF general library for .NET works directly in Azure Web Roles, Azure Worker Role and Azure Virtual Machines.
For Azure WebSites you can use the EVO HTML to PDF for Azure Websites solution . The code sample copied from there is:
If the issue is related to your native DLL you might want to try changing the following attributes in the ServiceDefinition.csdef:
And did you deploy the 64-bit version of the DLL?
I also see "Error code: 109" in the error message, can't you contact EvoPDF to ask what this means?
Update: If you're running in ASP.NET, could you try changing the trust level?
Include .dat file
Did you copy/include evointernal.dat to the site as well? This solved the error 109 for me. It should reside in the same folder as the *.dll file.
Background: DLL + DAT file
The EVO HTML to PDF library consists of three files:
Note that after updating the DLL, do update the evointernal.dat as well. Otherwise the 109 error will reoccur.