Обрезка текста при генерации PDF с использованием FPDF / FPDI / TCPDF - PullRequest
0 голосов
/ 08 ноября 2011

У меня есть проект PHP, где я открываю готовый PDF и заполняю его данными через PHP.У меня проблема в том, что один из текстовых элементов не появляется.Я размещаю его в правом нижнем углу страницы PDF.Если я немного переместлю его влево, он появится.Как будто есть какое-то отсечение или что-то в этом роде.

Я использую TCPDF, и, поскольку мне нужно изменить существующий PDF, мне также нужно использовать класс FPDI.Мне кажется, что FPDI обычно интегрирован с FPDF, поэтому я использовал методы FPDF для создания своего PDF.Итак, вот мой код (или соответствующие части) ...

$pdf = new PDF();
$pdf->AddPage( 'L', 'Letter' );
$pdf->SetAutoPageBreak(false);
$pdf->SetXY(261,200);
$pdf->Write(5, 'test');

Когда я размещаю текст со значением, равным по крайней мере сантиметру пробела, справа от текста260.Если я переместлю его еще на одну единицу в 261, как в коде выше, он просто исчезнет.Я могу расположить текст так далеко внизу страницы, что отображается только верхняя половина букв, однако я даже не могу подойти к правой стороне страницы, или текст полностью исчезнет.Я установил для SetAutoPageBreak значение false, чтобы новые страницы не создавались, и я также заигрывал с обнулением полей.

Ответы [ 4 ]

2 голосов
/ 19 сентября 2013

Может быть немного поздно в игре ...

Я посмотрел на файл fpdf.php, и похоже, что он добавляет поле 1 см.

Если вы опуститетогда вы можете получить текст ближе к краю страницы.Ниже приведена исходная строка:

// Page margins (1 cm)
$margin = 28.35/$this->k;

Но если вы измените ее на что-то вроде

$margin = 10/$this->k;

, это приблизит вас к краю документа.

0 голосов
/ 09 ноября 2011

Write () используется для потока текста (внутренне он использует несколько вызовов Cell ()). Если он достигает правого поля, происходит автоматический разрыв строки, и следующее слово / символ начинает новую строку с левого поля. Слово не исчезнет, ​​но будет показано в левом нижнем углу. Вы можете видеть символы, текущие с помощью этого простого сценария:

$pdf = new FPDF();
$pdf->AddPage( 'L', 'Letter' );
$pdf->SetAutoPageBreak(false);
$pdf->SetFont('Helvetica');
$pdf->SetXY(261,200);
$pdf->Write(5, 't e s t');
$pdf->Output();
0 голосов
/ 10 сентября 2013

Попробуйте следующее:

$pdf->SetAutoPageBreak('auto',0);
0 голосов
/ 08 ноября 2011

Мне больше всего повезло с использованием ячеек для позиционирования текста, по некоторым причинам они оказались более точными и более простыми в работе, чем простое написание текста на документ:

$pdf->SetXY(261,200);
$pdf->Cell(0,10,'My text',0,1, 'C');

Документы:http://www.fpdf.org/en/doc/cell.htm

...