0

我从我的数据库中将数据从我的 Web 应用程序导出为 HTML 格式的单词,这对我来说很好,我已将图像插入到记录中,文档也显示图像,对我来说一切正常,除非我保存该文件并发送到其他人.. ms word 将找不到指向该图像的链接

无论如何要将该图像保存在文档上,这样就不会出现路径问题

这是我的代码:StrTitle 包含所有 HTML,包括图像链接

  string strBody = "<html>" +
            "<body>" + strTitle +
            "</body>" +
            "</html>";
        string fileName = "Policies.doc";
        //object missing = System.Reflection.Missing.Value;
        // You can add whatever you want to add as the HTML and it will be generated as Ms Word docs
        Response.AppendHeader("Content-Type", "application/msword");
        Response.AppendHeader("Content-disposition", "attachment; filename=" + fileName);
        Response.Write(strBody);
4

4 回答 4

0

如果您真的想灵活地创建 doc 或 docx 类型的文件,请使用 word 文档创建库。与所有其他流行的文档格式一样,结构需要足够准确,以供打开文档的程序使用。如果您的内容不是 PDF 阅读器所期望的结构,那么您显然不能仅通过设置内容类型“应用程序/PDF”来创建 PDF 文件。内容类型只会让浏览器识别扩展名(在这种情况下不正确)并将其下载为 PDF,但它实际上是简单的文本。MS word 或任何其他需要正确解析和显示特定文档结构的格式也是如此。

于 2013-06-13T09:05:16.963 回答
0

由于每张图片、表格都是 Word/Excel/Powerpoint 中的类型,您可以简单地在您的程序中添加 AlternativeText 到您的图片中,这实际上会保存下载 URL 的 URL,当您打开时,它将检索其 URL 并代替它。

foreach (NetOffice.WordApi.InlineShape s in docWord.InlineShapes)
{
    if (s.Type==NetOffice.WordApi.Enums.WdInlineShapeType.wdInlineShapePicture &&  s.AlternativeText.Contains("|"))
    {
          s.AlternativeText=<your website URL to download the picture>;
    }
}

这将是 C# 方法,但需要更多时间来制作图片。如果你为它写一个小软件,替换所有包含s.AlternativeText的图片,你可以同时替换很多图片。

NetOffice.WordApi.InlineShape i=appWord.ActiveDocument.InlineShapes.AddPicture(s.AlternativeText, false, true);

它将在该位置查找图片。

您可以使用我写给您的 1 循环为您的整个文档执行此操作。意思是,如果它是一张图片并且包含一些 AlternativeText,那么在你循环中你使用 AddPicture 函数。

编辑:另一种解决方案,是为你的图片设置一个超链接,它实际上会转到图片所在的FTP服务器,当你点击图片时,它会打开它,这意味着他可以自己替换它(坏,如果您的文档中有 200 张图片)

根据剪贴板编辑:

 string html = Clipboard.GetText(TextDataFormat.Html);
 File.WriteAllText(temporaryFilePath, html);
 NetOffice.WordApi.InlineShape i=appWord.ActiveDocument.InlineShapes.AddPicture(temporaryFilePath, false, true);

Word 中的剪贴板能够转换给定的 HTML,并且当您粘贴它以将该表格或图片转换为 Word 时。这也适用于 Excel,但不适用于 Powerpoint。你可以为你的图片做类似的事情,然后从你的数据库中拖放。 在此处输入图像描述

于 2013-06-13T09:04:23.293 回答
0

您可以img使用 base64 编码的图像数据创建 html 标签。这样,图像数据就包含在它自己的 html 文档中。

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIA..." />

于 2013-06-13T08:48:28.643 回答
0

您的图像可能只能通过文件系统获得(即它们src以 开头file)。

有几种方法

  1. 通过 Internet 提供图像:确保它们以下载者可见的 Web 服务器src开始http并且托管在下载者可见的 Web 服务器上(例如,它们从其下载图像的同一服务器)

  2. 使用库,例如​​参见 NuGet

  3. 您可以按照@DevZer0的建议内联图像。

根据经验

  1. 是最简单的实现,但有一些烦恼(服务器需要对用户可用)

  2. 如果您进行大量 Word 或 Office 文件操作,这可能是最好的方法。

  3. 可以做到,它会解决问题,虽然你不会有一个完整的库来支持更多的用例。

于 2013-06-13T08:49:13.887 回答