Создание на PHP файла PDF из текстовых данных

Web/сайты Прочее

Был(а) онлайн: 26.04.20 14:45
Umen 26 лет

1.0 Был(а) онлайн: 26.04.20 14:45

Недавно
НАВЫКИ

PHP5, Linux, навык написания конвертеров в PDF (работа с текстом, изображениями и примитивными таблицами), знание тестировать свой код.

ТЕХНИЧЕСКИЕ ТРЕБОВАНИЯ

Linux, Pentium4 либо выше, PHP 5 либо выше. Оптимизация кода по скорости выполнения.

ОПИСАНИЕ

Функция предуготовлена для образования русскоязычного текста договора в формате pdf в режиме реального времени. Для этого применяется шрифт Times New Roman 12. Форматирование договора дозволено видеть в примере по ссылке :

На вход функции CreateDogovor($title, $name1, $name2, $city, $date, $body, $sign, $stamp, $reqtable) подаются:

$title - наименование документа (в теле документа идёт толстым шрифтом, новая строка отделяется символом "\n", выравнивание по центру);
$name1 - название одной стороны (применяется в нижнем колонтитуле);
$name2 - название иной стороны (применяется в нижнем колонтитуле);
$city - город;
$date - дата;
$body - массив строк в некотором формате (см. ниже);
$sign - ссылка на графический файл в формате jpg с подписью (переменная может быть пустой), эта подпись размещается на всякой странице справа от $name1, если переменная пустая, то слева от $name1 располагается подчёркивание (место для подписи);
$stamp - ссылка на графический файл в формате jpg с печатью и подписью (переменная может быть пустой);
$reqtable - массив из восьми строк для заполнения таблицы с реквизитами.

На выходе должен получаться массив из 2-х документов в формате pdf. 1-й с подписями на всей странице и печатью в конце, 2-й лишь с местами для подписей и без печати. Документ с подписью на всякой странице должен выглядеть так же, как и документ без подписи (с местом для подписи).

Переменная $body содержит массив с последовательным списком всех строк тела договора. Если строка начинается без спецсимволов, то это примитивно новейший абзац. Если строка начинается с номера, тот, что отделён от текста пробелом, то это какой-то ярус нумерации. 1-й ярус печатается толстым шрифтом. Остальные обыкновенным. Цифры разделяются точками (1.1.1. - 3-й ярус отступа). Если строка начинается со знака "минус", то это ненумеруемый пункт и у него такой же отступ, как у строки документа из предыдущей строки массива + 1 см отступ для текста. Текст имеет выравнивание по обе стороны, каждый текст с отступами, помимо первых абзацев без нумерации, выравнивается по одной линии на расстоянии +1 см от линии выравнивания номеров пунктов.

$reqtable - это данные для построения таблицы реквизитов в конце документа. Переменная представляет собой массив с шестью строками:
$reqtable[0] - реквизиты первой компании (новая строка отделяется символом "\n");
$reqtable[1] - реквизиты 2-й компании (новая строка отделяется символом "\n");
$reqtable[2] - должность подписывающего лица первой компании;
$reqtable[3] - должность подписывающего лица 2-й компании;
$reqtable[4] - фамилия и инициалы подписывающего лица первой компании;
$reqtable[5] - фамилия и инициалы подписывающего лица 2-й компании;
$reqtable[6] - название первой компании (печатается толстым шрифтом);
$reqtable[7] - название 2-й компании (печатается толстым шрифтом).

ПРИМЕР ИСПОЛЬЗОВАНИЯ

<?php
$title = "ДОГОВОР\nна оказание служб";
$name1 = "Клиент";
$name2 = "Исполнитель";
$city = "Москва";
$date = time();
$body[] = "Какой-то длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный текст";
$body[] = "1. Какой-то длинный-длинный длинный-длинный текст";
$body[] = "1.2. Какой-то длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный текст";
$body[] = "Какой-то длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный текст";
$body[] = "1.2.1. Какой-то длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный текст";
$body[] = "2. Какой-то текст";
$body[] = "- Какой-то длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный длинный-длинный текст";
$sign = "img/sign.jpg";
$stamp = "img/stamp.jpg";
$reqtable[0] = "ИНН 787978978\nКПП 67678\nЮр. Адрес 125454, Москва, ул. Космодемьянских, д. 345, корп. 1, стр. 67, офис 4574";
$reqtable[1] = "ИНН 687667878\nКПП 67678\nЮр. Адрес 125454, Москва, ул. Космодемьянских, д. 345, корп. 1, стр. 67, офис 4574";
$reqtable[2] = "Генеральный директор";
$reqtable[3] = "Основный конструктор";
$reqtable[4] = "Вий А.М.";
$reqtable[5] = "Петров А.М.";
$reqtable[6] = "ООО "Гватемалы"";
$reqtable[7] = "ООО "Гаваи"";
$pdf = CreateDogovor($title, $name1, $name2, $city, $date, $body, $sign, $stamp, $reqtable);
?>

ПРИМЕР ТОГО, ЧТО ДОЛЖНО ПОЛУЧИТЬСЯ ПО ВЁРСТКЕ

См. во вложении. Приведено в виде rtf, потому что это комфортнее. Надобно итоговый документ cверстать так же, но в pdf.

Чтобы добавить заявку к этому заказу, нужно войти или зарегистрироваться

Мой блок

26.04.20 14:45
Umen 26