TCPDF – Pagenumbers не совсем правильно выровнены

Я использую 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'); 

текст абсолютно не выравнивается справа без каких-либо проблем.

Я ворвался в источник, похоже, что-то с кодировкой, но я действительно не понимаю. Может ли кто-нибудь помочь?

С уважением

я решил это следующим образом:

 $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

К сожалению, TCPDF выравнивает псевдоним, а не последний номер, который заменяет псевдоним. Использование $ this-> AliasNbPages ('{p}') и $ this-> AliasNumPAge ('{n}') не поможет. Дополнительное заполнение останется на месте.

Единственное решение – ставить номера страниц вместо псевдонимов.

Исходная ошибка на SourceForge.net (трекер TCPDF)

Поскольку у моего документа не более 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'); 

поэтому играйте с WIDTH и SPACES, если у вас более 10 страниц.

Это совпадающие номера страниц справа в моем случае.

Я считаю, что проблема заключается в псевдонимах . Это только фрагменты текста, ширина которых вычисляется во время вставки, а не время их замены числами.

Таким образом, ширина текста вычисляется для строки (буквально) {np}/{nb} . И когда он заменяется цифрами прямо на конце, 1/9 меньше этого, в то время как 23/109 больше.

Вы можете заменить используемый псевдоним NbPages ( setAliasNbPages() ?) С чем-то, что отражает ширину the total number of pages если вы можете оценить, сколько это будет. И я считаю, что вы можете напрямую использовать текущий номер страницы, не используя псевдоним, поэтому проблема, по крайней мере, не появляется для этого псевдонима.

getNumPages этого не сделает. Если у вас 3 страницы, getNumPages () приведет к 1/1, 2/2 и 3/3 getAliasNbPages () приведет к 1/3, 2/3 и 3/3, так что проблема останется!

Попробуй это

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

работаю для меня