Как выполнить команду wkhtmltopdf, используя ajax в WordPress

1

Я создал функцию wp_ajax и вызываю эту функцию при нажатии кнопки. В ajax-функции я добавил команду для excute wkhtmltopdf libarary, но мой код не работает. Пожалуйста, проверьте.

add_action( 'wp_ajax_genratepdf', 'genratepdf' );
add_action( 'wp_ajax_nopriv_genratepdf', 'genratepdf' );

function genratepdf(){

    shell_exec("wkhtmltopdf http://www.google.com /dir-path/pdf38.pdf");

    die('Y');
}

Код Jquery:

jQuery("#myBtnPdf").click(function (event) {
    event.preventDefault();
    var divContents = jQuery(".pf-content").html();
    jQuery.ajax({
            type: "post",
            url: ajaxurl,
            data: { action: "genratepdf", content:divContents },
            success:
            function(data) {

            }
       });
});

заранее спасибо

Теги:
exec
command

1 ответ

1
Лучший ответ

Я не уверен, но Try with

function genratepdf(){
    $ds = DIRECTORY_SEPARATOR ;
    $pdf_path = WP_CONTENT_DIR. $ds. "xyz.pdf";
    exec ("wkhtmltopdf http://www.google.com ".$pdf_path);

    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="'.basename($pdf_path).'"');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($pdf_path));
    ob_clean();
    readfile($pdf_path);
    die();

}

он создаст файл pdf в каталоге контента Wordpress

В коде Javascript

function autoSubmitForm(method, url, post_data) {
    var element = document.getElementById("virtual_form");
    if(element != null )
    {
        element.parentNode.removeChild(element);
    }
    var form = document.createElement("form");
    form.setAttribute("id", "virtual_form");
    form.setAttribute("style", "display:none;");
    form.setAttribute("target", "_blank");
    form.method = method;
    form.action = url;   
    for(i in post_data)
    {
         var element=document.createElement("input");
         element.value=post_data[i];
         element.name=i;
         form.appendChild(element); 
    }
    document.body.appendChild(form);
    form.submit();
    form.parentNode.removeChild(form);

}


jQuery("#myBtnPdf").click(function (event) {
    event.preventDefault();
    var divContents = jQuery(".pf-content").html();

    autoSubmitForm('POST',ajaxurl,{action:"genratepdf",content:divContents});
});
  • 0
    Да. Это работает для меня
  • 0
    Но как я могу получить всплывающее окно загрузки для сохранения PDF
Показать ещё 10 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню