2016-08-09 36 views
2

私はpdfに「注釈」を書くためにreportlabライブラリを使用しようとしています。私は正常にreportlabを使用してPDFに新しいデータを書きましたが、私はどのように注釈を作成するかに関する情報を見つけることができません。TCPDFの 'annotate'関数に相当するPython ReportLabはありますか?

私は注釈を言うとき、私はTCPDFの注釈機能を参照しています。これは、pdfでクリック可能で移動可能なテキストオブジェクトを作成します。

https://tcpdf.org/examples/example_036/

はPythonでこれを行う方法がなければならないが、これまでのところ、私はすべての情報を見つけることができませんでした。

私はこの投稿と受け入れられた回答に掲載された関連リンクを見てきました。

Add text to existing PDF document in Python

私はPythonでPHPを使用するため、このツールを見てきましたが、私はそれが正常に動作させることはできませんし、任意のサポートを持っていないようです。私は例を実行すると

https://github.com/dnet/ppcg/blob/master/tcpdf_example.py

私はテキストを読めない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ファイルに保存され、実行されませんでした。

結論私は今のところ、pythonスクリプトのすべてのデータをphpを使用してhttpサーバーに送信し、TCPDFを使用してサーバー上に自分のpdfを作成し、新しいpdfを私のpythonスクリプトをエンドユーザに提供します。これは単に不安定に聞こえるので、私はこのようにしたくないです。

助けていただけたら幸いです! -Jake

答えて

1

に注釈に関する良いニュースと悪いニュースがありますが、良いニュースはに注釈することができます。悪いニュースそれは適切に文書化されていないとあなたのオプションをかなり厳しく制限するので、お尻の痛みです。

あなたは次のように使用されているcanavas.textAnnotationが必要になります機能:

canvas.textAnnotation("Your content", Rect=[x_begin, y_begin, x_end, y_end], relative=1) 

これは現在のキャンバスに(x_begin, y_begin)相対で注釈を配置します、またはあなたが左下隅にrelative相対をオフにした場合。

あなたはReportLabの注釈は、Adobeが生成するものとは異なって見えることに気づくかもしれませんが、これは(PDF referenceの8.4.5を参照してください)Adobeは何か他のものを使用しながら、ReportLabの中Textに固定されたアノテーションのSubTypeに関係しています。

これはCanvas objectAnnotation objectのオーバーロードによって変更できますが、そうすることでアイコンを変更するだけで多くの作業が可能になります。だから私はそれをお勧めしません。

+0

これは本当に便利です。注釈のために、注釈付箋メモオブジェクトの代わりに数字を表示させたいと思っています。私はまだ写真を投稿することはできませんが、内部に数字のある単純な四角形を想像してください。それはまだ動いています。これは可能ですか? TCPDFではかなりシンプルでした。 –

+0

基本的にcanavasなので、これは可能です。freeTextAnnotation'関数がソースコードに含まれていますが、今は動作させることができません。私は独自の辞書フィールドをfreeTextAnnotation関数にも追加しようとしましたが、結果はありませんでした。私はちょうどtextannotationのサブタイプを次のように変更することができました:(注:DA =デフォルトの出現文字列) – B8vrede

+0

"/ FreeText"これは私のために働く今、私の次の質問は、 'DA'文字列を変更できない場合、どのように色をフォーマットするのでしょうか?通常のsetfillcolorとsetstrokecolorはアノテーションでは機能しません。 –

関連する問題