Saltar al contenido

TuesPechkin no pudo cargar la DLL ‘wkhtmltox.dll’

Nuestro team especializado pasados muchos días de trabajo y recopilar de datos, obtuvieron la solución, nuestro deseo es que todo este artículo sea de gran utilidad en tu trabajo.

Solución:

El Tuespechkin tiene un archivo zip como recurso en los paquetes integrados de Win32 y Win64 para el archivo ‘wkhtmltox.dll’.

Lo que hace cuando usa el paquete Win32 o Win64 Embedded es descomprimir el archivo y colocarlo en el directorio que especifique.

He estado colocando una copia de wkhtmltox dll en la parte raíz del directorio de mi aplicación web y apuntando a DLL_FOLDER_PATH usando la ruta física del servidor de mi aplicación web para llegar a ella.

Según el autor, debe configurar el convertidor en un static campo para obtener mejores resultados.

Hago eso, pero configuro el convertidor en null cuando termino de usarlo, y eso parece funcionar.

Tuespechkin es un envoltorio para el archivo dll wmkhtmlox.

El archivo original está escrito en C++ y, por lo tanto, no se podrá usar automáticamente en C# o VB.NET ni en ninguno de los otros dominios de código administrado.

El archivo Tuespechkin.dll NO contiene una copia de ‘wkhtmltox.dll’. Debe usar uno de los otros módulos de implementación integrados o instalar una copia de ‘wkhtmltox.dll’ en su aplicación web después de descargarla de Internet. Eso es lo que hago, y parece funcionar bien.

Estoy usando Team Foundation Server, y los intentos de compilar el código después de usar las rutinas de Tuespechkin fallarán la primera vez porque el archivo ‘wkhtmltox.dll’ se bloquea, pero todo lo que tiene que hacer es simplemente volver a intentar su compilación y se procesará.

Tuve problemas con la rutina de 32 bits que no funcionaba en un entorno de 64 bits y el entorno de 64 bits no se podía probar en localhost. Seguí la solución alternativa que se me ocurrió después de examinar el código fuente de Tuespechkin y los paquetes de implementación integrados de Win32 y Win64.

Funciona bien siempre que especifique una URL para la entrada en lugar de html sin formato.

El paquete anterior no representaba CSS muy bien.

Si está utilizando una rutina print.aspx, puede crear la URL para ella como un desplazamiento de su URL principal.

No tengo el código fuente que estoy usando conmigo en este momento para compensar su URL base para su aplicación web, pero es simplemente una derivación de HttpRequest.

Tiene que usar la ruta física para encontrar el .dll, pero puede usar una ruta web para la rutina de impresión.

Espero que esto responda un poco a tu pregunta.

Si recibe este error -> No se pudo cargar el archivo o ensamblar ‘TuesPechkin.Wkhtmltox.Win64’ o una de sus dependencias. Se intentó cargar un programa con un formato incorrecto.

En Visual Studio Ir a –

Herramientas -> Opciones -> Proyectos y soluciones -> Proyectos web -> Use la versión de 64 bits de IIS Express para sitios web y proyectos.

Instalé el paquete TuesPechkin.Wkhtmltox.Win64 Nuget y usé el siguiente código en un único:

public class PechkinPDFConvertor : IPDFConvertor

    IConverter converter =
               new ThreadSafeConverter(
                  new RemotingToolset(
                       new Win64EmbeddedDeployment(
                           new TempFolderDeployment())));

    public byte[] Convert(string html)
    
        //            return PechkinSync.Convert(new GlobalConfig(), html);
        return converter.Convert(new HtmlToPdfDocument(html));
    

Luego, la aplicación web debe ejecutarse en x64; de lo contrario, obtendrá un error al intentar cargar un ensamblaje x64 en un entorno x86. Presumiblemente, debe elegir x64 o x86 en el momento del diseño y usar el paquete nuget correspondiente, sería mejor elegir esto en web.config.

EDITAR: El código anterior falló en un servidor con exactamente el mismo mensaje que el suyo: se debió a que no instaló VC ++ 2013. Por lo tanto, el nuevo código ejecuta x86 de la siguiente manera

try

    string path = Path.Combine(Path.GetTempPath(), "MyApp_PDF_32");
    Converter = new ThreadSafeConverter(
                  new RemotingToolset(
                       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;

Comentarios y calificaciones de la guía

Te invitamos a sostener nuestra ocupación exponiendo un comentario y dejando una valoración te estamos agradecidos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *