За последние 24 часа нас посетили 17165 программистов и 1302 робота. Сейчас ищет 1671 программист ...

FPDF в функции

Тема в разделе "PHP для новичков", создана пользователем sheff, 4 окт 2016.

Метки:
  1. sheff

    sheff Новичок

    С нами с:
    23 июн 2015
    Сообщения:
    9
    Симпатии:
    0
    Нужно сделать ajax-запрос из формы и создать pdf-документ.

    Делаю ajax запрос функции, где вызывается FPDF. Функция выглядит примерно так

    Код (Text):
    1. if(!function_exists('ajax_add_pdf_file')) {
    2.     function ajax_add_pdf_file(){
    3.  
    4.  
    5.         $firstname = $_POST['firstname'];
    6.         $lastname = $_POST['lastname'];
    7.         $email = $_POST['email'];
    8. $pdf = new FPDF();
    9.  
    10. $pdf -> AddPage();
    11.  
    12. $pdf -> SetFont('Arial', 'B', 18);
    13.  
    14. $pdf -> Cell(40,10,'Hello '.$firstname.' '.$lastname);
    15. $pdf -> Cell(40,10,'Email: '.$email);
    16.  
    17.  
    18. $savefolder = realpath('../../../applications');
    19.  
    20. $filename = $firstname.'12.pdf';
    21.  
    22. $savefile = $savefolder.'/'.$filename;
    23.  
    24. $pdf->Output(F, $savefile);
    25.  
    26.  
    27.     }
    28. }
    Когда без функции просто вызвать файл - то все ок. документы формируются

    Помогите. Как вызвать fpdf в функции?

    *c ajax-запросом, вроде, все ок. так же вызывается и другая функция
     
  2. Poznakomlus

    Poznakomlus Активный пользователь

    С нами с:
    12 сен 2014
    Сообщения:
    96
    Симпатии:
    19
    Адрес:
    Киев
    Так может срабатывает ajax_add_pdf_file которая объявлена первее
     
  3. sheff

    sheff Новичок

    С нами с:
    23 июн 2015
    Сообщения:
    9
    Симпатии:
    0
    она по-другому называется.
    Я уже и этот код в ту функцию вписывал - не помогает.

    FPDF вообще может вызываться с функции?
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @sheff без ajax запроса с функцией всё работает?
     
  5. sheff

    sheff Новичок

    С нами с:
    23 июн 2015
    Сообщения:
    9
    Симпатии:
    0
    нет. Простой вызов функции не работает
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Тогда посмотри что возвращает Output вне функции и внутри неё.
    Константу F видит нормально?
     
  7. Poznakomlus

    Poznakomlus Активный пользователь

    С нами с:
    12 сен 2014
    Сообщения:
    96
    Симпатии:
    19
    Адрес:
    Киев
    PHP:
    1. $pdf = new FPDF();
    2. var_dump($pdf);
    3. die('@|@');
    что выводит?
     
    denis01 нравится это.
  8. sheff

    sheff Новичок

    С нами с:
    23 июн 2015
    Сообщения:
    9
    Симпатии:
    0
    object(FPDF)#1 (58) { ["page":protected]=> int(0) ["n":protected]=> int(2) ["offsets":protected]=> NULL ["buffer":protected]=> string(0) "" ["pages":protected]=> array(0) { } ["state":protected]=> int(0) ["compress":protected]=> bool(true) ["k":protected]=> float(2.8346456692913) ["DefOrientation":protected]=> string(1) "P" ["CurOrientation":protected]=> string(1) "P" ["StdPageSizes":protected]=> array(5) { ["a3"]=> array(2) { [0]=> float(841.89) [1]=> float(1190.55) } ["a4"]=> array(2) { [0]=> float(595.28) [1]=> float(841.89) } ["a5"]=> array(2) { [0]=> float(420.94) [1]=> float(595.28) } ["letter"]=> array(2) { [0]=> int(612) [1]=> int(792) } ["legal"]=> array(2) { [0]=> int(612) [1]=> int(1008) } } ["DefPageSize":protected]=> array(2) { [0]=> float(210.00155555556) [1]=> float(297.00008333333) } ["CurPageSize":protected]=> array(2) { [0]=> float(210.00155555556) [1]=> float(297.00008333333) } ["CurRotation":protected]=> int(0) ["PageInfo":protected]=> array(0) { } ["wPt":protected]=> float(595.28) ["hPt":protected]=> float(841.89) ["w":protected]=> float(210.00155555556) ["h":protected]=> float(297.00008333333) ["lMargin":protected]=> float(10.00125) ["tMargin":protected]=> float(10.00125) ["rMargin":protected]=> float(10.00125) ["bMargin":protected]=> float(20.0025) ["cMargin":protected]=> float(1.000125) ["x":protected]=> NULL ["y":protected]=> NULL ["lasth":protected]=> int(0) ["LineWidth":protected]=> float(0.200025) ["fontpath":protected]=> string(66) "/home/neo/public_html/wp-content/themes/NEO-1/functions/fpdf/font/" ["CoreFonts":protected]=> array(5) { [0]=> string(7) "courier" [1]=> string(9) "helvetica" [2]=> string(5) "times" [3]=> string(6) "symbol" [4]=> string(12) "zapfdingbats" } ["fonts":protected]=> array(0) { } ["FontFiles":protected]=> array(0) { } ["encodings":protected]=> array(0) { } ["cmaps":protected]=> array(0) { } ["FontFamily":protected]=> string(0) "" ["FontStyle":protected]=> string(0) "" ["underline":protected]=> bool(false) ["CurrentFont":protected]=> NULL ["FontSizePt":protected]=> int(12) ["FontSize":protected]=> NULL ["DrawColor":protected]=> string(3) "0 G" ["FillColor":protected]=> string(3) "0 g" ["TextColor":protected]=> string(3) "0 g" ["ColorFlag":protected]=> bool(false) ["WithAlpha":protected]=> bool(false) ["ws":protected]=> int(0) ["images":protected]=> array(0) { } ["PageLinks":protected]=> NULL ["links":protected]=> array(0) { } ["AutoPageBreak":protected]=> bool(true) ["PageBreakTrigger":protected]=> float(276.99758333333) ["InHeader":protected]=> bool(false) ["InFooter":protected]=> bool(false) ["AliasNbPages":protected]=> NULL ["ZoomMode":protected]=> string(7) "default" ["LayoutMode":protected]=> string(7) "default" ["metadata":protected]=> NULL ["PDFVersion":protected]=> string(3) "1.3" } @|@
    --- Добавлено ---
    --- Добавлено ---

    Я делаю это на WP.
    Заметил, если функция просто написана и выведена - то все ок.
    Если добавлены строки:
    Код (Text):
    1.  
    2. add_action('wp_ajax_nopriv_wpestate_ajax_add_pdf_file', 'wpestate_ajax_add_pdf_file');
    3. add_action('wp_ajax_wpestate_ajax_add_pdf_file', 'wpestate_ajax_add_pdf_file');  
    То уже не работает.
    В самим запросом проблем быть не должно. Он выглядит так:

    Код (Text):
    1.  
    2.  
    3. $("#ajax_for_pdf").click(function(){
    4.         add_pdf_file();
    5.         return false;
    6.     });
    7.  
    8.  
    9.  
    10.  
    11.  
    12. function add_pdf_file() {
    13.     var ajaxurl = '/wp-admin/admin-ajax.php';
    14.  
    15.         $.ajax({
    16.             type: 'POST',
    17.             url: ajaxurl,
    18.             dataType: 'json',
    19.             data: {
    20.                 'action' : 'wpestate_ajax_add_pdf_file',
    21.             },
    22.             success: function (data) {
    23.                 if (data.error == false) {
    24.                     resultFormMsg("remove", "Заявка успешно отправлена.");
    25.                
    26.                 } else {
    27.                     resultFormMsg("show", "Заполните все данные.");
    28.                 }
    29.             },
    30.             error: function (errorThrown) {
    31.             }
    32.        
    33.         });
    34.  
    35.  
    36. }
     
  9. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @sheff ещё через foddler посмотри, что там приходит в ajax запросе, может туда мусор попадает лишний
     
  10. Poznakomlus

    Poznakomlus Активный пользователь

    С нами с:
    12 сен 2014
    Сообщения:
    96
    Симпатии:
    19
    Адрес:
    Киев
    1. Когда пишите код включайте отображение всех ошибок
    PHP:
    1. ini_set('display_errors', 1);
    вставляем сразу после <?php
    2. function Output($dest='', $name='', $isUTF8=false)
    здесь $dest строковая переменная или ничего. Вы же передали не объявленную константу F
    PHP:
    1. $pdf->Output('F', $savefile);
     
    denis01 нравится это.