2016-04-25 5 views
1

Ich benutze Dompdf, um ein PDF-Dokument (im laufenden Betrieb) zu erstellen. Ich muss auch irgendwelche Daten in dieses pdf posten, also benutze ich Ajax.Öffnen Sie ein neues Fenster in AJAX-Erfolg, um die PDF anzuzeigen

Dies ist die PHP dompdf:

<?php 

class Dompdfgenerator 
{ 
public function generate($html,$filename){ 
    define('DOMPDF_ENABLE_AUTOLOAD', false); 
    require_once("./vendor/dompdf/dompdf/dompdf_config.inc.php"); 

    $dompdf = new DOMPDF(); 
    $dompdf->load_html($html); 
    $dompdf->render(); 
    $dompdf->stream($filename.'.pdf',array("Attachment"=>0)); 
} 
} 

Also, ich AJAX verwenden eine Menge Daten, um zu Posten pdf-Datei auf eine PHP-Datei wie diese zu erstellen.

Dies ist die Ajax:

var result = $("#hasil-pencarian").clone().find('td:last-child').remove().end().html(); 

$.ajax({ 
url: "<?= site_url('members/megumi/cek_list_wire_rod/generate_pdf_laporan') ?>", 
type: 'POST', 
data: { 
    result: result, 
    id_pendukung: $('.printLaporan').attr('data-id') 
}, 
dataType: 'json', 
success: function (response) { 

    open a new window 


}, 
error: function() { 
    alert('Terjadi masalah di server saat print laporan'); 
} 
}); 

Und das ist die PHP-dompdf zu verwenden.

public function generate_pdf_laporan() { 
    $this->load->library('dompdfgenerator'); 

    $data= array(
     'result' => $this->input->post('result') 
    ); 

    $html = $this->load->view('members/megumi/check_list_of_wire_rod/v_laporan_check_list', $data, true); 

    $this->dompdfgenerator->generate($html, 'contoh'); 
} 

Dies ist der html einem pdf

<!DOCTYPE html> 
<html> 
<head> 
<title>Report Table</title> 
<style type="text/css"> 
#outtable{ 
    padding: 20px; 
    border:1px solid #e3e3e3; 
    width:600px; 
    border-radius: 5px; 
} 

.short{ 
    width: 50px; 
} 

.normal{ 
    width: 150px; 
} 

table{ 
    border-collapse: collapse; 
    font-family: arial; 
    color:#5E5B5C; 
} 

thead th{ 
    text-align: left; 
    padding: 10px; 
} 

tbody td{ 
    border-top: 1px solid #e3e3e3; 
    padding: 10px; 
} 

tbody tr:nth-child(even){ 
    background: #F6F5FA; 
} 

tbody tr:hover{ 
    background: #EAE9F5 
} 
</style> 
</head> 
<body> 
<div id="outtable"> 
    <table> 
    <thead> 
     <tr> 
      <th class="short">No</th> 
      <th class="normal">First Name</th> 
      <th class="normal">Last Name</th> 
      <th class="normal">Username</th> 
     </tr> 
    </thead> 
    <tbody> 
     <?php echo $result ?> 
    </tbody> 
    </table> 
</div> 

Wie kann ich diesen html pdf in ein neues Browserfenster in Ajax-Erfolg openede wird machen zu sein, jeder Vorschlag ? Danke für die Hilfe, es so geschätzt.

+0

Wenn Sie AJAX waren verwenden zu sagen, es war erfolgreich, was Sie brauchen um die PDF lokal auf dem Server zu speichern und einen Verweis auf den gespeicherten Speicherort auf dem zurückkehrenden AJAX bereitzustellen; in dem Sie den Benutzer auch leiten. – MackieeE

+0

Nicht ein genaues Duplikat, aber das [link] (http://stackoverflow.com/questions/9399354/how-topen-a-new-window-and-insert-html-into-it-using-jquery) löst das, wonach du fragst. – Dacklf

Antwort

0

Verwenden window.open

window.open("http://path_pdf_file"); 

PHP für das pdf auf der Festplatte zu speichern:

$output = $dompdf->output(); 
    file_put_contents($filename.'.pdf', $output); 
+0

Brother, ist es im laufenden, das ist die PDF-Datei ist es nicht create/ –

+0

@FadlyDzil speichern Sie die Datei auf der Festplatte und dann den Pfad der Datei von AJAX – madalinivascu

+0

Ich möchte nicht diese Datei für die sichere Festplatte –

0

Wenn Sie mögen nur vermeiden, pdf-Datei im Dateisystem, Ihr Ajax-Handler members/megumi/cek_list_wire_rod/generate_pdf_laporan sollte bestehen bleiben Speichern $POST ed Daten in der Sitzung zu lassen, ein anderes PHP-Skript, sagen wir get_pdf, generate_pdf_laporan Funktion zu verwenden, um das PDF mit diesen Daten zu rendern. In diesem Fall würde Ihre success Funktion so einfach sein wie:

success: function (response) { 
    window.open('/members/megumi/cek_list_wire_rod/get_pdf', '_blank'); 
} 

Es wird empfohlen richtigen MIME-Typ in get_pdf einzustellen:

header('Content-Type: application/pdf'); 
Verwandte Themen