Всем привет ! Помогите пожалуйста новичку. Мне нужно чтобы создавался файл-квитанция в pdf для оплаты, но данные с ФИО и суммой должны там быть из поля input после нажатия на кнопку. Сам файл у меня создаётся в pdf при подключенной библиотеке tcpdf, но как подставить эти переменные из input в квитанцию pdf. Вот что у меня выходит: HTML HTML: <form action="pdf.php" method="post"> <p>Ваше имя: <input type="text" name="fio" /></p> <p>Сумма для оплаты: <input type="text" name="summa" /></p> <p><input type="submit" value="Получить квитанцию" /></p> </form> PHP PHP: <? require_once(dirname(__FILE__).'/tcpdf/config/lang/rus.php'); require_once(dirname(__FILE__).'/tcpdf/tcpdf.php'); class MYPDF_C extends TCPDF { //Page header public function Header() { } // Page footer public function Footer() { } } // create new PDF document $pdf = new MYPDF_C(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); // --------------------------------------------------------- $pdf->AddPage(); $pdf->setFontStretching(105); $pdf->SetFont('freesans', 'B', 9); $pdf->Text(20, 22, iconv("WINDOWS-1251","UTF-8", 'Извещение' )); $pdf->Text(23, 81, iconv("WINDOWS-1251","UTF-8", 'Кассир' )); $pdf->Text(20, 142, iconv("WINDOWS-1251","UTF-8", 'Квитанция' )); $pdf->Text(23, 151, iconv("WINDOWS-1251","UTF-8", 'Кассир' )); $pdf->SetFont('freesans', 'B', 8); $pdf->Text(54, 22, iconv("WINDOWS-1251","UTF-8", 'СБЕРБАНК РОССИИ' )); $pdf->SetFont('freesans', '', 5); $pdf->Text(54, 26, iconv("WINDOWS-1251","UTF-8", 'Основан в 1841 году' )); $pdf->SetFont('freesans', 'I', 5); $pdf->Text(178.5, 23, iconv("WINDOWS-1251","UTF-8", 'Форма № ПД-4' )); $pdf->SetDrawColor(0); $pdf->SetLineWidth(0.3); $pdf->Line(9,20,197,20); $pdf->Line(197,20,197,160); $pdf->Line(9,20,9,160); $pdf->Line(9,160,197,160); $pdf->Line(9,90,197,90); $pdf->Line(50.7,20,50.7,160); $pdf->Line(55,$s+26,87,$s+26); //для двух проходов: нижнего и верхнего $s_arr = array(-0.5, 70); foreach($s_arr as $s) { //Линии $pdf->Line(55,$s+32,192,$s+32); $pdf->Line(55,$s+35,103,$s+35); $pdf->Line(55,$s+39,103,$s+39); $a=55; for($i=0; $i<13; $i++) { $pdf->Line($a,$s+35,$a,$s+39); $a = $a+4; } $pdf->Line(112,$s+35,192,$s+35); $pdf->Line(112,$s+39,192,$s+39); $a=192; for($i=0; $i<21; $i++) { $pdf->Line($a,$s+35,$a,$s+39); $a = $a-4; } $pdf->Line(156,$s+42,192,$s+42); $pdf->Line(156,$s+46,192,$s+46); $pdf->Line(60,$s+46,144,$s+46); $a=192; for($i=0; $i<10; $i++) { $pdf->Line($a,$s+42,$a,$s+46); $a = $a-4; } $pdf->Line(112,$s+47,192,$s+47); $pdf->Line(112,$s+51,192,$s+51); $a=192; for($i=0; $i<21; $i++) { $pdf->Line($a,$s+47,$a,$s+51); $a = $a-4; } $pdf->Line(55,$s+55,128,$s+55); $pdf->Line(136,$s+55,192,$s+55); $pdf->Line(88,$s+62,192,$s+62); $pdf->Line(88,$s+67,192,$s+67); $pdf->Line(80,$s+73,95,$s+73); $pdf->Line(103,$s+73,110,$s+73); $pdf->Line(164,$s+73,173,$s+73); $pdf->Line(180,$s+73,185,$s+73); $pdf->Line(66,$s+78,81,$s+78); $pdf->Line(89,$s+78,96,$s+78); $pdf->Line(140,$s+78,148,$s+78); $pdf->Line(151,$s+78,180,$s+78); $pdf->Line(186,$s+78,189,$s+78); $pdf->Line(150,$s+88.6,192,$s+88.6); //ТЕКСТЫ $pdf->SetFont('freesans', '', 6); $pdf->Text(104, $s+32, iconv("WINDOWS-1251","UTF-8", '(наименование получателя платежа)' )); $pdf->SetFont('freesans', '', 6); $pdf->Text(65, $s+39, iconv("WINDOWS-1251","UTF-8", '(ИНН получателя платежа)' )); $pdf->Text(135, $s+39, iconv("WINDOWS-1251","UTF-8", '(номер счета получателя платежа)' )); $pdf->SetFont('freesans', '', 8); $pdf->Text(148, $s+42.5, iconv("WINDOWS-1251","UTF-8", 'БИК' )); $pdf->SetFont('freesans', '', 7); $pdf->Text(55, $s+47, iconv("WINDOWS-1251","UTF-8", 'Номер кор./сч.банка получателя платежа' )); $pdf->SetFont('freesans', 'B', 9); $pdf->Text(65, $s+51, iconv("WINDOWS-1251","UTF-8", 'оплата за что-нибудь' )); $pdf->SetFont('freesans', '', 6); $pdf->Text(80, $s+55, iconv("WINDOWS-1251","UTF-8", '(наименование платежа)' )); $pdf->Text(141, $s+55, iconv("WINDOWS-1251","UTF-8", '(номер лицевого счета (код) плательщика)' )); $pdf->SetFont('freesans', '', 8); $pdf->Text(55, $s+59, iconv("WINDOWS-1251","UTF-8", 'Ф.И.О. Плательщика' )); $pdf->SetFont('freesans', '', 8); $pdf->Text(55, $s+64, iconv("WINDOWS-1251","UTF-8", 'Адрес плательщика' )); $pdf->SetFont('freesans', '', 8); $pdf->Text(55, $s+70, iconv("WINDOWS-1251","UTF-8", 'Сумма платежа' )); $pdf->Text(96, $s+70, iconv("WINDOWS-1251","UTF-8", 'руб.' )); $pdf->Text(110, $s+70, iconv("WINDOWS-1251","UTF-8", 'коп.' )); $pdf->Text(130, $s+70, iconv("WINDOWS-1251","UTF-8", 'Сумма платы за услуги' )); $pdf->Text(173, $s+70, iconv("WINDOWS-1251","UTF-8", 'руб.' )); $pdf->Text(185, $s+70, iconv("WINDOWS-1251","UTF-8", 'коп.' )); $pdf->Text(55, $s+75, iconv("WINDOWS-1251","UTF-8", 'Итого' )); $pdf->Text(82, $s+75, iconv("WINDOWS-1251","UTF-8", 'руб.' )); $pdf->Text(96, $s+75, iconv("WINDOWS-1251","UTF-8", 'коп.' )); $pdf->Text(138, $s+75, iconv("WINDOWS-1251","UTF-8", '"' )); $pdf->Text(147, $s+75, iconv("WINDOWS-1251","UTF-8", '"' )); $pdf->Text(180, $s+75, iconv("WINDOWS-1251","UTF-8", '201' )); $pdf->Text(189, $s+75, iconv("WINDOWS-1251","UTF-8", 'г.' )); $pdf->SetFont('freesans', '', 6); $pdf->Text(55, $s+80, iconv("WINDOWS-1251","UTF-8", 'С условиями приема указанной в платежном документе суммы, в т.ч. с суммой взимаемой платы за услуги' )); $pdf->Text(55, $s+83, iconv("WINDOWS-1251","UTF-8", 'банка, ознакомлен и согласен' )); $pdf->SetFont('freesans', 'B', 7); $pdf->Text(119, $s+85, iconv("WINDOWS-1251","UTF-8", 'Подпись плательщика' )); //Заполняем данные предприятия $pdf->SetFont('freesans', '', 10); $pdf->Text(61, $s+28, iconv("WINDOWS-1251","UTF-8", 'Индивидуальный предприниматель Кукареков Николай Владимирович' )); //Банк $pdf->SetFont('freesans', '', 7); $pdf->Text(55, $s+42.5, iconv("WINDOWS-1251","UTF-8", 'в' )); $pdf->Text(59, $s+42.5, iconv("WINDOWS-1251","UTF-8", 'Северо-Западный банк ОАО "Сбербанк России" г.Санкт-Петербург' )); //Заполняем данные клиента $fio = "Иванов Иван Иванович"; $summa_rub = "20555"; $summa_kop = "20"; $id_order = 298777; $pdf->SetFont('freesans', 'B', 10); //ИНН получателя платежа (12-значный) $a=55; $arr = array(4,8,2,0,0,1,5,6,8,0,1,1); for($i=0; $i<12; $i++) { $pdf->Text($a, $s+34.8, $arr[$i]); $a = $a + 4; } //номер счета получателя платежа (20-значный) $a=112; $arr = array(4,0,8,0,2,8,1,0,2,5,5,1,4,0,0,0,0,5,7,7); for($i=0; $i<20; $i++) { $pdf->Text($a, $s+34.8, $arr[$i]); $a = $a + 4; } //БИК (9-значный) $a=156; $arr = array(0,4,4,0,3,0,6,5,3); for($i=0; $i<9; $i++) { $pdf->Text($a, $s+42, $arr[$i]); $a = $a + 4; } //Номер кор./сч.банка получателя платежа (20-значный) $a=112; $arr = array(3,0,1,0,1,8,1,0,5,0,0,0,0,0,0,0,0,6,5,3); for($i=0; $i<20; $i++) { $pdf->Text($a, $s+46.7, $arr[$i]); $a = $a + 4; } $pdf->SetFont('freesans', '', 10); $pdf->Text(88, $s+58, iconv("WINDOWS-1251","UTF-8", $fio)); $pdf->Text(80, $s+69, iconv("WINDOWS-1251","UTF-8", $summa_rub)); $pdf->Text(103.5, $s+69, iconv("WINDOWS-1251","UTF-8", $summa_kop)); } //Создаем реальный файл PDF с именем клиента и номером заказа //Папка, в которую пишем, должна иметь доступ 777 $fio_utf = iconv("CP1251", "UTF-8", $fio); $pdf->Output($_SERVER['DOCUMENT_ROOT']."/pdf/kvit/".$fio_utf.' '.$id_order.".pdf", "F"); //И открываем его в текущем окне $URL='http://'.$_SERVER['HTTP_HOST'].'/pdf/kvit/'.$fio_utf.' '.$id_order.'.pdf'; header ("Location: $URL"); ?> То есть проще говоря я хочу чтобы из Html подставлялись данные в генерируемый Pdf файл вот сюда Спойлер: Изображение Если я делаю так в генерируемом файле то ничего вообще не выводит PHP: echo $_POST['fio'];
Когда полностью запустил твой код,у меня были проблемы с кодировкой.Не корректно отображались входные данные. Про вырви глаз это верно.Нужно оформлять код нормально и жалеть чужие глаза.Я решил твою проблему + добавил немного фильтрации принимаемых $_POST данных.Вот код: PHP: require_once(dirname(__FILE__).'/tcpdf/config/lang/rus.php'); require_once(dirname(__FILE__).'/tcpdf/tcpdf.php'); class MYPDF_C extends TCPDF { //Page header public function Header() { } // Page footer public function Footer() { } } // create new PDF document $pdf = new MYPDF_C(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); // --------------------------------------------------------- $pdf->AddPage(); $pdf->setFontStretching(105); $pdf->SetFont('freesans', 'B', 9); $pdf->Text(20, 22, iconv("WINDOWS-1251","UTF-8", 'Извещение' )); $pdf->Text(23, 81, iconv("WINDOWS-1251","UTF-8", 'Кассир' )); $pdf->Text(20, 142, iconv("WINDOWS-1251","UTF-8", 'Квитанция' )); $pdf->Text(23, 151, iconv("WINDOWS-1251","UTF-8", 'Кассир' )); $pdf->SetFont('freesans', 'B', 8); $pdf->Text(54, 22, iconv("WINDOWS-1251","UTF-8", 'СБЕРБАНК РОССИИ' )); $pdf->SetFont('freesans', '', 5); $pdf->Text(54, 26, iconv("WINDOWS-1251","UTF-8", 'Основан в 1841 году' )); $pdf->SetFont('freesans', 'I', 5); $pdf->Text(178.5, 23, iconv("WINDOWS-1251","UTF-8", 'Форма № ПД-4' )); $pdf->SetDrawColor(0); $pdf->SetLineWidth(0.3); $pdf->Line(9,20,197,20); $pdf->Line(197,20,197,160); $pdf->Line(9,20,9,160); $pdf->Line(9,160,197,160); $pdf->Line(9,90,197,90); $pdf->Line(50.7,20,50.7,160); $pdf->Line(55,$s+26,87,$s+26); //для двух проходов: нижнего и верхнего $s_arr = array(-0.5, 70); foreach($s_arr as $s) { //Линии $pdf->Line(55,$s+32,192,$s+32); $pdf->Line(55,$s+35,103,$s+35); $pdf->Line(55,$s+39,103,$s+39); $a=55; for($i=0; $i<13; $i++) { $pdf->Line($a,$s+35,$a,$s+39); $a = $a+4; } $pdf->Line(112,$s+35,192,$s+35); $pdf->Line(112,$s+39,192,$s+39); $a=192; for($i=0; $i<21; $i++) { $pdf->Line($a,$s+35,$a,$s+39); $a = $a-4; } $pdf->Line(156,$s+42,192,$s+42); $pdf->Line(156,$s+46,192,$s+46); $pdf->Line(60,$s+46,144,$s+46); $a=192; for($i=0; $i<10; $i++) { $pdf->Line($a,$s+42,$a,$s+46); $a = $a-4; } $pdf->Line(112,$s+47,192,$s+47); $pdf->Line(112,$s+51,192,$s+51); $a=192; for($i=0; $i<21; $i++) { $pdf->Line($a,$s+47,$a,$s+51); $a = $a-4; } $pdf->Line(55,$s+55,128,$s+55); $pdf->Line(136,$s+55,192,$s+55); $pdf->Line(88,$s+62,192,$s+62); $pdf->Line(88,$s+67,192,$s+67); $pdf->Line(80,$s+73,95,$s+73); $pdf->Line(103,$s+73,110,$s+73); $pdf->Line(164,$s+73,173,$s+73); $pdf->Line(180,$s+73,185,$s+73); $pdf->Line(66,$s+78,81,$s+78); $pdf->Line(89,$s+78,96,$s+78); $pdf->Line(140,$s+78,148,$s+78); $pdf->Line(151,$s+78,180,$s+78); $pdf->Line(186,$s+78,189,$s+78); $pdf->Line(150,$s+88.6,192,$s+88.6); //ТЕКСТЫ $pdf->SetFont('freesans', '', 6); $pdf->Text(104, $s+32, iconv("WINDOWS-1251","UTF-8", '(наименование получателя платежа)' )); $pdf->SetFont('freesans', '', 6); $pdf->Text(65, $s+39, iconv("WINDOWS-1251","UTF-8", '(ИНН получателя платежа)' )); $pdf->Text(135, $s+39, iconv("WINDOWS-1251","UTF-8", '(номер счета получателя платежа)' )); $pdf->SetFont('freesans', '', 8); $pdf->Text(148, $s+42.5, iconv("WINDOWS-1251","UTF-8", 'БИК' )); $pdf->SetFont('freesans', '', 7); $pdf->Text(55, $s+47, iconv("WINDOWS-1251","UTF-8", 'Номер кор./сч.банка получателя платежа' )); $pdf->SetFont('freesans', 'B', 9); $pdf->Text(65, $s+51, iconv("WINDOWS-1251","UTF-8", 'оплата за что-нибудь' )); $pdf->SetFont('freesans', '', 6); $pdf->Text(80, $s+55, iconv("WINDOWS-1251","UTF-8", '(наименование платежа)' )); $pdf->Text(141, $s+55, iconv("WINDOWS-1251","UTF-8", '(номер лицевого счета (код) плательщика)' )); $pdf->SetFont('freesans', '', 8); $pdf->Text(55, $s+59, iconv("WINDOWS-1251","UTF-8", 'Ф.И.О. Плательщика' )); $pdf->SetFont('freesans', '', 8); $pdf->Text(55, $s+64, iconv("WINDOWS-1251","UTF-8", 'Адрес плательщика' )); $pdf->SetFont('freesans', '', 8); $pdf->Text(55, $s+70, iconv("WINDOWS-1251","UTF-8", 'Сумма платежа' )); $pdf->Text(96, $s+70, iconv("WINDOWS-1251","UTF-8", 'руб.' )); $pdf->Text(110, $s+70, iconv("WINDOWS-1251","UTF-8", 'коп.' )); $pdf->Text(130, $s+70, iconv("WINDOWS-1251","UTF-8", 'Сумма платы за услуги' )); $pdf->Text(173, $s+70, iconv("WINDOWS-1251","UTF-8", 'руб.' )); $pdf->Text(185, $s+70, iconv("WINDOWS-1251","UTF-8", 'коп.' )); $pdf->Text(55, $s+75, iconv("WINDOWS-1251","UTF-8", 'Итого' )); $pdf->Text(82, $s+75, iconv("WINDOWS-1251","UTF-8", 'руб.' )); $pdf->Text(96, $s+75, iconv("WINDOWS-1251","UTF-8", 'коп.' )); $pdf->Text(138, $s+75, iconv("WINDOWS-1251","UTF-8", '"' )); $pdf->Text(147, $s+75, iconv("WINDOWS-1251","UTF-8", '"' )); $pdf->Text(180, $s+75, iconv("WINDOWS-1251","UTF-8", '201' )); $pdf->Text(189, $s+75, iconv("WINDOWS-1251","UTF-8", 'г.' )); $pdf->SetFont('freesans', '', 6); $pdf->Text(55, $s+80, iconv("WINDOWS-1251","UTF-8", 'С условиями приема указанной в платежном документе суммы, в т.ч. с суммой взимаемой платы за услуги' )); $pdf->Text(55, $s+83, iconv("WINDOWS-1251","UTF-8", 'банка, ознакомлен и согласен' )); $pdf->SetFont('freesans', 'B', 7); $pdf->Text(119, $s+85, iconv("WINDOWS-1251","UTF-8", 'Подпись плательщика' )); //Заполняем данные предприятия $pdf->SetFont('freesans', '', 10); $pdf->Text(61, $s+28, iconv("WINDOWS-1251","UTF-8", 'Индивидуальный предприниматель Кукареков Николай Владимирович' )); //Банк $pdf->SetFont('freesans', '', 7); $pdf->Text(55, $s+42.5, iconv("WINDOWS-1251","UTF-8", 'в' )); $pdf->Text(59, $s+42.5, iconv("WINDOWS-1251","UTF-8", 'Северо-Западный банк ОАО "Сбербанк России" г.Санкт-Петербург' )); //Заполняем данные клиента $fio = filter_var($_POST['fio'],FILTER_SANITIZE_STRING); $summa = filter_var($_POST['summa'],FILTER_SANITIZE_STRING); $pdf->SetFont('freesans', 'B', 10); //ИНН получателя платежа (12-значный) $a=55; $arr = array(4,8,2,0,0,1,5,6,8,0,1,1); for($i=0; $i<12; $i++) { $pdf->Text($a, $s+34.8, $arr[$i]); $a = $a + 4; } //номер счета получателя платежа (20-значный) $a=112; $arr = array(4,0,8,0,2,8,1,0,2,5,5,1,4,0,0,0,0,5,7,7); for($i=0; $i<20; $i++) { $pdf->Text($a, $s+34.8, $arr[$i]); $a = $a + 4; } //БИК (9-значный) $a=156; $arr = array(0,4,4,0,3,0,6,5,3); for($i=0; $i<9; $i++) { $pdf->Text($a, $s+42, $arr[$i]); $a = $a + 4; } //Номер кор./сч.банка получателя платежа (20-значный) $a=112; $arr = array(3,0,1,0,1,8,1,0,5,0,0,0,0,0,0,0,0,6,5,3); for($i=0; $i<20; $i++) { $pdf->Text($a, $s+46.7, $arr[$i]); $a = $a + 4; } $pdf->SetFont('freesans', '', 10); $pdf->Text(88, $s+58, $fio); $pdf->Text(80, $s+69, iconv("WINDOWS-1251","UTF-8", $summa)); //$pdf->Text(103.5, $s+69, iconv("WINDOWS-1251","UTF-8", $summa_kop)); } //Создаем реальный файл PDF с именем клиента и номером заказа //Папка, в которую пишем, должна иметь доступ 777 $pdf->Output($_SERVER['DOCUMENT_ROOT']."/pdf/kvit/".$fio.' '.$id_order.".pdf", "F"); //И открываем его в текущем окне $URL='http://'.$_SERVER['HTTP_HOST'].'/pdf/kvit/'.$fio.' '.$id_order.'.pdf'; header ("Location: $URL"); ?> Форма: Спойлер: Форма Результат: Спойлер: Квитанция Могут возникнуть проблемы с кодировкой,но я думаю с этим ты справишься если что.
ОГРОМНОЕ ТЕБЕ СПАСИБО !!!!!!!!!!!!!!!!!!!!!!!!!!!! Вчера 4 часа убил и так не решил эту проблему !!!!!!!!! СУПЕР !!!!!!!!!!!!!
Подскажите ещё пожалуйста, реально ли вообще вставлять данные из php формы в уже готовый файл pdf ??? Вот меня интересует конкретно этот pdf шаблон https://www.uscis.gov/system/files_force/files/form/i-589.pdf?download=1
мало вероятно, воссоздай форму на HTML и с помощью domPDF или других инструментов переконвертируй в PDF
@DimaBLR на HTML можно многое допилить. Тогда думаю стоит поискать платные API по редактированию PDF. Что-то на подобии http://www.pdfonline.com/easypdf/sdk/features.htm Ещё можно изучить как для PDF делать шаблоны, которые потом можно заполнить и сверстать нужную форму под этот вариант. Самый простой вариант, это заказать шаблон той анкеты в LaTeX он специально сделан, чтобы очень точно печатать, потом его легко заполнить и конвертировать в PDF