【问题标题】:Convert PDF to HTML in PHP?在 PHP 中将 PDF 转换为 HTML?
【发布时间】:2019-02-10 12:34:42
【问题描述】:

我希望能够通过 PHP 将 PDF 文件转换为 HTML 文件,但是遇到了一些麻烦。

我找到了一种使用Saaspose 的基本方法,它可以让您将PDF 转换为HTML 文件。但是,这样做存在一些问题,例如 SVG、图像、定位、字体等的使用。

我只需要能够从 PHP 文件和与之关联的任何图像中获取文本,然后以线性格式显示它,而不是使用绝对定位格式。

我的意思是,如果 PDF 看起来像这样:

我想将其转换为单列设计 HTML 文件。如果有图片,我也希望它们返回。

这在 PHP 中可行吗?我知道我可以简单地从 PDF 文件中获取文本,但是也可以获取图像呢?

另一个问题是我希望所有内容都内联,因为它在单个文件中提供给客户端。目前,我可以通过一些代码进行设置:

for ($i = 0; $i < $object_number; $i++) {
                $object = $html->find("object")->find("embed")->eq($i);
                $embed = file_get_contents("Output/OutputHtml/" . $object->attr("src"));
                array_push($converted_obj, $embed);
                array_push($original_obj, $object);
            }

            for ($i = 0; $i < $object_number; $i++){
                pq($original_obj[$i])->replaceWith($converted_obj[$i]);
            }

它会抓取所有SVG 文件并内联显示它们。图片会更容易,因为我可以使用base64

【问题讨论】:

    标签: php


    【解决方案1】:

    1) 下载.exe文件并解压到一个文件夹:http://sourceforge.net/projects/pdftohtml/

    2) 创建一个 .php 文件,并放置此代码(假设 pdftohtml.exe 位于该文件夹内,源代码 sample.pdf 也是):

    <?php
    $source_pdf="sample.pdf";
    $output_folder="MyFolder";
    
        if (!file_exists($output_folder)) { mkdir($output_folder, 0777, true);}
    $a= passthru("pdftohtml $source_pdf $output_folder/new_file_name",$b);
    var_dump($a);
    ?>
    

    3) 输入MyFolder,你会看到转换后的文件(取决于页数..)

    附言我不知道,但也有很多商业或试用 api。

    【讨论】:

    • 这对我有用,非常感谢。但是如何在这里给一个页面范围进行转换呢?我尝试添加 passthru("pdftohtml $source_pdf 3-5 $output_folder/new_file_name",$b) 并没有用。你能告诉我吗?
    • 也许它会转换完整的 PDF,并且您必须添加一个 delte php 命令(在脚本执行后),以删除所有不需要的页面......有点像这个概念:$unwanted_pages=array(5,6,7,8); foreach ($unwanted_pages as $eachPageIndex) {unlink('filename'.$eachPageIndex);}
    • pdf 脚本有参数指定页面:linux.die.net/man/1/pdftohtml $a= passthru("pdftohtml -f $firstpage -l $lastpage $source_pdf $output_folder/new_file_name",$b);另请查看编码选项
    • 任何 Unix 解决方案,因为 .exe 无法在 Unix 系统上运行?
    • 感谢您让生活更轻松。
    【解决方案2】:

    使用Xpdf的跨平台解决方案:

    下载 Xpdf 工具 的相应包并将其解压缩到脚本目录中的子目录中。假设它被称为“/xpdftools”。

    将这样的代码添加到您的 php 脚本中:

    $pdf_file = 'sample.pdf';
    $html_dir = 'htmldir';
    $cmd = "xpdftools/bin32/pdftohtml $pdf_file $html_dir";
    
    exec($cmd, $out, $ret);
    echo "Exit code: $ret";
    

    脚本执行成功后htmldir目录将包含转换后的html文件(每个页面在一个单独的文件中)。

    Xpdf 工具使用以下退出代码:

    • 0 - 没有错误。
    • 1 - 打开 PDF 文件时出错。
    • 2 - 打开输出文件时出错。
    • 3 - 与 PDF 权限相关的错误。
    • 99 - 其他错误。

    【讨论】:

      【解决方案3】:

      您实际上要做的是重排 PDF 文件。我不确定这是否存在,而且最多也很难做到。

      可以编写一些代码来执行特定文件所需的操作,但对于一般情况,我认为这样做是不可能的。

      我在这里写了一篇文章,解释了为什么我认为回流 PDF 存在缺陷:http://www.planetpdf.com/enterprise/article.asp?ContentID=PDF_Reflow_in_Microsoft_Word_2012_Is_it_any_good

      特别有趣的是开头的段落“让我们用一个报纸的故事来说明这个问题。”

      您可能想了解 IDRsolutions(为了提高透明度,我工作的地方!)必须提供什么。

      我们目前正在将我们的 PDF 转 HTML5 和 PDF 转换软件放到云端:http://www.idrsolutions.com/cloud-pdf-converter/

      JPedal 的 PDF 文本提取和 PDF 图像提取功能可能更适合您。如果 PDF 转 HTML5 顺利的话,我们很可能也会考虑将其放入云端。

      文本提取:http://www.idrsolutions.com/pdf-to-text-conversion/

      图像提取:http://www.idrsolutions.com/extract-images-from-pdf/

      【讨论】:

      • IDR 的产品看起来很有趣,但是许可证非常昂贵。不适用于单个网站所需的小规模转化。
      【解决方案4】:

      您希望从您发布的图形中实现的实际上是图形的 OCR 转换。 http://www.phpclasses.org/package/2874-PHP-Recognize-text-objects-in-graphical-images.html

      【讨论】:

      • 嗯,不。 PDF 文件不是图像的集合,而是实际的文本。
      猜你喜欢
      • 2011-05-31
      • 1970-01-01
      • 1970-01-01
      • 2012-02-11
      • 2016-01-09
      • 2020-01-14
      • 2011-01-25
      • 1970-01-01
      • 2017-05-06
      相关资源
      最近更新 更多