0

早上好,

我正在尝试使用 html 生成带有 Tuesspechkin 的 pdf 文件。它在本地完美运行,但在生产中却不行。

    public static bool GeneratePDFFromHTMLPaysage(String full_path, String htmlContent, String baseUrl)
    {
        try
        {
            String content = "<!DOCTYPE html><html><head><meta http-equiv='X-UA-Compatible' content='IE=edge'><meta charset='UTF-8' name='viewport' content='width=device-width, initial-scale=1'><title>Titre</title><link rel='stylesheet' type='text/css' href='https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css'><script type='text/javascript' src='https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js'></script></head><body><div class='container'>";

            content = content + htmlContent;
            content = content + "</div></body></html>";
            full_path = full_path + ".pdf";

            var document = new HtmlToPdfDocument
            {
                GlobalSettings =
                {
                    ProduceOutline = true,
                    PaperSize = System.Drawing.Printing.PaperKind.A4, // Implicit conversion to PechkinPaperSize
                    Margins =
                    {
                        All = 0,
                        Unit = Unit.Centimeters
                    },
                    Orientation = GlobalSettings.PaperOrientation.Landscape
                },
                Objects = {
                    new ObjectSettings { HtmlText = content }
                }
            };
            IConverter convert = new StandardConverter(
                new PdfToolset(
                    new Win64EmbeddedDeployment(
                        new TempFolderDeployment())));
            byte[] test = convert.Convert(document);
            System.IO.File.WriteAllBytes(full_path, test);
            return true;
        }
        catch (Exception e)
        {
            ErrorManager.Log(e.Message + "\n" + e.InnerException + "\n" + e.StackTrace);
            return false;
        }
    }

基本上,我尝试用 32 位替换 64 位,按照文档中的建议指定了一个静态部署路径(这样做会创建一个放置丢失 DLL 的文件夹,它在本地的行为与在生产中的行为相同,但只能工作本地)。

我的应用程序是一个基本的 Windows 应用程序,我只需从 Debug 或 Release 文件夹复制文件即可部署它:

该项目

如您所见,我包含了 wkhtmltox.dll,因此它会自动部署在项目的根文件夹中,但也没有结果

**总结:** .NET 4 框架,windows 应用程序,尝试使用 Tuesspechkin,在生产中安装了 Visual C++ 2013,试图解决丢失的 dll,以及代码中的很多东西

感谢您的关注,希望有解决方案

4

1 回答 1

0

好吧,好像我的生产服务器太旧了(windows server 2003),它可能解释了这个问题

于 2020-12-17T15:24:36.587 回答