LoginSignup
ek9yama
@ek9yama

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

TCPDFでPDF出力の際に、ページ番号を出力時に右寄せ出力がうまくいかない

解決したいこと

TCPDFを用いてPDFを作成する際に、フッターにページ番号を出力したいが、右寄せ指定しても若干左に位置がずれる。
正しい位置で出力するにはどうすればよいか、お知恵を貸してください。

発生している問題・エラー

黒枠内で右寄せとなるような出力位置を想定しているが、実際より左側に出力されてしまう。

screenshot-localhost-2023.12.27-14_13_08.jpg

該当するソースコード

以下のコードで、Footerの出力処理をオーバーライドしている。

class MYPDF extends TCPDF {

	// ヘッダ
	function Header() {
	}

	// フッタ
	function Footer() {
		// Position at 15 mm from bottom
		$this->SetY(-15);
		// Set font
		$this->SetFont('kozminproregular', '', 10);
		$text = $this->getAliasNumPage() . ' / ' . $this->getAliasNbPages();
		$this->Cell(0, 0, $text, 0, 0, 'R');
	}
}

自分で試したこと

getAliasNumPage や getAliasNbPages は、実際に数値を返す関数ではなく、後でページ数を埋め込むためのエイリアス文字列がセットされるようでした。(出力処理中に、最終の全体ページの取得ができないため)

getAliasNumPage = {{:pnp:}}
getAliasNbPages = {{:ptp:}}

考察

screenshot-localhost-2023.12.27-14_17_14.jpg

表示位置的は、"{{:pnp:}} / {{:ptp:}}" という文字列を基に出力位置が決定されたうえで、出力されているのではないかと推測されるが、良い解決方法が見つかりません。
※例では、変換されないように「:」を「;」にしている

この現象が起こるのは、中央ぞろえ、右詰めにしたときだけであり、左詰めの場合は、不自然な余白が空くことはないため、おとなしく左詰めで座標を指定して出力すべきかもしれませんが、コード的にもナンセンスなので、何かいい解決方法があればおしえてください。

0

No Answers yet.

Your answer might help someone💌