1

我有如下的html代码:

文件.html

<body>
    <h1>TEST</h1>
    <p>this is test</p>
    <table>
        <tr>
            <td>1</td>
            <td>2</td>
        </tr>
        <tr>
            <td>3</td>
            <td>4</td>
        </tr>
        <tr>
            <td>5</td>
            <td><img src="../../../wamp/www/html2doc/SGEPP.jpg"></td>
        </tr>
    </table>

html2doc.php

<?php
        $handle = fopen("doc2html.html","r");
        $contents = '';
                while (!feof($handle)) {
                $contents .= fread($handle, 8192);
                }   
                header("Content-type: application/vnd.ms-word");
                header("Content-Disposition: attachment;Filename=html2word.doc");
                echo $contents;
?>

问题:

当我转换它时,我得到了 html2word.doc 但我只能从 html 文件中获取所有文本。对于 html 文件中的图像我无法得到它,它缺少图像。所以我也想从 html 和图像中获取所有数据.我该如何解决这个问题?请任何人帮助我,谢谢。

4

4 回答 4

3

我一周前处理了这个脚本(html2doc)。因此请注意,您不要将图像保存在*.doc文件中。它们仅像指向您的服务器的链接一样插入。src所以解决方案是在标签中写入绝对路径。您逐行阅读您的 HTML 页面。因此,请尝试在每一行中找到您的 img 标签并将 src 替换为新标签。

$handle = fopen("html2doc.html","r");
$contents = '';
while (!feof($handle)) {
    $str = fread($handle, 8192);
    $str = str_replace('src="../../../','src="http://'.$_SERVER['SERVER_NAME'].'/path/to/imgages/',$str);
    $contents .= $str;
}   
header("Content-type: application/vnd.ms-word");
header("Content-Disposition: attachment;Filename=html2word.doc");
echo $contents;



// Output:
<body>
<h1>TEST</h1>
<p>this is test</p>
<table>
    <tr>
        <td>1</td>
        <td>2</td>
    </tr>
    <tr>
        <td>3</td>
        <td>4</td>
    </tr>
    <tr>
        <td>5</td>
        <td><img src="http://www.temp.com/path/to/imgages/wamp/www/html2doc/SGEPP.jpg" /></td>
    </tr>
</table>

所以现在图像有了路径,MS Word 可以很好地阅读并显示图像。但请记住:
1.您需要互联网连接才能显示图像
2.删除(或不可用的服务器)图像将使它们在所有生成的文档中都不可用
3.包含的 doc 文件中没有图像

于 2012-09-07T09:37:24.570 回答
0

通常,header() 函数仅重定向并强制下载特定应用程序,但带有图像的 word 文件无法正常工作,它只是从源而不是永久 doc 文件中读取...

于 2014-01-15T09:41:38.313 回答
0

尝试在之后添加随机查询.jpg.png喜欢例如: example.com/photo.jpg?ts=12345

于 2016-06-20T11:18:44.483 回答
0

我发现Word支持data uri,你可以把你的图片转换成base64。

// A few settings
$image = 'cricci.jpg';

// Read image path, convert to base64 encoding
$imageData = base64_encode(file_get_contents($image));

// Format the image SRC:  data:{mime};base64,{data};
$src = 'data: '.mime_content_type($image).';base64,'.$imageData;

// Echo out a sample image
echo '<img src="', $src, '">';
于 2019-01-04T03:27:32.230 回答