使用 Sandcastles 在 CHM 帮助文件中嵌入图像

Posted

技术标签:

【中文标题】使用 Sandcastles 在 CHM 帮助文件中嵌入图像【英文标题】:Embedding images in CHM help file with Sandcastles 【发布时间】:2014-11-18 18:34:25 【问题描述】:

我正在使用 Sandcastles 为我的项目生成 CHM 帮助文件。我想要一个可以分发的独立 CHM 文件,最好是单独分发。

我遇到的问题是,要嵌入图像,似乎该图像需要与 CHM 文件分开存在于用户系统上。当我查看我的 CHM 文件的源代码时,它看起来像:

<img src="C:\Users\me\Pictures\wave.jpg" />

因此,如果我将我的 CHM 文件通过电子邮件发送给某人,而他们没有此图像,它将失败。另一种方法是:

<img src="images/wave.jpg" />

然后通过电子邮件向此人发送包含我的 CHM 文件和图像文件夹的 ZIP。在我看来,这也不是一个很好的解决方案。

有没有办法在 CHM 文件中“嵌入”图像?还是有一个干净的解决方案?

为了记录,我通过这个 XML 代码在我的 C# 项目中包含这个图像。

/// <summary>
/// Lorem ipsum dolor sit amet, consectetur adipiscing elit.
/// Pellentesque quis tortor sit amet magna posuere sagittis. 
/// Integer aliquet nibh elit, ut porta ex laoreet et
/// </summary>
/// /// <remarks>A picture: <br />
/// <img src "C:\Users\me\Pictures\wave.jpg" />
/// </remarks>

【问题讨论】:

次要挑剔:将 C# 代码标记添加到代码块中可能是个好主意,以便 XML 语法突出显示工作。 【参考方案1】:

这只是一个 Visual Basic 示例,但我认为 C# 就在附近。我假设您使用的是 sandcastle Help File Builder (SHFB)。

如果图像没有在 MAML 主题中使用,只需将 SHFB 项目中的 BuildAction 设置为 Content 并将它们放在图像文件夹中。它们会自动复制到工作文件夹并编译到 CHM 帮助文件中。

将 [images] 文件夹导入 SHFB 项目资源管理器的步骤,MAML 主题未引用:

    从树上下文菜单中选择添加和现有文件夹...,选择 [图像]-文件夹 对于每个图像文件,将 BuildAction 从图像设置为内容 在 SHFB 中,按下构建帮助文件按钮

构建完成后,您将获得一个带有图像的 CHM 帮助文件。

我附上了一些 Visual Basic 项目、SHFB 和生成的 CHM 的快照。

【讨论】:

感谢 BuildAction = Content 提示。大多数参考资料建议将其设置为“Image”并将 CopyToMedia 属性设置为“true”应该部署图像文件并使其甚至可用于非 MAML 主题。但是,这对我不起作用,而“内容”却可以。

以上是关于使用 Sandcastles 在 CHM 帮助文件中嵌入图像的主要内容,如果未能解决你的问题,请参考以下文章

如何将帮助文件 (.chm) 与 Web 应用程序集成?

在 C# 中打开 CHM(帮助文件)

chm 转 pdf 工具推荐与对比

.chm 文件转换为 pdf文件

Linux/GTK 上存在哪些应用程序帮助系统(如 chm 文件)? [关闭]

使用java代码打开chm格式的帮助文档