我正在使用TCPDF生成pdf。
我的问题是Footer()方法的以下行:
$this->Cell(0, 10, 'Page '.$this->getAliasNumPage().'/'.$this->getAliasNbPages(), 'T', false, 'R');
这是将pagenumber插入文档页脚的标准行,但输出中右边有一个litte空格。您可以在网站上的示例1中看到它:http://www.tcpdf.org/examples/example_001.pdf
如果我插入这样的普通文字:
$this->Cell(0, 10, 'Foobar', 'T', false, 'R');
文本完全对齐,没有任何问题。
我深入研究了源代码,它似乎与编码有关,但我并不是真的明白了......有人可以帮忙吗?
问候
答案 0 :(得分:4)
$this->Cell(0, 0, $this->getAliasRightShift().$this->PageNo().'/'.$this->getAliasNbPages(), 1, 0, 'R');
如果您有超过99页,您将再次出现对齐问题!使用别的东西来生成学位论文的pdf! :)
答案 1 :(得分:2)
我已经解决了使用:
$txt='Page '.$this->PageNo().' of '.$this->getNumPages()
而不是:
$txt='Page '.$this->getAliasNumPage().' of '.$this->getAliasNbPages()
上的意大利语翻译和更新
答案 2 :(得分:1)
不幸的是,TCPDF 对齐别名和而不是替换的最终数字 别名。使用$ this-> AliasNbPages('{p}')和$ this-> AliasNumPAge('{n}')将无济于事。额外填充将保留在原位。
唯一的解决方案是使用页码而不是别名。
答案 3 :(得分: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。
在我的情况下,这个对齐的页面编号在右边。
答案 4 :(得分:0)
我认为问题出在别名中。这些只是在插入时计算宽度的文本片段,而不是用数字替换它们的时间。
因此,为字符串(字面意思){np}/{nb}
计算文本宽度。当它被替换为末尾的数字1/9
小于此值时,23/109
更大。
您可以使用反映setAliasNbPages()
宽度的内容替换所使用的NbPages别名(the total number of pages
?),以便估计将会有多少。而且我相信您可以直接使用当前页码而不使用别名,因此该别名的问题至少不会出现。
答案 5 :(得分:0)
getNumPages不会这样做。 如果你有3页,getNumPages()将产生1 / 1,2 / 2和3/3 getAliasNbPages()将产生1 / 3,2 / 3和3/3 所以问题仍然存在!
答案 6 :(得分:0)
您可以在生成后添加页码,而无需别名。
在$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');
}
答案 7 :(得分:0)
TCPDF对齐别名而不是实际页码。要向右对齐,请不要使用别名:
$pageNumber = $this->getPage();
$this->Cell(0, 10, 'Page '.$pageNumber, 'T', false, 'R');
不幸的是,对于页面总数,您没有解决方案,因为在调用页脚代码时,尚未插入所有页面。
答案 8 :(得分:-3)
试试这个
$txt='Page '.$this->PageNo().' of '.$this->getNumPages()
为我工作