在 PHP 中将 PDF 转换为 HTML,类似于 DocuSign
Convert PDF to HTML in PHP similar to DocuSign
我们正在开发一个需要将PDF文件转换成HTML的网站,因为有些PDF是有表格的(不一定是可填写的PDF,这些PDF是打印来填写的)。
所以我们希望通过我们的网站填写,而不是打印文件并用笔填写。我们要无纸化了。
DocuSign 提供了这些,您可以在其中上传 PDF,然后您可以将其自定义为具有文本框、复选框。所以我们有点使用 DocuSign 作为参考,但仍然没有弄清楚他们是如何做到的(几乎完美地将 PDF 转换为 HTML,反之亦然)。
到目前为止,我已经尝试了几种将 PDF 转换为 HTML 的第 3 方软件。我试过 XPDF、Poppler 和 ImageMagick。
ImageMagick 将 PDF 转换为不适合的图像,因为这些图像在转换回 PDF 进行打印时尺寸较大。
根据我的研究,Poppler 是 XPDF 的一个分支,我在使用 XPDF 后尝试过它,看看它是否更好,它基本上做了 XPDF 所做的事情,但它将 PDF 转换为在 CSS 转换为 HTML 时。这很好,但它失去了字体系列。
XPDF转PDF为HTML但是像素比较小,所以转回PDF的时候放不下整页,还得手动调整所有的CSS 适合它。
所以在使用了这些第三方软件之后,我使用 MPDF 将 HTML 文件转换回 PDF,并且转换后的文件有很多不一致之处。文本未正确对齐。和原来的PDF基本不一样
如有任何帮助,我们将不胜感激!
您尝试做的事情并不像看起来那么简单。我与 Adobe Sign(以前称为 EchoSign)合作多年,我对这些服务的工作原理非常了解。话虽如此,我强烈建议研究其中一种 eSign 服务,而不是尝试推出自己的服务。它将为您节省很多时间。
这就是它的工作原理
- PDF 本身必须有一个带有命名字段的表单。换句话说,如果您在 Adobe Reader 或 Chrome 中打开此类 PDF,您应该能够填写这些字段。如果您的 PDF 没有 PDF 表单,您将需要 Acrobat PRO 等其他软件来创建表单。
- 您必须将 PDF 转换为可在浏览器中呈现的平面图像。
- 您将需要一个工具来提取 PDF 表单信息,例如字段名称、类型、维度和坐标。
- 有了所有这些信息,您就可以在浏览器中呈现 PDF 图像。使用上一步中的字段类型、尺寸和坐标,将绝对定位的 HTML 表单元素放置在图像上。每个 HTML 元素都需要按名称引用 PDF 表单域。
- 一旦您从 HTML 小部件收集了信息和像
field_name => field_value
这样的数据图,您将需要使用其他软件以编程方式在原始 PDF 中填写 PDF 表单。 PDF表单信息通常存储在FDF或XFDF文件中。
我不知道有哪个工具可以帮助您解决上述问题,至少 PHP 没有。但是,我可以为您提供一个有用的建议:
- PDFtk Server - 可以帮助您同时提取 PDF 表单字段信息并填写相同的 XFDF 文件。不幸的是,您可以使用此类工具提取的表单字段信息不包括尺寸和坐标。
- iText - .Net 和 Java 中可用的库,可用于提取有关 PDF 表单的详细信息,包括字段的维度和坐标。您可以使用此工具包创建可与 PHP.
通信的微服务
肯定有更多的工具可以完成这项工作。希望这些信息能指导您朝着正确的方向前进,或者帮助您决定如何推进您的项目。
我们正在开发一个需要将PDF文件转换成HTML的网站,因为有些PDF是有表格的(不一定是可填写的PDF,这些PDF是打印来填写的)。
所以我们希望通过我们的网站填写,而不是打印文件并用笔填写。我们要无纸化了。
DocuSign 提供了这些,您可以在其中上传 PDF,然后您可以将其自定义为具有文本框、复选框。所以我们有点使用 DocuSign 作为参考,但仍然没有弄清楚他们是如何做到的(几乎完美地将 PDF 转换为 HTML,反之亦然)。
到目前为止,我已经尝试了几种将 PDF 转换为 HTML 的第 3 方软件。我试过 XPDF、Poppler 和 ImageMagick。
ImageMagick 将 PDF 转换为不适合的图像,因为这些图像在转换回 PDF 进行打印时尺寸较大。
根据我的研究,Poppler 是 XPDF 的一个分支,我在使用 XPDF 后尝试过它,看看它是否更好,它基本上做了 XPDF 所做的事情,但它将 PDF 转换为在 CSS 转换为 HTML 时。这很好,但它失去了字体系列。
XPDF转PDF为HTML但是像素比较小,所以转回PDF的时候放不下整页,还得手动调整所有的CSS 适合它。
所以在使用了这些第三方软件之后,我使用 MPDF 将 HTML 文件转换回 PDF,并且转换后的文件有很多不一致之处。文本未正确对齐。和原来的PDF基本不一样
如有任何帮助,我们将不胜感激!
您尝试做的事情并不像看起来那么简单。我与 Adobe Sign(以前称为 EchoSign)合作多年,我对这些服务的工作原理非常了解。话虽如此,我强烈建议研究其中一种 eSign 服务,而不是尝试推出自己的服务。它将为您节省很多时间。
这就是它的工作原理
- PDF 本身必须有一个带有命名字段的表单。换句话说,如果您在 Adobe Reader 或 Chrome 中打开此类 PDF,您应该能够填写这些字段。如果您的 PDF 没有 PDF 表单,您将需要 Acrobat PRO 等其他软件来创建表单。
- 您必须将 PDF 转换为可在浏览器中呈现的平面图像。
- 您将需要一个工具来提取 PDF 表单信息,例如字段名称、类型、维度和坐标。
- 有了所有这些信息,您就可以在浏览器中呈现 PDF 图像。使用上一步中的字段类型、尺寸和坐标,将绝对定位的 HTML 表单元素放置在图像上。每个 HTML 元素都需要按名称引用 PDF 表单域。
- 一旦您从 HTML 小部件收集了信息和像
field_name => field_value
这样的数据图,您将需要使用其他软件以编程方式在原始 PDF 中填写 PDF 表单。 PDF表单信息通常存储在FDF或XFDF文件中。
我不知道有哪个工具可以帮助您解决上述问题,至少 PHP 没有。但是,我可以为您提供一个有用的建议:
- PDFtk Server - 可以帮助您同时提取 PDF 表单字段信息并填写相同的 XFDF 文件。不幸的是,您可以使用此类工具提取的表单字段信息不包括尺寸和坐标。
- iText - .Net 和 Java 中可用的库,可用于提取有关 PDF 表单的详细信息,包括字段的维度和坐标。您可以使用此工具包创建可与 PHP. 通信的微服务
肯定有更多的工具可以完成这项工作。希望这些信息能指导您朝着正确的方向前进,或者帮助您决定如何推进您的项目。