2017-08-07 100 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); 

其缺點,如果用戶清空一個字段的默認值將再次對未來充滿開放的文件。這對我們的項目來說沒有用處,所以它適用於我們,但請記住!

所以這絕不是完美的,但它幫助我們繼續我們的項目。也許有人搜索這個問題發現這有幫助:)

如果有人發現一個實際的解決方案,我仍然感激不盡!