Я использую 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()
работаю для меня