我将现有Microsoft Word文档的部分内容保存为HTML,并在面板中动态嵌入此HTML以向用户提供说明。
除了没有出现的图像外,此功能正常。检查生成的HTML我看到显示图像的HTML是
<img src="home_files/image001.png" />
在Visual Studio中,HTML帮助页面存储在名为帮助的文件夹中,因此我更改了此行以包含帮助文件夹
<img src="help/home_files/image001.png" />
通过此更改,图像可以正确显示。
我必须从word文档生成超过50个帮助页面,因此不要手动想要更改所有图像位置,特别是如果有更改,某些页面将被重新生成。
有没有一种方法可以正确显示图像而无需编辑由Word创建的凌乱文档?
或者有更好的方法来生成Word文档的HTML版本吗?
我没有使用PDF,因为并非所有浏览器都会将PDF嵌入到网页中
答案 0 :(得分:4)
有没有一种方法可以正确显示图像而无需编辑由Word创建的凌乱文档?
我想您可以运行一些简单的客户端代码来更改这些src
标记的<img>
属性。你会得到像
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实现中完成相同的操作,请注意这些可能缺少上面代码段中描述的功能,因此可能需要重写。
或者有更好的方法来生成Word文档的HTML版本吗?
说实话,一般来说这是一个非常糟糕的主意(或者至少在过去)。 Word不适合这种东西,所以你可能会遇到很多麻烦。几年前我在一家公司工作,他们有一个特殊的工具只是为了清理从Word复制的HTML内容,虽然我从来没有对它做过任何维护我记得代码很复杂,所以如果你愿意的话我也不会感到惊讶遇到意想不到的问题。更合乎逻辑的是将内容写在一个首先用于Web的编辑器中。即使将粘贴复制到一个针对网络的编辑器中也可能会产生奇迹(如果编辑器是一个相当严格的编辑器)。
答案 1 :(得分: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()以修复错误的路径。
答案 2 :(得分: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));
}
答案 3 :(得分:0)
将此代码添加到.htaccess,您无需使用docs :)
RewriteEngine on
RewriteRule ^home_files/([^\.]+\.(png|jpg))$ /help/home_files/$1 [L]
注意:要准确编写路径,有必要了解文件夹结构
答案 4 :(得分:0)
或者有更好的方法来生成Word文档的HTML版本吗?
如果位置是唯一的问题,您还可以使用简单的
在控制台窗口中移动图像move home_files/*.* help/home_files
您还可以将该命令放在批处理文件中,并从桌面,开始菜单访问它,甚至将其分配给Word宏。
答案 5 :(得分:0)
从我读到的内容来看,你不是在寻找代码,而只是寻找一次性转换问题的解决方案。
这种变化实际上很容易。在文件中进行搜索和替换。下载Notepad++,安装,运行,按Ctrl-F并转到“在文件中查找”选项卡。在“查找内容”字段中,输入“"home_files/
”,在“替换为”字段中输入“"help/home_files/
”。您可以将“过滤器”设置为“*.*
”,然后选择存储html文件的文件夹。单击“替换文件”,然后更改所有文件。无需编码。
请注意,通过在搜索中添加引号("
),您可以重新运行它,它不会破坏已修复的文件。
答案 6 :(得分:0)
答案 7 :(得分:0)
您也可以使用Adobe Dreamweaver执行此操作。选择您的文件夹并使用全部替换。