gpt4 book ai didi

php - 将 .docx 文件(带有 .emf 图像背景)转换为 PDF 时出错

转载 作者:可可西里 更新时间:2023-11-01 12:21:14 26 4
gpt4 key购买 nike

基于 Laravel 的应用程序正在将文档(.doc、.docx、.pdf、.png、.otd、html 等)转换为 PDF,以便它们可以全部合并到一个主 PDF 文档中。它使用了像 PHPWord 这样的插件组合和 DOMPDF Wrapper进行文件加载和创建。每隔一段时间,该过程就会因 Word 文件而遇到错误。

ERROR: PhpOffice\PhpWord\Exception\InvalidImageException: Invalid image: zip:// ... #word/media/image2.emf

该错误是由文档中的图像背景引起的,该图像背景的作用类似于水印。出错的 PHPWord 部分是 PhpOffice\PhpWord\Element\Image->checkImage() 方法,但在尝试加载文件时发生。

Settings::setPdfRendererName(Settings::PDF_RENDERER_DOMPDF);
$pdfWord = IOFactory::load(storage_path() . '/app/uploads/randomfile.docx', 'Word2007');

应用程序如何将嵌入了 EMF 图像的 Word 文档转换为 PDF?

有关如何重现错误的更多代码/信息,Github PHPWord 库中存在一些问题。

  1. Support EMF image #1480
  2. Read docx error when contains image from remote url #1173

环境相关信息:

  • 服务器: Windows/IIS
  • PHP: 7.2.11
  • Laravel: 5.7.15
  • PHPWord: 0.15.0

编辑:我也试图从不同的角度来解决这个问题,但无济于事。我尝试使用 PHP 的 ZipArchive要解压缩 docx 文件,从文档中删除 emf 图像 (ZipArchive::deleteName()),删除 [Content_Types].xml 中对 emf 图像的引用(ZipArchive::getFromName()),然后将 docx 文件压缩备份,但这没有用。我可以打开新的 docx 文件并看到图像消失了,但应用程序中仍然存在 PHPWord 错误。

最佳答案

看起来 PHPWord 已打开功能请求来解决此问题。

https://github.com/PHPOffice/PHPWord/issues/1480

我认为您在文件更改方面走在正确的道路上,PHPWord 仍在尝试访问的地方可能引用了您丢失的图像。

我会将文件解压缩到您的本地驱动器上,然后 grep(搜索展开文件的内容)您要查找的文件的目录。这将向您显示您可能还需要在哪些地方将其删除,以免在文件中被引用。

关于php - 将 .docx 文件(带有 .emf 图像背景)转换为 PDF 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53639999/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com