Autor Zpráva
quatzael
Profil
Pročítám manuál MPDF, ale vůbec tam nevidím zmínku o tom jak soubor pdf vlastně vytvořit. Což je celá pointa této knihovny.

Všechny ukázky uvádějí pouze metodu WriteHTML.
$mpdf->WriteHTML($html);

Údajně to snad má zobrazit pdf dokument přímo v prohlížeči, ale mě to stejně vyjede jenom jako samotný pdf kód.

Potřepoval bych s tím udělat pět věcí:
1. Vygenerovat kód PDF. (to možná ta funkce WriteHTML nejspíš dělá)
2. Otevřít dokument v prohlížeči v nové záložce
3. Automaticky spustit download tohoto dokumentu
4. Uložit dokument na server nebo do databáze¨
5. Odeslat emailem

Teď mi došlo, že ten výpis na stránku asi zajišťuje metoda output
$mpdf->Output();

Ale jak lze normálně vygenerovat soubor. Žádnou metodu jsem tam nenašel..
Keeehi
Profil
quatzael:
Pro ukládání do souboru tam jsou nepovinné parametry.
string Output ([ string $filename , string $dest ])
quatzael
Profil
Keeehi:
Máš pravdu, toho jsem si nevšiml.
Ale nefunguje mi to destination..
Mám tam:
 $mpdf->Output('pdftest',$_SERVER['DOCUMENT_ROOT'] . '/../');

Je na tom něco špatně?
Keeehi
Profil
quatzael:
Je na tom něco špatně?
Nevypadá to. Máš práva do té složky zapisovat?
Toto ten soubor vytvoří?
file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/../pdftest', 'obsah');
quatzael
Profil
Keeehi:
Toto ten soubor vytvoří?
file_put_contents funguje. Možná, že mám málo místa na disku. Ale něco jsem už umazal a pořád nic. Možná na serveru chvíli trvá než se aktualizuje aktuální stav využití kapacity..


Zkoušel jsem vytvořit jen malý jednotagový pdf file a pořád to nefunguje.


No tak problém s kapacitou by to neměl být. Tu jsem si nechal akorát navýšit a pořád to nefunguje.
Taps
Profil
quatzael:
zkus níže uvedený jednoduchý zápis
<?
    include 'mpdf.php';
    $mpdf = new mPDF();
    $obsah = 'moje testovací PDF';
    $mpdf->WriteHTML($obsah);
    $mpdf->Output('export.pdf','F');
    ?>
quatzael
Profil
Taps:
Tohle se mi neukládá na server, ale přímo do počítače. Když dám otevřít, píše to, že je to buď nepodporovaný typ nebo že je soubor poškozen..
Taps
Profil
quatzael:
ukázku jsem ještě poupravil
quatzael
Profil
Taps:
Vydrž, otestuju. Ale teď mi nějak na serveru blbnou adresáře nebo co..
weroro
Profil
Takto mi to ako uloží na server, tak dá aj možnosť uložený súbor stiahnuť. V dokumentácii nie je uvedený parameter, ktorý by toto dovoľoval. Najprv som myslel, že by sa dal použiť parameter 'S', ale to by vyžadovalo manuálny zápis do súboru pomocou file_put_contents().
<?php

    include 'mpdf.php';
    
    $nazov = 'export-'.time().'.pdf';
    
    $mpdf = new mPDF();
    $obsah = 'moje testovací PDF';
    $mpdf->WriteHTML($obsah);
    $mpdf->Output($nazov,'F');

    header("Content-Description: File Transfer");
    header("Content-Type: application/force-download");
    header("Content-Disposition: attachment; filename=\"$nazov\"");
    
    readfile ($nazov);

?>
quatzael
Profil
No tak se mi konečně podařilo rozchodit ty adresáře. Kopíroval jsem celou neosekanou verzi (146MB) na server a nějak vznikly problémy.

Taps:
ukázku jsem ještě poupravil
Ta upravená verze nedělá vůbec nic. Nestahuje se nic.

weroro:
Na server se mi to neukládá. Do počítače jo. Ale zase to nejde otevřít. Stejná chyba: soubor nejde číst, protože je neznámého typu nebo poškozen.
Taps
Profil
quatzael:
ani se nic neuloží na server?
V postupu, který máš v [#1] quatzael se logicky nejdříve musí vygenerováné PDF uložit na server a poté je možné s ním dělat další operace ( nabídnou uživateli ke stažení, odeslat e-mailem)
quatzael
Profil
Taps:
ani se nic neuloží na server?
Nic tam není. Nebo tam aspoň nic nevidím. Do který složky se to má vygenerovat?
weroro
Profil
quatzael:
U mňa na localhoste to funguje bez problému (uloží súbor a následne mi ho dá stiahnuť, pričom aj Adobe Reader v poriadku súbor otvorí). Nahrávať na FTP 60MB 84MB mpdf balíček sa mi nechce aby som to vyskúšal aj tam.
quatzael
Profil
a co máš za verzi toho mpdf?


já mám 6.0
weroro
Profil
mpdf 6.0 (sťahoval som tú najnovšiu verziu), XAMP 1.8.2, PHP 5.4.27


Inak ak si dobre spomínam, tak v práci sme jedného čaasu mali problém s tým, že PDF generované práve touto knižnicou otvoriť nešlo. Nakoniec sme prišli na to, že pred vygenerovaním súboru, čiže pred $mpdf->Output($nazov,'F'); nesmie byť nič vypísané (žiadne echo ani surové HTML a pod.), inak je tento obsah pridaný do generovaného PDF (a ešte k tomu pridaný nekorektne) a poškodí to hlavičku.


quatzael:
Na server se mi to neukládá. Do počítače jo. Ale zase to nejde otevřít. Stejná chyba: soubor nejde číst, protože je neznámého typu nebo poškozen.
Nemáš tam BOM?
quatzael
Profil
weroro:
Nakoniec sme prišli na to, že pred vygenerovaním súboru, čiže pred $mpdf->Output($nazov,'F'); nesmie byť nič vypísané (žiadne echo ani surové HTML a pod.), inak je tento obsah pridaný do generovaného PDF (a ešte k tomu pridaný nekorektne) a poškodí to hlavičku.

Všechno jsem teď smazal, takže tam fakticky není nic. Když ale si z prohlížeče zobrazím zdroják, tak je tam tohle:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv="Content-Type" 
content="text/html; charset=windows-1250"></HEAD>
<BODY></BODY></HTML>

Ale to asi tam dává samotnej prohlížeč, když dostane prázdnej script..

Chyba pořád zůstává stejná..


weroro:
Nemáš tam BOM?
Co to je? Jak to zjistím?


[#6] Taps
Hele tak to Tvoje funguje. Ukládá se to do složky domena.cz. Já jsem to tam nějak neviděl. Omlouvám se. Teď celý odpoledne jsem cestoval a připojoval se z různých míst kde různě byly problémy s připojením, tak se to tam nějak možná nezobrazilo. Nevím..
Každopádně to Tvoje řešení ukládá pdf do složky a je čitelný. Supr.
Automatický download to ale nedělá (jestli teda vůbec má dělat)..
A jde to vyexportovat i když je tam před tím i ten HTML výstup!
Taps
Profil
quatzael:
Automatický download to ale nedělá (jestli teda vůbec má dělat)..
Samozřejmě ten skript, uloží jen pdf. Následně ten soubor můžeš nabídnout ke stažení nebo poslat e-mailem (samozřejmě je nutné napsat další skript)
quatzael
Profil
Taps:
Já jsem to právě že špatně pochopil a myslel jsem, že to má zároveň i downloadovat.
Takhle to vypadá, že funguje. Ještě odpoledne zkusím nastavit to destination.
weroro
Profil
Ten môj script je spojenie Tapsovho riešenia (ktoré ti funguje) a môjho pridaného downloadu.
quatzael
Profil
weroro:
Ten môj script je spojenie Tapsovho riešenia (ktoré ti funguje) a môjho pridaného downloadu.
To jo, jenže zatímco to pdfko, který se uloží na server je v pořádku, to které se zároveň downloaduje, nejde otevřít kvůli tomu, že je poškozeno nebo jiného typu.
Nedělá tam náhodou tu neplechu ten Content-Disposition: attachment;?


Ale pořád mi dělá problém tam zadat to umístění. To opravdu nefunguje..


Když se dívám na tu funkci, tak ta path ke složce se tam jako parametr asi neuvádí. Musí tam být to 'F' a požadovaná složka se nastaví někde jinde zřejmě.




SetBasePath!


No asi by to mělo být takhle nějak. Ale stejně to furt ukládá na to stejný místo do doménový složky.

$mpdf = new mPDF('UTF-8','A4'); 
$dest = $_SERVER['DOCUMENT_ROOT'] . '/../';
$html = 'moje testovací PDF';
$html = file_get_contents($dest);
$mpdf->setBasePath($dest);
$mpdf->WriteHTML($html);
$mpdf->Output($filename,'F');
weroro
Profil
quatzael:
Nedělá tam náhodou tu neplechu ten Content-Disposition: attachment;?
To tam byť musí. Vyskúšaj zmeniť hlavičky:
header('Content-Transfer-Encoding: binary');
header('Content-Type: application/pdf');
header("Content-Disposition: attachment; filename=\"$nazov\"");
readfile ($nazov);

quatzael:
Ale stejně to furt ukládá na to stejný místo do doménový složky.

Toto si neskúšal? $mpdf->Output('zlozka/' . $filename,'F');
quatzael
Profil
weroro:
To tam byť musí. Vyskúšaj zmeniť hlavičky:
Pořád nic. Nefunguje..

Toto si neskúšal? $mpdf->Output('zlozka/' . $filename,'F');
Nezkúšal, ale právě vyzkúšal:o) Funguje!! Tak aspoň už je jedna část vyřešená..:o)
weroro
Profil
Môžeš mi prosím dať názov a verziu tvojho prehliadača, verziu PHP a verziu PDF readera? Rád by som nasimuloval tvoje podmienky u seba. Poprípade pridaj aj názov editoru v ktorom PHP píšeš.
quatzael
Profil
weroro:
Internet Explorer 11.0.9600.17501
PHP 5.5
Adobe Reader XI (11.0.10) - Czech


Tak sorry, PHP bude asi 5.3.29


Alespoň podle funkce: phpversion()

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0