【问题标题】:Rendering local images using TuesPechkin?使用 TuesPechkin 渲染本地图像?
【发布时间】:2015-10-12 22:14:50
【问题描述】:

我正在尝试使用 TuesPechkin 生成文档,到目前为止,它在处理 URL 图像时运行良好。但是,当涉及到本地图像时,它似乎根本不会生成图像,如下所示:

http://imgur.com/O5wYqYh

文档生成:

public static void ConvertDoc(String html)
    {         
        var document = new HtmlToPdfDocument
        {
            GlobalSettings =
            {
                ProduceOutline = true,
                DocumentTitle = "Form documents",                    
                Margins =
                {
                    Top = 1.8,
                    Left = 2.5,
                    Right = 2.5,
                    Bottom = 2.5,
                    Unit = Unit.Centimeters
                }
            },
            Objects =
            {
                new ObjectSettings { HtmlText = html, 
                    WebSettings = new WebSettings() {
                        LoadImages = true
                }
                }

            }
        };

        IConverter converter =  new ThreadSafeConverter(
            new PdfToolset(
                new Win32EmbeddedDeployment(
                    new TempFolderDeployment())));

        byte[] result = converter.Convert(document);

        File.WriteAllBytes("C:/Users/jmann_000/Desktop/Test/program-test-2015.pdf", result);
    }
}
}

如上所示,我还尝试将加载图像设置为 true,但这不起作用。 有问题的HTML:

    <td>
         <table border="0" cellpadding="0" cellspacing="0" class="doc-header">
                    <tr>
                        <td width="300" align="left"><img src="img/logo.gif" width="240" alt="AeroCare"></td>
                        <td width="375"></td>
                    </tr>
         </table>
    </td>

如果是本地图像,是否有正确的方法来生成图像?

【问题讨论】:

标签: c# html pdf tuespechkin


【解决方案1】:

wkhtmltopdf 与您的根项目不在同一个文件夹中运行,因此与您的项目相关的任何路径对于 wkhtmltopdf 来说都是不正确的。

这会产生相关图像和 css 样式表的问题。 在任何情况下,您都需要提供文件的完全限定路径。

解决方案 1

对于 MVC 和 Razor

是提供您的托管应用程序的完整路径,以便从您的主机获取文件。

@String root = http://localhost:port/
<img src="@String.Format("{0}img/logo.gif",root)" width="240" alt="AeroCare">

解决方案 2

使用文件系统路径获取文件。

@String root = @HostingEnvironment.MapPath("~");

如果您正在运行控制台应用程序,请替换为

String root = AppDomain.CurrentDomain.BaseDirectory;

但是你需要一个引擎来用完全限定的路径替换 HTML 文件中的所有链接。

解决方案 3

找出 wkhtmltopdf 从哪个目录运行并尝试提供与该目录相关的链接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-04
    • 2022-01-18
    • 2021-03-28
    • 2018-03-02
    • 2020-10-12
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多