2015-05-30 38 views
7

我将现有Microsoft Word文档的一部分保存为HTML,并在面板中动态嵌入此HTML以向用户提供说明。替换多个文档中的HTML字符串的部分

这工作正常,除了没有出现的图像。检查所生成的HTML我看到HTML要显示的图像是

<img src="home_files/image001.png" />

在Visual Studio中的HTML帮助页面被存储在一个名为帮助文件夹中,所以我改变了这一行,以包括Help文件夹

<img src="help/home_files/image001.png" />

有了这个改变图像显示正确。


我有机会从Word文档50页的帮助,所以不要手动想改变所有的图像位置,尤其是如果有改变一些网页将被重新生成。

有没有办法让图像正确显示,而无需编辑由Word创建的凌乱文档?

或者有更好的方法来生成word文档的HTML版本吗?

我没有使用PDF的不每个人的浏览器将显示PDF文件嵌入到网页

+0

尼克,你是否想通过启动php脚本来改变alredy生成的.html文件?生成的.html文件存储在一个文件夹中?也许你可以向我们展示其中的一个?或者两个。 –

+0

这已经被编辑成一个问题,我不想知道答案! –

回答

4

是否有正确显示,而无需编辑的Word gererated凌乱的文档中的图像的方法吗?

我想你可以运行一些简单的客户端代码来改变那些<img>标签的src属性。你会得到像

var imgs = document.querySelector("container").querySelectorAll("img"); 
for(var i=0;i<imgs.length;i++){ 
    var oldSrc = imgs[i].getAttribute(); 
    imgs[i].setAttribute("src", "help/"+oldSrc); 
} 

当然同样可以在任何服务器端DOM实现来完成,也请注意,这些可以缺少在上面的代码片段描述的特征,因此可能需要改写。

或者是否有更好的方法来生成HTML文档的HTML版本?

说实话,这是一个非常糟糕的主意(或至少是在过去)。单词并不意味着这种东西,所以你可能会遇到很多麻烦。多年前,我曾在一家公司工作过,他们有专门的工具来清理从Word复制的HTML内容,尽管我从未做过任何维护,但我确实记得代码非常复杂,所以如果您可能不会感到惊讶遇到意想不到的问题。更合乎逻辑的是,将内容写入首先用于Web的编辑器中。即使将复制粘贴到网络编辑器中也可能会产生奇迹(如果编辑器相当严格)。

+0

@ humble.rumble好吧,不能保证实现,我只知道很多东西在服务器端DOM实现中出错。毕竟HTML是一种相当古怪的语言。 –

+0

@ humble.rumble从粗略的眼光来看,它已经没有'querySelector',它是单独使用的最有用的DOM函数。但是,不应该用'getElementsByTagName'重写它。无论哪种方式,我从使用Word html输出的代码中记得的东西都更多,它有一些非常奇怪的构造来处理Word输出的一些奇怪的东西。可能是来自过去时代的文物,但它可能仍然相关。 –

1
<?php 
function processFiles($root) 
{ 
    $root = rtrim($root, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR; 
    if($hDir = opendir($root)) 
    { 
     while(false !== $filename = readdir($hDir)) 
     { 
      if($filename == '.' || $filename == '..') 
       continue; 

      $file = $root . $filename; 
      if(is_dir($file)) 
       call_user_func(__FUNCTION__, $file); 
      elseif(pathinfo($file, PATHINFO_EXTENSION) == 'html') 
      { 
       $old = file_get_contents($file); 
       $new = str_replace('home_files/', 'help/home_files/', $old); 
       file_put_contents($file, $new); 
      } 
     } 
     closedir($hDir); 
    } 
} 

processFiles('folder/with/html-files/'); 

这将处理所有的* .html文件和做str_replace()函数在他们解决了错误的道路。

1

怎么是这样的:

foreach (glob("path/to/files/*.doc") as $filename) 
{ 
$file = file_get_contents($filename); 
file_put_contents($filename, preg_replace("home_files/","help/home_files/",$file)); 
} 
0

添加该代码为.htaccess,你会不会需要做一些与文档:)

RewriteEngine on 
RewriteRule ^home_files/([^\.]+\.(png|jpg))$ /help/home_files/$1 [L] 

注:写准确的有必要知道文件夹结构

0

或者是否有更好的方法来生成HT单词文件的ML版本?

如果该位置是唯一的问题,你也可以只移动在控制台窗口的图像用一个简单的

move home_files/*.* help/home_files 

你也可以把该命令从一个批处理文件和访问桌面,开始菜单或甚至将其分配给Word宏。

0

从我读到的你不是在寻找代码,而只是解决你的一次性转换问题。

这个改变其实很简单。在文件中进行搜索和替换。下载Notepad++,安装,运行,按Ctrl-F并转到“在文件中查找”标签。在“查找内容”字段中,输入“"home_files/”,在“替换为”字段中输入“"help/home_files/”。您可以将“过滤器”设置为“*.*”,然后选择存储html文件的文件夹。点击“替换文件”,瞧,你所有的文件都改变了。不需要编码。

请注意,通过在搜索中添加引号("),您可以重新运行它,并且它不会中断已经修复的文件。

0

为什么不简单地用<base>标记更改文档的基本路径?

这是一个简单的更改(只需在每个标题中添加单个标签)。

解析整个文档以替换所有匹配的路径是非常昂贵和容易出错的。

0

此外,您可以使用Adobe Dreamweaver进行此操作。选择你的文件夹并使用全部替换。 enter image description here