Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

1.6K
Views
TCPDF - AJAX - Descargue el archivo sin guardarlo en el servidor web desde la llamada AJAX

Tengo una llamada AJAX a la página create_pdf.php :

 $('body').on('click', '.PrintButtonWithClass', function (event) { var1 = $('#id1').val(); var2 = $('#id2').val(); dataString='var1='+var1+'&var2='+var2+'&pdf_name=PdfName&pdf_creator=myname'; $.ajax({ type: 'post', url: '/path/to/createpdf/file/create_pdf.php', data: dataString, success: function (data) { alert('success'); } }); });

En create_pdf.php intenté usar esta línea para descargar el archivo:

 $pdf->Output(str_replace(' ','_',utf8_decode($_POST['pdf_name'])).'.pdf', 'D');

Probé también los parámetros FD e I sin éxito, el archivo no se descarga.

¿Cómo puedo forzar la descarga del archivo creado sin guardarlo en el servidor web y sin redirigir al usuario a ninguna otra página? Quiero que permanezca en la misma página y que el navegador muestre un (cuadro de diálogo de descarga o vista previa) para el PDF. ¿Hay alguna forma de hacerlo?

EDITAR: create_pdf.php está esperando variables POST. y los usa para crear el HMTL para el pdf.

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Puede intentar enviar el formulario a una nueva ventana (como una ventana emergente):

 <form method="post" id="myform" action="your_url"> <input name="param1"> </form>

y en javascript

 // create popup window var wind = window.open('about:blank', '__foo', 'width=700,height=500,status=yes,resizable=yes,scrollbars=yes'); // submit form to popup window $("#myform").attr("target", "__foo");

No olvide enviar el encabezado de tipo de contenido desde php:

 header("Content-Type", "application/pdf");

Editar: los navegadores deben mostrar el contenido de su pdf y también mostrar las opciones de descarga o impresión. El código no está probado, pero creo que haría lo que solicitó;

over 4 years ago · Santiago Trujillo Report

0

Encontré una solución para mi problema.

Hice una llamada AJAX dentro de otra llamada AJAX .

la primera llamada AJAX crea el archivo en webServer y abre el archivo en una nueva ventana.

En su parámetro de éxito hago lo siguiente:

La segunda llamada AJAX que elimina el archivo del Servidor.

 $.ajax({ type: 'post', url: '/path/to/create_pdf.php', data: dataString, success: function (data) { window.open( data, '_blank' // <- This is what makes it open in a new window. ); window.setTimeout(function () { dataString2 = 'Downloaded=true'; $.ajax({ type: 'post', url: '/path/to/create_pdf.php', data: dataString2, success: function (data) { alert(data); }, // handler if second request succeeds }); }, 5000); }, });
over 4 years ago · Santiago Trujillo Report

0

Usando esta respuesta a mi solicitud similar: envíe un archivo csv desde php al navegador

Necesitaba (1) obtener y mostrar un pdf en otra ventana; y (2) obtenga un archivo CSV y solicite guardarlo.

Tengo 2 botones simples en la página ( http://potoococha.net/ ) para cada uno. Aquí está el código:

 function getCSVText(evt) { if (currentChecklistCountry) { var form = $('<form method="post" action="../php/sendCSV.php?country=' + currentChecklistCountry + '"></form>'); $('body').append(form); form.submit(); form.remove(); } else checklistCountryButton.classList.add("needsAttention"); } function openChecklistPage() { if (!currentChecklistCountry) { checklistCountryButton.innerHTML = "Select Country"; checklistCountryButton.classList.add("needsAttention"); return; } if (gNumDays == undefined) gNumDays = 12; vars = "?country=" + currentChecklistCountry; vars += "&num_days=" + gNumDays; vars += "&line_nos=" + lineNumbers.checked; vars += "&left_check=" + leftCheck.checked; vars += "&endemics=" + showEndemics.checked; vars += "&sci_names=" + !sciNames.checked; vars += "&italics=" + !italics.checked; window.open( '../php/makePDF.php' + vars, '_blank' ); }

Entonces, los métodos getCSVText() descargan un archivo usando un formulario temporal agregado y luego eliminado inmediatamente, y openChecklistPage() abre con éxito otra ventana del navegador con un archivo pdf. El archivo pdf nunca se guarda en el servidor. El archivo CSV ya está almacenado allí y acaba de recuperarse. Quizás pueda modificar el código para sus propósitos.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!