11487 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

En préambule, je dois présider que mes connaissances dans les environnements de développement Web sont limité. De fait, ma question pourra sembler triviale à certaines personnes.

Avec un appel Ajax, je génère un PDF, via TCPDF, que je récupère dans une variable.

Je le convertis en base64 et je le place dans un Uint8Array.


function gen_pdf() {
    var jsonOptions = jQuery("#Form").serializeArray();

    $.ajax({
		url: 'tcpdf/examples/example_002c.php',
        type: 'POST',
        cache: false,
        data: jsonOptions
	})
        .done(function(data) {
			var pdfData = convertDataURIToBinary('data:application/pdf;base64,' + data);
			// Visualisation PDF
			// .....
    })
        .fail(function() {
            alert('Erreur');
    });
	
    return false;
}

function convertDataURIToBinary(dataURI) {
	var BASE64_MARKER = ';base64,';
	var base64Index = dataURI.indexOf(BASE64_MARKER) + BASE64_MARKER.length;
	var base64 = dataURI.substring(base64Index);
	var raw = window.atob(base64);
	var rawLength = raw.length;
	var array = new Uint8Array(new ArrayBuffer(rawLength));

	for(i = 0; i < rawLength; i++) {
		array[i] = raw.charCodeAt(i);
	}
	return array;
}


Je désire l'afficher sur le poste de l'utilisateur via le viewer de PDF.js (le but étant d'éviter la sauvegarde du PDF dans un fichier sur le serveur) dans un nouvel onglet.

Je cherche depuis plusieurs jours pour finaliser cette partie sans succès.

Auriez-vous une piste de recherche qui me permettrait de réussir ce projet ?

Merci, par avance, pour vos conseils.
Modifié par Whaouu (30 Aug 2019 - 17:58)