10

我正在使用 TCPDF 生成 pdf。

我的问题是 Footer() 方法中的以下行:

$this->Cell(0, 10, 'Page '.$this->getAliasNumPage().'/'.$this->getAliasNbPages(), 'T', false, 'R');

这是在文档页脚中插入页码的标准行,但输出右侧有一点空间。您可以在网站的示例 1 中看到它:http ://www.tcpdf.org/examples/example_001.pdf

如果我像这样插入普通文本:

$this->Cell(0, 10, 'Foobar', 'T', false, 'R');

文本完全向右对齐,没有任何问题。

我深入研究了源代码,它似乎与编码有关,但我真的不明白这一点..有人可以帮忙吗?

问候

4

9 回答 9

5

我这样解决了:

$this->Cell(0, 0, $this->getAliasRightShift().$this->PageNo().'/'.$this->getAliasNbPages(), 1, 0, 'R');

如果您有超过 99 页,您将再次遇到对齐问题!使用其他东西来生成你的学位论文的pdf!:)

于 2011-10-20T21:01:24.990 回答
3

生成后可以添加页码,不需要别名。在最后做之前$pdf->Output(...);

$numPages = $pdf->getNumPages();

for($int=1;$int < $numPages + 1; $int++)
{
    $pdf->setPage($int);
    $pdf->SetY(-15);
    $pdf->SetFont('helvetica', '', 9);
    $pdf->writeHTML('Page '.$int.'/'.$numPages,true,false,true,false,'R');
}
于 2019-02-25T16:37:45.333 回答
2

我已经解决了:

$txt='Page '.$this->PageNo().' of '.$this->getNumPages()

代替:

$txt='Page '.$this->getAliasNumPage().' of '.$this->getAliasNbPages()

Isotypelab.org上的意大利语翻译和更新

于 2012-07-02T17:33:10.063 回答
1

不幸的是,TCPDF对齐别名不是替换别名的最终数字。使用 $this->AliasNbPages('{p}') 和 $this->AliasNumPAge('{n}') 不会有太大帮助。额外的填充将保留在原处。

唯一的解决方案是放置页码而不是别名。

SourceForge.net 上的原始错误(TCPD 错误跟踪器)

于 2011-06-29T12:23:21.683 回答
1

由于我的文档不超过 10 页,我有 2 个解决方案,给它更多的宽度(在我的情况下为 260,因为我有 PDF_PAGE_ORIENTATION='L')并对齐'R':

$this->Cell(260, 6, 'Page '.$this->getAliasNumPage().' of '.$this->getAliasNbPages(), 0, 0, 'R', 0, '', 0, false, 'T', 'C');

或 WIDTH=0 的两个单元格,将“C”和第二个单元格对齐,并带有一些空格:

$this->Cell(0, 6, '', 0, 0, 'C', 0, '', 0, false, 'T', 'C');
$this->Cell(0, 6, 'Page '.$this->getAliasNumPage().' of '.$this->getAliasNbPages().'        ', 0, 0, 'C', 0, '', 0, false, 'T', 'C');

因此,如果您有 10 页以上,请使用 WIDTH 和 SPACES。

在我的情况下,这将页码对齐到右侧。

于 2016-03-10T20:37:12.950 回答
0

我相信问题出在aliases内。这些只是在插入时计算宽度的文本片段,而不是用数字替换它们的时间。

所以 text-width 是为字符串 (literally) 计算的{np}/{nb}。当它被最后的数字替换时,它1/9比那个小,而23/109更大。

您可以将使用的 NbPages 别名 ( setAliasNbPages()?) 替换为反映 í 的宽度的东西,the total number of pages如果您可以估计它将是多少。而且我相信您可以直接使用当前页码而不使用别名,因此该别名至少不会出现问题。

于 2011-03-30T10:56:14.680 回答
0

getNumPages 不会这样做。如果您有 3 个页面,getNumPages() 将导致 1/1、2/2 和 3/3 getAliasNbPages() 将导致 1/3、2/3 和 3/3,所以问题仍然存在!

于 2013-06-30T07:45:09.017 回答
0

TCPDF 对齐别名而不是实际页码。要向右对齐,请不要使用别名:

$pageNumber = $this->getPage();
$this->Cell(0, 10, 'Page '.$pageNumber, 'T', false, 'R');

不幸的是,对于页面总数,您没有解决方案,因为当您的页脚代码被调用时,所有页面都尚未插入。

于 2019-10-14T11:45:06.890 回答
-4

尝试这个

$txt='Page '.$this->PageNo().' of '.$this->getNumPages()

为我工作

于 2013-02-26T15:38:20.400 回答