Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.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 是否有与TCPDF';s';注释';功能?_Php_Python_Pdf_Tcpdf_Reportlab - Fatal编程技术网

Php 是否有与TCPDF';s';注释';功能?

Php 是否有与TCPDF';s';注释';功能?,php,python,pdf,tcpdf,reportlab,Php,Python,Pdf,Tcpdf,Reportlab,我正在尝试使用reportlab库在pdf上编写“注释”。我已经使用reportlab成功地将新数据写入pdf,但我找不到有关如何创建注释的任何信息 当我说annotation时,我指的是TCPDF的annotate函数。这将在pdf中创建一个可单击和可移动的文本对象。 在python中必须有一种方法可以做到这一点,但到目前为止,我还没有找到任何信息 我已经看过了这篇文章和相关的链接,这些链接都是在公认的答案中发布的 我见过这个在python中使用php的工具,但我无法让它正常工作,而且它似

我正在尝试使用reportlab库在pdf上编写“注释”。我已经使用reportlab成功地将新数据写入pdf,但我找不到有关如何创建注释的任何信息

当我说annotation时,我指的是TCPDF的annotate函数。这将在pdf中创建一个可单击和可移动的文本对象。

在python中必须有一种方法可以做到这一点,但到目前为止,我还没有找到任何信息

我已经看过了这篇文章和相关的链接,这些链接都是在公认的答案中发布的



我见过这个在python中使用php的工具,但我无法让它正常工作,而且它似乎没有任何支持



当我运行该示例时,我得到一个无法阅读的pdf,其文本如下所示:

<?
include('tcpdf/config/lang/eng.php');
include('tcpdf/tcpdf.php');
$v0 = new TCPDF('PDF_PAGE_ORIENTATION', 'PDF_UNIT', 'PDF_PAGE_FORMAT', 'true', 'UTF-8', 'false');
$v0->setFontSubsetting(False);
$v0->setAuthor('VSzA');
$v0->setCreator('PPCG');
$v0->setTitle('TCPDF in Python!?');
$v0->setPrintHeader(False);
$v0->setMargins(10, 10);
$v0->AddPage();
$v0->SetFont('dejavusans', 'B', 12);
$v0->Cell(0, 0, 'Hello Python');
$v0->Ln();
$v2 = $v0->GetX();
$v1 = $v0->GetY();
$v0->setXY(30, 30);
$v0->Cell(0, 0, 'GOTOs are bad');
$v3 = $v1 + 2.5;
$v0->setXY($v2, $v3);
$v0->Cell(0, 0, 'I can has PHP variables');
$v0->Output();
?>

这看起来像是使用TCPDF创建pdf的正确php代码,但代码将保存到pdf文件中,而不是运行

到目前为止,我得出的结论是,只需使用php将python脚本中的所有数据发送到http服务器,并使用TCPDF在服务器上创建pdf,然后将新的pdf发送回python脚本,将其提供给最终用户。这听起来效率不高,所以我不想这样做

任何帮助都将不胜感激!
-杰克

在中注释有好消息和坏消息,好消息是可以在中注释。坏消息这是一个痛苦的屁股,因为它没有适当的记录,它限制了你的选择相当困难

您需要的函数是
canavas.textAnnotation
,它的使用方式如下:

canvas.textAnnotation("Your content", Rect=[x_begin, y_begin, x_end, y_end], relative=1)
这会将注释放置在相对于当前画布的
(x\u begin,y\u begin)
位置,或者如果关闭了相对于左下角的
相对位置

您可能会注意到,Reportlab注释与adobe生成的注释看起来不同,这与注释的
子类型有关,在Reportlab中,注释的
子类型固定为
文本
,而adobe使用了其他内容(请参见第8.4.5节)


这可以通过重载和来更改,但仅更改图标就需要大量工作。所以我不推荐它。

这真的很有帮助,对于注释,我希望它显示一个数字,而不是注释便笺对象。我还不能发布图片,但想象一个简单的正方形,里面有一个数字,它仍然是可移动的。这可能吗?在TCPDF中,它非常简单,这应该是可能的,因为它基本上是源代码中的
canavas.freeTextAnnotation
函数,但我现在无法让它工作((注意:DA=默认外观字符串)我也无法让它工作。我也尝试将自己的字典字段添加到freeTextAnnotation函数中,但没有结果。我只能将textannotation的子类型更改为“/FreeText”现在我的问题是,如果不能更改“DA”字符串,如何设置颜色格式?普通的setfillcolor和setstrokecolor不适用于注释。还有,是否可以将层与reportlab一起使用?很抱歉,响应太晚,但很可能你已经达到了reportlab的极限。我唯一的解决方案是可以想到的是将
DA
添加到允许的字典值中,但这同样需要创建各种对象的新版本。。