1

我正在尝试将 HTML 转换为 PDF。

我已经检查了 PDFSharp 和 ITextSharp,它们看起来都不太复杂,但是那里有一个可执行文件wkhtmltopdf,它似乎是迄今为止最好的评论。

我想将 wkhtmltopdf 控制台应用程序用作库。

我可以想象这种情况以不同的格式发生,但找不到任何足够具体的解决方案来使用。

有一个现有的 C# wkhtmltopdf 包装库,但它在部署和应用程序挂起方面存在问题。

我只需要一个调用来传递这个 .exe 文件,它类似于:

wkhtmltopdf.exe "www.adsf.com" convertedPdfOfAsdf.pdf

我想创建一个衍生出以下线程的库:

  1. 将 wkhtmltopdf.exe 的实例复制到临时位置
  2. 通过反射调用 wkhtmltopdf.exe
  3. 删除包含副本 wkhtmltopdf.exe 的临时位置

我以前没有尝试过这样的事情,所以不确定这是否是解决问题的最佳方法,但肯定有一个可重现的解决方案。

PS。我的解决方案必须是线程安全的。它将作为 Web 应用程序运行。

4

2 回答 2

0

听起来你正走向 DLL 地狱。虽然您提出的解决方案将提供实例之间的分离,但它会很快迫使您进入必须处理Unable to cast X to X异常的情况。

我建议锁定对底层库的访问,并强制您的应用程序等待,或者查看在多个 AppDomain 中线性执行相同代码的操作。

于 2013-09-04T01:53:55.303 回答
0

对于我使用的一个站点ConcurrentQueue,它是一种线程安全的数据结构,以便在我的消费者弹出下一个要处理的事情时更简单地添加到队列中。

您可以在此处查看问题中的示例:

无锁并发队列

所以只需让上传返回一个唯一的 id 到 javascript。

然后,javascript 查询网络服务器以查看文件是否已处理,在此之前它将让用户知道状态(例如,前面可能有多少条记录)。

根据网站的制作方式和技术,这可能是一种更简单的方法。

于 2013-09-04T02:30:47.240 回答