Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中将PDF转换为HTML?_Php - Fatal编程技术网

在PHP中将PDF转换为HTML?

在PHP中将PDF转换为HTML?,php,Php,我希望能够通过PHP将PDF文件转换为HTML文件,但遇到了一些麻烦 我发现了一种基本的方法,可以使用它将PDF转换为HTML文件。但是,这也存在一些问题,例如SVG、图像、定位、字体等的使用 我所需要的只是能够从PHP文件中获取文本和与之相关的任何图像,然后以线性格式显示它,而不是以绝对定位格式显示它 我的意思是,如果PDF看起来像这样: 我想把它转换成一个单列设计HTML文件。如果有照片的话,我希望他们也能回来 这在PHP中可能吗?我知道我可以简单地从PDF文件中抓取文本,但是抓取图像又如

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

我发现了一种基本的方法,可以使用它将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]);
            }
($i=0;$i<$object\u number;$i++)的
{
$object=$html->find(“object”)->find(“嵌入”)->eq($i);
$embed=file\u get\u contents(“Output/outputtml/”$object->attr(“src”);
数组推送($converted\u obj,$embed);
数组_push($original_obj,$object);
}
对于($i=0;$i<$object\u number;$i++){
pq($original_obj[$i])->替换为($converted_obj[$i]);
}

它获取所有的
SVG
文件并以内联方式显示它们。图像将更容易做到这一点,因为我可以使用
base64

您实际上希望做的是重新流式显示PDF文件。我不确定这是否存在,充其量也很难做到

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

我在这里写了一篇文章,解释了我认为回流PDF有缺陷的原因:

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

你可能想看看IDRsolutions(为了透明度,我在这里工作!)提供了什么

我们目前正在将我们的PDF转换为HTML5和PDF转换软件放到云中:

JPedal的PDF文本提取和PDF图像提取功能可能更适合您。如果PDF到HTML5运行良好,我们很可能也会考虑将其放到云中

文本提取:


图像提取:

您希望从发布的图形中实现的实际上是图形的OCR转换

1)下载.exe文件并将其解压缩到文件夹:

2) 创建一个.php文件,并将此代码放入(假设pdftohtml.exe和源sample.pdf都在该文件夹中):


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


p、 我不知道,但也存在许多商业或试用API。

跨平台解决方案使用:

下载适当的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
    -其他错误

没有。PDF文件不是图像的集合,而是实际的文本。这对我很有用,非常感谢。但是如何在这里指定要转换的页面范围呢?我尝试添加passthru(“pdftohtml$source\u pdf 3-5$output\u folder/new\u file\u name”,$b),但没有成功。你能告诉我吗?也许它会转换成完整的PDF,你必须添加一个delte php命令(在脚本执行之后),删除所有不需要的页面。。。有点像这样的概念:
$redired_pages=array(5,6,7,8);foreach($eachPageIndex形式的不需要的页面){unlink('filename'.$eachPageIndex);}
指定页面的pdf脚本有参数:$a=passthru(“pdftohtml-f$firstpage-l$lastpage$source\u pdf$output\u folder/new\u file\u name”,$b);还可以查看编码选项任何Unix解决方案,因为.exe无法在Unix系统上运行?感谢您让生活变得更轻松。IDR的产品看起来很有趣,但许可证非常昂贵。不适合单个网站所需的小规模转换。
$pdf_file = 'sample.pdf';
$html_dir = 'htmldir';
$cmd = "xpdftools/bin32/pdftohtml $pdf_file $html_dir";

exec($cmd, $out, $ret);
echo "Exit code: $ret";