TCPDF に TCPDF::addDigitalSignature()
というメソッドが見つからなかったので、TCPDF::setSignatureAppearance()
の話として、回答いたします。ラッパークラスのメソッドの話か…。
TCPDF::__constract()
の第2引数に、$unit = 'mm' とあって、内部的に px や dpi の変換処理があるはず、と思って、リファクタしてみました。
調査した TCPDF のバージョンは 6.2.12 です。
tcpdf.php 1907行目に以下の記述があるので、
php
1$this->setPageUnit($unit);
setPageUnit()
の定義を見ると、2011行目に定義されています。
php
1
2 4567
8 public function setPageUnit($unit) {
9 $unit = strtolower($unit);
10 //Set scale factor
11 switch ($unit) {
12 // points
13 case 'px':
14 case 'pt': {
15 $this->k = 1;
16 break;
17 }
18 // millimeters
19 case 'mm': {
20 $this->k = $this->dpi / 25.4;
21 break;
22 }
23 // centimeters
24 case 'cm': {
25 $this->k = $this->dpi / 2.54;
26 break;
27 }
28 // inches
29 case 'in': {
30 $this->k = $this->dpi;
31 break;
32 }
33 // unsupported unit
34 default : {
35 $this->Error('Incorrect unit: '.$unit);
36 break;
37 }
38 }
39 $this->pdfunit = $unit;
40 if (isset($this->CurOrientation)) {
41 $this->setPageOrientation($this->CurOrientation);
42 }
43 }
mm → px に変換したいのですから、
php
1case 'mm': {
2 $this->k = $this->dpi / 25.4;
3 break;
4}
ここを応用できそうです…。
と、ここまで書いて気づいた(汗)
TCPDF::__constract()
で 第2引数に px
を指定すればいいじゃん…
こんな感じで↓
php
1$tcpdf = new TCPDF('P', 'px', ...);
これで、いいのではないでしょうか。
ちなみに、__constract() で指定しにくいようでしたら、
php
1 345
6 protected $dpi = 72;
と定義されているので、以下のようにラッパークラスを定義して、
php
1class MyPDF extends TCPDF
2{
3 public getDpi() {
4 return $this->dpi;
5 }
6}
php
1$mypdf = new MyPDF();
2$dpi = $mypdf->getDpi();
3var_dump($dpi);
というふうに、dpi を取得できると思います。
TCPDF本体には、$this->dpi
を書き換えるメソッドは用意されていない(「$this->dpi =」という文字列を検索しヒットしないことを確認)ようなので、72
固定でも問題はないかとは思います。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/06 04:40
退会済みユーザー
2017/03/06 04:51 編集