使用 TuesPechkin 渲染本地图像?
Rendering local images using TuesPechkin?
我正在尝试使用 TuesPechkin 生成文档,到目前为止它在 URL 图像方面工作完美。但是,当涉及到本地图像时,它似乎根本不会生成图像,如下所示:
文档生成:
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>
如果是本地图片,是否有正确的生成方式?
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 来自哪个目录 运行 并尝试提供与该目录相关的链接。
我正在尝试使用 TuesPechkin 生成文档,到目前为止它在 URL 图像方面工作完美。但是,当涉及到本地图像时,它似乎根本不会生成图像,如下所示:
文档生成:
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>
如果是本地图片,是否有正确的生成方式?
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 来自哪个目录 运行 并尝试提供与该目录相关的链接。