2017-08-07 14 views
2

フォームを使用してPDFファイルを作成しようとしています。私はphpとtcpdfを使用しています。 テキストフィールドは、画像を背景に収まるように正確に配置する必要があります。 一部のテキストフィールドにはデフォルト値があります( 'v'属性を使用)。TCPDFデフォルト値のテキストフィールド問題

コンテンツを編集するためにテキストフィールドをクリックすると、テキストが(おそらくアクティブな入力フィールドの周りの境界線のために)数ピクセルだけ横に移動するという問題があります。入力がフォーカスを失うと、テキストは元の位置に戻りません。

私はこれらのスクリーンショットの問題を視覚化しようとしました:

(下の行へのテキストの相対位置に注意してください)

Problem examples

マイフォームのデフォルト設定:

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

これはフィールドのコードです:

私がこれまで試してみました何

:境界線が見えなくなる一方、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); 

これは、ユーザーがフィールドを空にすると、ファイルを開くときにデフォルト値が再び入力されるという欠点があります。これは私たちのプロジェクトのためのユースケースではないので、私たちのために働くが、それを覚えておいてください!

これは決して完璧なことではありませんが、私たちのプロジェクトを進める上で役立ちました。そして、おそらくこの問題を探している人が役に立ちます:)

誰かが実際の解決策を見つけたら、私はまだ感謝しています!

関連する問題