我使用TuesPechkin作为我的网络应用程序,我使用VS2013在IIS上进行本地测试。用户单击按钮,页面的当前HTML将保存为PDF文件,然后通过电子邮件发送出去。随着网站数据的变化,这个过程将定期运行。
首次运行converter.Convert(document)
时,它会毫无问题地转换。但是,每次后续尝试都会导致进程挂起,我需要重新启动VS.
以下是我用来测试的一些默认代码。
public void MakePDF()
{
var document = new HtmlToPdfDocument
{
GlobalSettings =
{
ProduceOutline = true,
DocumentTitle = "Pretty Websites",
PaperSize = PaperKind.A4, // Implicit conversion to PechkinPaperSize
Margins =
{
All = 1.375,
Unit = TuesPechkin.Unit.Centimeters
}
},
Objects = {
new ObjectSettings { HtmlText = "<h1>Pretty Websites</h1><p>This might take a bit to convert!</p>" }
}
};
IConverter converter =
new ThreadSafeConverter(
new PdfToolset(
new Win32EmbeddedDeployment(
new TempFolderDeployment())));
byte[] result = converter.Convert(document);
}
有人能指出我正确的方向吗?到目前为止,我的大部分故障排除都引发了一些关于线程和池的讨论,但没有多次运行TuesPechkin的具体代码解决方案。
答案 0 :(得分:3)
你试过ThreadSafeConverter
吗? StandardConverter
仅适用于小型控制台应用。
IConverter converter =
new ThreadSafeConverter(
new RemotingToolset<PdfToolset>(
new Win32EmbeddedDeployment(
new TempFolderDeployment())));
byte[] result = converter.Convert(document);
请注意,您应该将转换器保持在某个静态位置,或者作为单例实例(如上所述here)。
答案 1 :(得分:0)
由于此应用程序位于IIS上,因此可以获取单例转换器,并使用RemotingToolset
var toolSet = new RemotingToolset<PdfToolset>(winAnyCpuEmbeddedDeployment);
//然后
using TuesPechkin.Wkhtmltox.AnyCPU;
...
var converter = PDFHelper.Factory.GetConverter();
var result = converter.Convert(This.Document);