2017-08-07 57 views
2

我正尝试使用表单创建PDF文件。我使用的是php和tcpdf。 文本字段需要精确定位以适合背景中的图像。 某些文本字段具有默认值(通过“v”属性)。使用默认值的TCPDF Textfield问题

问题是,当我单击文本字段来编辑内容时,文本将几个像素移动到一边(可能是因为活动输入字段周围的边框)。当输入失去焦点时,文字不会回到原来的位置。

我试图想象这些截图的问题:

(注意相对于低于该行的文本位置)

Problem examples

我的表单默认设置:

$pdf->setFormDefaultProp(array('lineWidth'=>1, 'borderStyle'=>'solid', 
'fillColor'=>array(), 'strokeColor'=>array(255, 128, 128))); 

这是该领域的代码:

$pdf->TextField('test', 47, 6, [], ['v' => 'test(12)'], 8, 13); 

我迄今为止尝试:

  • 设置lineWidth0,但在边界不再可见,文字依然继续。

  • borderStyle设置为'none',结果相同。

  • strokeColor设置为[],结果相同。

我想这样做:

  • 设置填充为默认值(或以其他方式影响其定位)

  • 删除边框从活动表单字段(不只是使其不可见)

我注意到在TCPDF例如这里相同的行为:https://tcpdf.org/examples/example_014/

如果你点击进入地址栏,文字向上移动到左边。

回答

0

虽然我没能解决与PHP的问题,我设法找到(至少对于我们的项目),一个可行的解决方法:

如果我插入通过Javascript的默认值,不会发生作用。

$js = " 
var fields = {'field1':'test', 'field2':'test2'}; 
for (var fieldName in fields) { 
    if (!fields.hasOwnProperty(fieldName)) continue; 
    var field = getField(fieldName); 
    if (field && field.value === '') { 
     field.value = fields[fieldName]; 
    } 
} 
"; 
$this->pdf->IncludeJS($js); 

其缺点,如果用户清空一个字段的默认值将再次对未来充满开放的文件。这对我们的项目来说没有用处,所以它适用于我们,但请记住!

所以这绝不是完美的,但它帮助我们继续我们的项目。也许有人搜索这个问题发现这有帮助:)

如果有人发现一个实际的解决方案,我仍然感激不尽!