我无法让佩奇金或图斯佩奇金在我的蔚蓝网站上工作。
每当我试图访问该站点时,它就会挂起,没有错误消息(即使在关闭customErrors时也是如此)。我还有没有更多的陷阱呢?一切都在当地完美地运作。
对于64位应用程序,我将完成以下步骤:
发布于 2015-08-18 13:29:34
据我所知,你不能让它在网络应用程序中工作。但是,有一种方法可以做到:您必须创建一个云服务并向其添加一个工作角色。将在此工作人员角色中安装TuesPechkin。
工作流程如下:从云web应用程序中,您将访问worker角色(通过将worker角色配置为宿主Asp.NET Web 2是可能的)。worker角色将使用TuesPechkin配置转换器,并生成PDF。我们将把pdf封装在wrap响应中,并将其发回。现在,我们开始吧.
要添加云服务(假设您安装了Azure SDK ),在单击OKE 217 select E 118Worker -> >E 219并单击E 120OKOKE 221后,右键单击解决方案-> 添加新项目 ->,选择节点-> Azure Cloud Service ->。
创建了云服务和工作角色。接下来要做的是配置您的Worker角色,以便它可以承载ASP.NET Web 2。通过遵循这教程,这种配置非常简单。
在您将Worker角色配置为承载web之后,您将不得不安装TuesPechkin.Wkhtmltox.Win64和TuesPechkin nuget包。
您的配置现在应该已经准备好了。现在创建一个控制器,在其中我们将生成PDF:在您的Worker角色中添加一个新类,它将扩展ApiController
public class PdfController : ApiController
{
}向控制器添加一个操作,它将返回一个HttpResponseMessage对象。
[HttpPost]
public HttpResponseMessage GeneratePDF(PdfViewModel viewModel)
{
}在这里,我们将配置两个ObjectSettings和GlobalSettings对象,它们将应用于HtmlToPdfDocument对象。你现在有两个选择。
您可以通过页面url直接从html文本(可能是在请求中发送页面的html )生成或。
var document = new HtmlToPdfDocument
{
GlobalSettings =
{
ProduceOutline = true,
DocumentTitle = "Pretty Websites",
PaperSize = PaperKind.A4, // Implicit conversion to PechkinPaperSize
Margins =
{
All = 1.375,
Unit = Unit.Centimeters
}
},
Objects = {
new ObjectSettings { HtmlText = "<h1>Pretty Websites</h1><p>This might take a bit to convert!</p>" },
new ObjectSettings { PageUrl = "www.google.com" }
}
};现在有一件好事是,在使用页面url时,可以使用ObjectSettings对象来发布参数:
var obj = new ObjectSettings();
obj.LoadSettings.PostItems.Add
(
new PostItem()
{
Name = "paramName",
Value = paramValue
}
);此外,从TuesPechkin文档中,转换器应该是线程安全的,并且应该保存在静态的地方,或者作为单个实例保存:
IConverter converter =
new ThreadSafeConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));最后,将pdf封装在响应内容中,将响应内容类型设置为application/pdf,并添加内容配置标头,仅此而已:
byte[] result = converter.Convert(document);
MemoryStream ms = new MemoryStream(result);
response.StatusCode = HttpStatusCode.OK;
response.Content = new StreamContent(ms);
response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/pdf");
response.Content.Headers.Add("content-disposition", "attachment;filename=myFile.pdf");
return response;发布于 2015-05-19 23:00:37
恐怕答案是,让wkhtmltopdf在Azure上工作是不可能的。
我假设您的意思是在Windows网站上运行wkhtmltopdf。 wkhtmltopdf使用窗口的GDI API,这些API目前不适用于Azure网站。
解决方案
最后我创建了一个运行wkhtmltopdf.exe的Azure。我将html发送到服务,并得到一个byte[]作为回报。
https://stackoverflow.com/questions/30232279
复制相似问题