Php 如何从PDF文件中获取字符串或段落的X轴和Y轴?

Php 如何从PDF文件中获取字符串或段落的X轴和Y轴?,php,jquery,html,pdf,vtiger,Php,Jquery,Html,Pdf,Vtiger,我正在为一个名为vtiger CRM的系统制作一个模块,对于这个系统,我安装了一个名为PDFMaker的模块,它允许我使用HTML制作PDF文件,PDFMaker还允许我创建自定义函数插入模板中 我目前有一个自定义函数,它将名为signature的字符串放入HTML模板中 我需要的是在字符串转换为PDF文件后找到它的X轴和Y轴,因为当它从HTML模板转换为PDF文件时,维度发生了变化 我尝试使用jQuery中的.position函数,但问题是,它适用于HTML文件,但不适用于PDF文件,这是有道

我正在为一个名为vtiger CRM的系统制作一个模块,对于这个系统,我安装了一个名为
PDFMaker
的模块,它允许我使用HTML制作PDF文件,PDFMaker还允许我创建自定义函数插入模板中

我目前有一个自定义函数,它将名为
signature
的字符串放入HTML模板中

我需要的是在字符串转换为PDF文件后找到它的X轴和Y轴,因为当它从HTML模板转换为PDF文件时,维度发生了变化

我尝试使用jQuery中的
.position
函数,但问题是,它适用于HTML文件,但不适用于PDF文件,这是有道理的

现在我想知道如何从PDF文件中的段落或字符串中找到X轴和Y轴

创建的PDF文件例如发票、报价等,通常为A4纸张格式,但可能有所不同

这是我目前的自定义函数:

<?php
    if(!function_exists('signature')){
        function signature($string = 'Signature'){
            $xAxis = '<script>
                $(function(){
                    var p = $("#signature");
                    var position = p.position();
                    document.write(position.left);
                });
            </script>';
            $yAxis = '<script>
                $(function(){
                    var p = $("#signature");
                    var position = p.position();
                    document.write(position.top);
                });
            </script>';

            return $xAxis . ' ' . $yAxis;
        }
    }
?>

您必须计算它。
首先,您必须了解pdf中使用了多少像素。(取决于PDF的DPI)

我们称之为pdf_宽度(x)和pdf_高度(y)

其次,您需要找到模板的最大使用宽度。我看到你的模板的宽度缩小到适合页面。你可以通过得到一个元素的位置。右边来找到它,这个元素尽可能的右边。 让我们称之为max_template_x

现在我们需要签名文本的长度:

var length = p.position().right - p.position().left;
然后是模板上的实际位置:

if (p.position().right > max_template_x) {
posX = max_template_x - length}
然后将其与模板乘以pdf配额:

posX = posX * (pdf_width / template_max_x)
现在你有了x


对于y,您必须执行相同的操作,仅使用pagebrake,并取决于您在签名上方放置的文本量。

您必须计算它。 首先,您必须了解pdf中使用了多少像素。(取决于PDF的DPI)

我们称之为pdf_宽度(x)和pdf_高度(y)

其次,您需要找到模板的最大使用宽度。我看到你的模板的宽度缩小到适合页面。你可以通过得到一个元素的位置。右边来找到它,这个元素尽可能的右边。 让我们称之为max_template_x

现在我们需要签名文本的长度:

var length = p.position().right - p.position().left;
然后是模板上的实际位置:

if (p.position().right > max_template_x) {
posX = max_template_x - length}
然后将其与模板乘以pdf配额:

posX = posX * (pdf_width / template_max_x)
现在你有了x


对于y,您也必须这样做,只需使用pagebrake,并取决于您在签名上方放置的文本量。

发布您的自定义函数!如果我们不知道所使用的pdf库,我们怎么知道呢?我添加了它,虽然我怀疑它会有多大帮助。它没有,但现在我可以看到它;)您必须查看将html模板转换为pdf的函数。为什么你甚至需要它的位置?我需要一个API的位置,我正在使用Docusign,这是一个允许人们对文档进行数字签名的应用程序。我无法查看转换它的函数,因为它是许可产品,无法更改任何源代码。哎哟。。。我希望有人能给你一个有用的答案。我看到的唯一可能性是生成pdf,使用OCR查找字符串的位置(这本身就是一个难题),然后使用它。或者对每个模板进行静态定位(如果可能)。也许你的pdf模块可以让你做得更好,但我不能从这里判断。发布你的自定义函数!如果我们不知道所使用的pdf库,我们怎么知道呢?我添加了它,虽然我怀疑它会有多大帮助。它没有,但现在我可以看到它;)您必须查看将html模板转换为pdf的函数。为什么你甚至需要它的位置?我需要一个API的位置,我正在使用Docusign,这是一个允许人们对文档进行数字签名的应用程序。我无法查看转换它的函数,因为它是许可产品,无法更改任何源代码。哎哟。。。我希望有人能给你一个有用的答案。我看到的唯一可能性是生成pdf,使用OCR查找字符串的位置(这本身就是一个难题),然后使用它。或者对每个模板进行静态定位(如果可能)。也许你的pdf模块可以让你做得更好,但我不能从这里说出来。没有.position.right这样的东西,所以这不起作用。将文本包装成一个跨度并使用.width()pdf中使用的像素数量会根据用户对其格式的使用而变化。没有.position.right这样的东西,因此,这是行不通的。将文本包装成一个跨度并使用.width()PDF中使用的像素数量会根据用户使用的格式而变化。