Merge PDF files from post custom fields(ACF) into one PDF file and respond back the created PDF file, WordPress(AJAX Request)

Question

I am using Advanced Custom Fields plugin(free version) for attaching 3 different pdf files to a single post.

After displaying a list of posts on a template, with a button click I am making an AJAX Request to get the files of all displayed posts.

Since every post has 3 PDF files, I want to merge all these files of all posts to a single PDF file and download that single file.

What I did so far :

AJAX Request on button click:

function merklisteDownload() {
    window.event.preventDefault()
    var m = JSON.parse(window.sessionStorage.getItem('merkliste_items')) || []
    var ids = []
    if (m.length > 0) {
        m.forEach(element => {
            ids.push(element.id)
        });
    }
    $.ajax({
        type: 'POST',
        url: '<?php echo admin_url('admin-ajax.php'); ?>',
        dataType: "json",
        data: {
            action: 'get_post_files',
            ids: ids
        },
        success: function(response) {
            console.log(response.data)
        },
        error: function(error) {
            console.log(error)
        }
    });
}

And admin-ajax.php code:

    function get_post_files(){
    $data = [];
    foreach ($_POST['ids'] as $post_id) {
        array_push($data, [
            'id'                        => $post_id,
            'title'                     => get_the_title($post_id),
            'category'                  => get_the_category($post_id)[0]->name,
            'front_image'               => get_field('front_image', $post_id)['sizes']['large'] == true ? get_field('front_image', $post_id)['sizes']['large'] : null,
            'back_image'                => get_field('back_image', $post_id)['sizes']['large'] == true ? get_field('back_image', $post_id)['sizes']['large'] : null,
            'technische_daten'          => get_field('technische_daten', $post_id)['url'], //file
            'lichttechnische_parameter' => get_field('lichttechnische_parameter', $post_id)['url'], //file
            'reach_zertifikat'          => get_field('reach-zertifikat', $post_id)['url'],  //file
        ]);
    }
    wp_send_json_success($data);
    wp_die();
}

add_action('wp_ajax_get_post_files', 'get_post_files');
add_action('wp_ajax_nopriv_get_post_files', 'get_post_files');

Everything is working till now, I am able to get the file URLs of each post, but I dont know how to merge these files into one and return the file as AJAX Response, then download that file.

Any help?

Best regards.

0
Clirim Kastrati 5 months 2022-02-14T14:23:28-05:00 0 Answers 0 views 0

Leave an answer

Browse
Browse