2011-03-30 67 views
9

我正在使用TCPDF生成pdf。TCPDF - Pagenumbers不完全对齐

我的问题是从页脚()方法如下行:

$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'); 

文本完全一致的权利,没有任何问题。

我挖掘到源代码,它似乎是与编码的东西,但我真的没有明确的观点..有人可以帮助吗?

问候

回答

0

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

因此,字符串(字面上)的文本宽度计算为{np}/{nb}。当它被1/9末尾的数字替换为小于此值时,23/109更大。

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

1

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

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

Original bug at SourceForge.net (TCPDF bug tracker)

4

我解决了这个问题是这样的:

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

,如果你有超过99页,你将再次有对齐的问题!使用别的东西来生成你的学位论文的pdf!的

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

代替:

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

意大利语翻译及更新Isotypelab.org

3

我已经解决了使用ing for me

+4

这不是真的工作,因为它打印“第1页1”和“第2页2” – 2012-11-07 17:17:11

+0

不起作用,对我来说这个解决方案是把这个页面信息对齐左侧:) – Jawaad 2015-01-30 17:43:33

-2

试试这个

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

工作:)

+0

你重复了一次不工作解决方案: 这并不奏效,因为它会打印“第1页1”和“第2页,共2页” – user2345998 2015-10-21 10:48:33

0

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

+0

应作为注释发布,一旦您拥有足够的代表:-) – kleopatra 2013-06-30 08:06:42

1

由于我的文档是不超过10页我有2个解决方案,给它更多的WIDTH(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页。

在我的情况下,这个对齐的页码在右边。