我使用TuesPechkin已经有一段时间了,今天我开始将nuget包更新为新版本的2.0.0+,并注意到Factory.Create()已不再解决,因此我在GitHub上阅读了所做的更改,并注意到它现在期望dll的路径?
IConverter converter =
new ThreadSafeConverter(
new PdfToolset(
new StaticDeployment(DLL_FOLDER_PATH)));在过去的几个小时里,我尝试了几乎所有我能想到的路径,"\bin“、"\app_data”、"\app_start“等等,而我似乎无法找到或找出它想要的路径和什么dll?
我可以在bin文件夹中看到TuesPechkin dll,这是我尝试的第一条路径,但我得到了以下错误:
其他信息:无法加载DLL‘wkhtmlox.dll’:找不到指定的模块。(HRESULT例外: 0x8007007E)
这个dll在哪里,现在我可以得到它,因为库似乎不包含它,我试着安装TuesPechkin.Wkhtmltox.Win32包,但是dll仍然找不到。另外,我在一个asp.net网站项目中使用了这一点,所以我假设使用下面的方法可以获得路径,对吗?
var path = HttpContext.Current.Server.MapPath(@"~\bin\TuesPechkin.dll");发布于 2015-01-11 19:53:03
Tuespechkin在Win32和Win64嵌入式包中为“wkhtmltox.dll”文件提供了一个zip文件作为资源。
当您使用Win32或Win64嵌入式包时,它所做的是解压缩文件并将其放在指定的目录中。
我一直将wkhtmltox的副本放在我的web应用程序目录的根目录部分,并使用我的web应用程序的服务器物理路径将DLL_FOLDER_PATH指向它。
作者认为,为了取得最佳效果,必须在静态字段中设置转换器。
我这样做,但是当我使用完它时,将转换器设置为null,这似乎是可行的。
Tuespechkin是wmkhtmlox文件的包装器。
原始文件是用C++编写的,因此不会自动在C#或VB.NET或任何其他托管代码域中使用。
Tuespechkin.dll文件不包含“wkhtmlox.dll”的副本。你要么使用其他的嵌入式部署模块,要么在你的网络应用程序中安装一个'wkhtmltox.dll‘的副本,然后从互联网下载它。这就是我所做的,而且似乎运作得很好。
我正在使用,在使用Tuespechkin例程后尝试编译代码将第一次失败,因为'wkhtmltox.dll‘文件会被锁定,但是您所要做的就是重新尝试构建,然后它就会通过。
我对32位例程不能在64位环境中工作和64位环境在本地主机上无法测试有问题。在研究了Tuespechkin以及Win32和Win64嵌入式部署包的源代码之后,我提出了解决办法。
只要您为输入指定一个url,而不是为原始html指定一个url,它就能正常工作。
较旧的软件包并不能很好地呈现css。
如果您使用的是print.aspx例程,您可以为它创建url作为您的主url的偏移量。
我没有我现在使用的源代码来抵消您的web应用程序的基本url,但它只是HttpRequest的一个分支。
您必须使用物理路径来找到.dll,但是您可以使用web路径作为打印例程。
我希望这能回答你的问题。
发布于 2015-07-07 07:19:28
如果您收到此错误,->无法加载文件或程序集“TuesPechkin.Wkhtmltox.Win64”或其依赖项之一。试图加载格式不正确的程序。
在中转到-
工具、->选项、->项目和解决方案-> Web项目->将IIS的64位版本用于网站和项目。
发布于 2015-02-19 09:11:44
我安装了TuesPechkin.Wkhtmltox.Win64 Nuget包,并在单例中使用了以下代码
public class PechkinPDFConvertor : IPDFConvertor
{
IConverter converter =
new ThreadSafeConverter(
new RemotingToolset<PdfToolset>(
new Win64EmbeddedDeployment(
new TempFolderDeployment())));
public byte[] Convert(string html)
{
// return PechkinSync.Convert(new GlobalConfig(), html);
return converter.Convert(new HtmlToPdfDocument(html));
}
}然后,web应用程序必须在x64中运行,否则在尝试在x86环境中加载x64程序集时会出现错误。假设您必须在设计时选择x64或x86,并使用相应的nuget包,在web.config中选择这个会更好。
编辑:上述代码在一台服务器上失败,其消息与您的完全相同--这是因为没有安装VC++ 2013。因此,新代码正在运行x86,如下所示
try
{
string path = Path.Combine(Path.GetTempPath(), "MyApp_PDF_32");
Converter = new ThreadSafeConverter(
new RemotingToolset<PdfToolset>(
new Win32EmbeddedDeployment(
new StaticDeployment(path))));
}
catch (Exception e)
{
if (e.Message.StartsWith("Unable to load DLL 'wkhtmltox.dll'"))
{
throw new InvalidOperationException(
"Ensure the prerequisite C++ 2013 Redistributable is installed", e);
}
else
throw;
}https://stackoverflow.com/questions/27882601
复制相似问题