有没有办法使用 PHP 提取 .doc 文件的内容及其样式?

Posted

技术标签:

【中文标题】有没有办法使用 PHP 提取 .doc 文件的内容及其样式?【英文标题】:Is there a way to extract the content of a .doc file along with its styles using PHP? 【发布时间】:2022-01-22 22:05:15 【问题描述】:

我正在尝试提取 .doc 文件的内容(及其样式),然后将其上传到 WordPress 以创建新帖子。

我正在使用 phpWord 库,但我只能获取纯文本的内容,我想知道是否可以提取数据及其样式。

编辑:

我已经修改了我的代码,虽然我仍然无法获得样式,但我能够获得由 PHPWord 本身生成的 html 格式的文档。

正如我在前几行中提到的那样,问题在于样式并且它没有保留任何图像,当我保存时它们都被删除了。

目前,从 .doc 中提取信息的部分代码如下所示:

$source = 'c0000001.doc';

$phpWord = \PhpOffice\PhpWord\IOFactory::load($source, 'MsDoc');

$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'HTML');

$objWriter->save('output.html');

非常感谢您的帮助。

【问题讨论】:

【参考方案1】:

是的,您可以按照以下方式进行操作

// Read contents
$source = 'c0000001.doc';
echo date('H:i:s'), " Reading contents from `$source`";

$phpWord = \PhpOffice\PhpWord\IOFactory::load($source, 'MsDoc');

$text = '';

$sections = $phpWord->getSections();

foreach ($sections as $s) 
    $els = $s->getElements();
    foreach ($els as $e) 
        if(!$e instanceof \PhpOffice\PhpWord\Element\Text)
          continue;
        
        $text .= $e->getText();
        $styles = $e->getParagraphStyle(); //do somethign witth the style
     $styles = $e->getFontStyle(); //do somethign witth the style
    

方法来源:https://github.com/PHPOffice/PHPWord/blob/develop/src/PhpWord/Element/Text.php

【讨论】:

这会返回以下错误:致命错误:未捕获错误:调用未定义的方法 PhpOffice\PhpWord\Element\Text::getStyle() @Alex 啊抱歉我改了答案 我刚刚修改了我的问题,我已经取得了进展,但是我有新的问题。

以上是关于有没有办法使用 PHP 提取 .doc 文件的内容及其样式?的主要内容,如果未能解决你的问题,请参考以下文章

从Txt,PDf,Google云端硬盘中的Doc文件中提取电子邮件地址

检测从数据库中提取的文件的 MIME 类型

如何从 PDF 文件中提取突出显示的部分

有没有办法使用 Power Query 从跨度中提取“标题”属性内容?

如何在 python 中提取之前重命名压缩文件的内容?

聚合物3 - 有没有办法将html模板提取到一个单独的html文件中?