10个小时后,尝试4个其他HTML到PDF工具,我准备爆炸了.
wkhtmltopdf听起来像是一个很好的解决方案......问题是我无法从asp.net执行具有足够权限的进程所以......
Process.Start("wkhtmltopdf.exe","http://www.google.com google.pdf");
Run Code Online (Sandbox Code Playgroud)
开始但没有做任何事情.
是否有一种简单的方法:
-a)允许asp.net启动进程(实际上可以做某事)或
-b)编译/包装/无论wkhtmltopdf.exe到我可以在C#中使用的东西,如下所示:WkHtmlToPdf.Save("http://www.google.com", "google.pdf");
如何在ASP.NET MVC Web应用程序中实现后台处理队列?虽然大多数数据更改,更新等需要立即可见,但还有其他更新不需要实时处理,我希望将其移交给优先级较低的后台进程,后者将按照自己的进度处理它.
例如,采用StackOverflow的徽章奖励系统.通常,您可以采取特定的行动来奖励您徽章,但实际的"奖励"会在以后发生(通常在10分钟到几个小时之后).我认为这是通过一个单独的后台流程完成的,因为SO的工作在获得时立即授予徽章并不重要.
所以,我正在尝试创建某种队列系统,在这种系统中我可以填充任务(比如任何实现ITask接口的东西,它将有一个Process()方法),最终将由一个单独的进程执行.
我将如何实施这样的系统?想法/提示/示例代码?
谢谢!
我知道这个工具在URL上查找并将repsponse转换为pdf.我如何转换
<html> content.. </html>
Run Code Online (Sandbox Code Playgroud)
成为PDF格式?
我正在查看wkhtml2pdf上的帮助文件,看起来它提供了stdin的选项,但我无法弄清楚如何模拟stdin.
此外,如果你知道一个更好的工具,请建议我一些.
非常感谢!
我在.NET 4.0中运行的C#Web应用程序中使用WkhtmltoPdf从HTML文件生成PDF.通常一切正常,除非HTML文件的大小低于250KB.一旦HTML文件大小超过该值,运行wkhtmltopdf.exe的进程就会产生如下异常.在任务管理器上,我已经看到wkhtmltopdf.exe进程的内存值没有超过40,096 K的值,我相信这就是为什么在这两者之间放弃进程的原因.
我们如何配置外部exes的内存限制可以增加?有没有其他方法可以解决这个问题?
更多信息:
当我直接从命令行运行转换时,PDF生成正常.所以,它不太可能成为WkhtmlToPdf的问题.
错误来自localhost.我在DEV服务器上尝试过相同的结果.
编辑:
更具体的异常消息: - 对于Process对象的MainModule属性,错误显示 - {"只有ReadProcessMemory或WriteProcessMemory请求的一部分已完成"},具有NativeErrorCode值 - 299.
例外:
> [Exception: Loading pages (1/6) [>
> ] 0% [======> ]
> 10% [======> ] 11%
> [=======> ] 13%
> [=========> ] 15%
> [==========> ] 18%
> [============> ] 20%
> [=============> ] 22%
> [==============> ] 24%
> [===============> ] 26%
> [=================> ] 29%
> [==================> ] 31%
> [===================> ] 33%
> [=====================> ] 35%
> [======================> ] 37% …Run Code Online (Sandbox Code Playgroud) 我正在使用wkhtmltopdf下载页面并创建一个pdf,在这里作为解释.这一切都按预期工作,但当它到达以下行时:
int read = proc.StandardOutput.BaseStream.Read(buffer, 0, buffer.Length);
Run Code Online (Sandbox Code Playgroud)
这需要很长时间才能继续下去.我也尝试过以下方法:
proc.Start();
string output = proc.StandardOutput.ReadToEnd();
string error = proc.StandardError.ReadToEnd();
proc.WaitForExit();
Run Code Online (Sandbox Code Playgroud)
但同样的事情发生在第2行(proc.StandardOutput.ReadToEnd()).
我该怎么调试呢?
注意:当我调试整个项目时,我看到wkhtmltopdf进程调用的页面只在延迟后被调用.因此,OS调用和页面下载本身之间会发生延迟.
编辑
所以我将参数部分更改为简单http://google.com -,并且执行速度非常快.
所以问题出在我的全部论点中: --stop-slow-scripts --redirect-delay 1500 --cookie MOODLEID_ %25E2%25C8%2513E%25BD --cookie ASP.NET_SessionId mg3mfaisk45zn5y1aql0glbb --cookie .ASPXAUTH FEA3D10032E211EDB330E967D8F19A324A912AD792219CA281451AA809F1B580B25466DAF81DE30DF07252FF13F0888C88ED4DB5871579F1DA3EBAA447CBF860131F6FF00A763C9207CE13BCB143301E49A2B00EEBBF1F4AE14F109DF1BE8D3B39C43478B99E4C686C3849D1D51DDBFA3D2E871691BAB8346FE5195D867F88F662F72E40 http://localhost:8404/Relatorio/GeralEstaticoPDF?id=15&pesq_cod=0&IncluirParciais=True&NomesImagens[0]=3fd5b6a2-76a4-470b-af99-93500cc90431.png&NomesImagens[1]=c1c86234-c338-4285-9d25-5069be36a213.png&NomesImagens[2]=4562f9a3-72aa-452c-9736-6d0ba65f59ce.png&NomesImagens[3]=dbc54344-6248-4ee3-9e43-9cb3ef89cc67.png&NomesImagens[4]=8c954917-d572-4d4a-b6fd-2b9cd09e8f8e.png -
我需要cookie来保存会话.
如果我直接在命令行上运行它(但放入文件名而不是-),它也会快速运行.
编辑2
所以问题肯定是cookie,如果我删除它,它执行速度快,但它只给我在pdf上的登录屏幕,因为它不保留会话.
我面临着从ASP.NET网站上的HTML页面生成PDF的任务.(用户可以节省/打印的东西)
我发现WKHTMLToPDF很好地完成了这项工作:
但是,我有一个问题.我们的网站是一个Intranet站点,使用Windows身份验证.我可以使用--username和--password将我的凭据传递给WKHTMLToPDF,并向我自己证明网页是按照您的希望生成的.
问题是:如何为进入我们系统的每个不同用户做些什么?我可以想到一些可能/可能不起作用的可能解决方案,我希望有人可以给我一些意见/指导,因为我似乎已经结束了我的研究.
可能的解决方案:
我怀疑3的是,我最终会persuing的解决方案,但因为这是一个基本的解决方法大处理认证问题,我对1或2个更好的建议或帮助非常开放!
asp.net pdf-generation ntlm windows-authentication wkhtmltopdf