Autor Zpráva
David1256
Profil
Dobrý den,

nedávno jsem se tu na diskusi snažil zjistit, jak konverovat .xls do .pdf přes knihovnu PHPExcel. Výsledku jsem se dopátral tak napůl. Konvertor jsem zprovoznil, nicméně zároveň jsem zjistil, že konvertor je velice nepřesný a tudíž nepoužitelný. Rád bych tedy zjistil jaké jsou další možnosti, abych můj problém konverze .xls do .pdf vyřešil.

Vlastně řeším to, jak při objednání nějakého zboží zároveň poslat zákazníkovi i fakturu. První myšlenka byla tvorba .pdf jako takového, jenomže zde jsem narazil na problém, že vymodelovat "Exceláckou" strukturu tabulky jako takovou za pomocí funkcí knihoven jako DomPDF a podobných by se dalo přirovnat šílenství. A tak mně napadlo, zda neexistuje nějaká PHP knihovna, co by uměla otevřít .xls strukturu, upravit požadovaná pole a vyexportovat výsledek do .pdf, našel jsem knihovnu PHPExcel, která sice krásně upravuje .xls šablony, ale jejich konverze do .pdf už stojí za bačkoru, protože žádný z konvertorů mi nedokázal vyexportovat použitelný formát, jelikož dokumentu zkrátka rozbil jeho původní strukturu.

Tak se tedy ptám? Znáte někdo nějaký ověřený a účinný způsob konverze .xls do .pdf? Popřípadě jak se řeší dnes tvorba faktur? Faktury jsou zasílány v .pdf, tak by mě zajímalo jak jsou tvořeny. Mám strukturu faktury v .xls, kterou potřebuji zachovat a následně upravit údaje (což umí PHPExcel), ale hlavně správně vyexportovat do .pdf.

Děkuji.
peta
Profil
Excel umi ulozit tabulku jako csv textovy soubor. Pokud je to ciste tabulka s udaji, staci to. V php se to da nacist. Vypada to takto:
a;b;c;d
0;1;2;3
4;5;6;7
...

Faktura by se treba dala resit jako word/wordpad rtf. To je v podstate textak, kde by sis dal nejaka vlastni nazvy a pak je pres php zamenil a ulozil to. Jsou tam dva takove problemy. Abys nemusel pouzivat spesl konverzi, nesmel by mit dany text rtf znacky. A taky je tam nejaka mezena delka znaku na radek a je treba to zalomit. Pripadne ti wordpad sam zalomi tvoji znacku. Coz je trochu neprijemne a je treba mu to rucne zalomit a znacku si spojit v nejakem editoru :)
http://peter-mlich.wz.cz/web/php/pr/rtf/prihlaska.php
S pdf ti neporadim. Mozna bych postupoval podobne jako u rtf. Vygeneroval si z wordu nebo neceho pdf soubor se svymi unikatnimi znackami a ty pak pomoci php nahradil. (%%%ICO%%%). Nejspis bude treba donutit generator, aby pdf nekomprimoval :)
Joker
Profil
David1256:
jenomže zde jsem narazil na problém, že vymodelovat "Exceláckou" strukturu tabulky jako takovou za pomocí funkcí knihoven jako DomPDF a podobných by se dalo přirovnat šílenství.
A je tam ten Excel k něčemu nutný?
Něco podobného jsem kdysi vyřešil generováním PDF z HTML šablony.
Pokud web sám už používá nějaký šablonovací systém, je snadné vyrobit HTML šablonu pro fakturu, v PHP do ní nasypat data a výsledný kód předhodit mPDF.

S mPDF to sice někdy je trochu boj, protože si kód interpretuje jinak než prohlížeče a někdy dost divně, ale to se už dá odladit.
David1256
Profil
Joker:
HTML šablonu mám samozřejmě také, ovšem ta není tak "čistá" jako .xls šablona, protože neumí zachovat všechno formátování, co má .xls. Takže proto jsem se rozhodl, že vezmu .xls šablonu, upravím jí a vyexportuji do .pdf.

Ale stále se mi nechce věřit, že neexistuje nějaké jednoduché řešení, zkrátka nějaké PHP API, kde by se napsalo pár řádků kódu (vezmi .xls a překonvertuj do .pdf) a bylo by hotovo. Zkrátka konvertor z MS Office převeden do nějakého webového API.

peta:
Toto řešení se mi zdá moc divoké...

-----------------------------------------------------------------------------------------

Přece to musí jít nějak efektivně? Jak se tedy generují ty pěkné faktury, co chodí v příloze mailu po objednávce z e-shopů? Ty přece nejsou generovány z .html šablony, protože přes .html by asi nedosáhli takového výsledku. Zkrátka .html šablona nedokáže dle mě zasuplovat .xml.
_es
Profil
David1256:
Zkrátka .html šablona nedokáže dle mě zasuplovat .xml.
To je predsa nezmysel, XML je len zápis nejakej stromovej dátovej štruktúry, nie je to nič všeobecnejšie od HTML.
David1256
Profil
Aha, tak mi to už asi docvaklo .). Ono ty konvertory z .xls do .html a podobné tu šablonu neumí 100% překonvertovat tak, jako kdyby si jí člověk vytvořil sám od píky a teď jsem si navíc všiml, že to mPDF vlastně umí i CSS, takže by to mělo jít tak, že si vytvořím pěknou .html templatu faktury a pak jí vygeneruji do .pdf.
Alphard
Profil
David1256:
Jak se tedy generují ty pěkné faktury, co chodí v příloze mailu po objednávce z e-shopů?
Taky jsem se setkal spíš se šablonou v html. Nicméně vaše otázka mě přivedla k nápadu, jestli třeba známý PDFCreator nebo obdoby pro Linux nejdou ovládat z příkazové řádky a nepřekvapivě jdou. Takže stačí mít VPS (dnes za pár korun) a můžete využít tyto mnohem mocnější nástroje než jen PHP knihovny. Můžete využít i LaTeX apod., prostě cokoliv, když víte, po kterém programu sáhnout, ani to není složité.
David1256
Profil
Alphard:
K této variantě jsem se také progooglil, nicméně s VPS nemám zkušenosti, takže půjdu cestou html šablon. Dokonce jsem našel už nějaké pěkné a ani moc nestojí. http://graphicriver.net/item/invoices/7012176?WT.ac=search_item&WT.seg_1=search_item&WT.z_author=feeltheblue
Joker
Profil
David1256:
Jak se tedy generují ty pěkné faktury, co chodí v příloze mailu po objednávce z e-shopů? Ty přece nejsou generovány z .html šablony, protože přes .html by asi nedosáhli takového výsledku.
Proč ne?
Nenapadá mě efekt, který bych kdy viděl na nějaké faktuře a v HTML by nešel udělat (leda skutečný neobrázkový podpis či otisk razítka :-) Ale to neumí ani Excel).
peta
Profil
Krkolomne? Nepotrebujes k tomu zadnou dalsi knihovnu. Tabulku muzes generovat taky podle dalsiho souboru.
$data = array('CENA'=>'123450 ,-');
$name = 'soubor.pdf'; // $name = 'soubor.rtf';
$str = file_get_contents($name);
$str = str_replace(array_keys($data),$data,$str);
header('Content-type: application/pdf'); // header("Content-type: text/richtext");
header('Content-Disposition: inline; filename="'.'faktura-cislo-den-mesic-rok.pdf'.'"');
echo $name;
Joker
Profil
peta:
Jsem žádostiv vidět, jak tohle řešení z Excelu přenese vzhled a formátování- když kvůli tomu to David1256 dělá.
peta
Profil
Joker: Proc se na to ptas? Jako admin bys takove veci mel ovladat.
Nechapu, proc se na to ptas a nepodivas se na priklad ([#2] peta). Jedine, co potrebuje, aby si ten clovek mohl nastavit vzhled faktury, jaky chce. Coz to reseni do jiste miry umoznuje. Nerikam, ze neni lepsi to prevadet z html, ale jde to i jinak.
Joker
Profil
peta:
Proc se na to ptas?
Ani nevím. Měl jsem rovnou napsat, že to je kravina a nebude to dělat to, co David1256 chce.

Tak dobře:
Pokud David1256 píše, že potřebuje do PDF převést Excel včetně vzhledu a formátování (resp. jak jsem pochopil zejména vzhled a formátování), je tohle řešení kravina a nebude to dělat to, co on chce.
David1256
Profil
Joker:
Ano přesně tak si to vysvětluji i já. Řešení peta není to, co hledám. Půjdu cestou HTML šablon a jejich konverze do .pdf, která by měla být oproti konverzi z .xls bez problémů.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0