PHP týden Předvánoční slevová akce
Pouze tento týden sleva až 80 % na PHP e-learning!
Využij předvánočních slev a získej od nás 20 % bodů zdarma! Více zde
Avatar
adder
Člen
Avatar
adder:9.9.2015 17:28

Zdravím lidi,
už se to trápím nějaký čas, jak převést base64 data do .pdf. Mám na to triviální kód, ale bohužel mi nejde otevřít soubor. Je nutné tomu něco přidat nebo je chyba v binárních datech?

$data_base64 = base64_encode($data);
file_put_contents('test.pdf', $data_base64);

Díky za pomoc

Odpovědět
9.9.2015 17:28
I’m going to lay this brick as perfectly as a brick can be laid.
Avatar
adder
Člen
Avatar
adder:9.9.2015 17:43

Omlouvám se, vyřešeno.

Nahoru Odpovědět
9.9.2015 17:43
I’m going to lay this brick as perfectly as a brick can be laid.
Avatar
Jan Lupčík
Šéfredaktor
Avatar
Odpovídá na adder
Jan Lupčík:9.9.2015 18:02

Je ve zvyku napsat řešení. :)

Nahoru Odpovědět
9.9.2015 18:02
TruckersMP vývojář
Avatar
adder
Člen
Avatar
Odpovídá na Jan Lupčík
adder:9.9.2015 18:09

Jo, trochu jsem styděl. :) Použil jsem base64_encode na již encodovaná data... :O Takže chyba nebyla v datech a ani nebylo nic potřeba, chyba byla ve mně. :)

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět
9.9.2015 18:09
I’m going to lay this brick as perfectly as a brick can be laid.
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Jaroslav Patrný:12. listopadu 21:38

Ahoj, dostal jsem přílohu e-mailu zakódovanou base64. Při použití metody

base64_decode();

jsem jako výsledek obdržel směs znaků včetně azbukových, čínských, japonských a jiných znaků, převažují ale černé kosočtverce s bílým otazníkem. Mohl by mi prosím někdo poradit jak ten text dekódovat? Obsah toho souboru z přílohy je zde
https://www.itnetwork.cz/…lighter/1245
Předem moc díky.

 
Nahoru Odpovědět
12. listopadu 21:38
Avatar
lionnel
Člen
Avatar
Odpovídá na Jaroslav Patrný
lionnel:13. listopadu 10:45

Jak je patrné z hlaviček, přílohou je soubor ve formátu docx. Nejedná se tedy o text, ale binární data a proto ti to po dekódování zobrazuje nesmyslné znaky. Nejjednodušší způsob jak soubor přečíst, je obsah dekódovat a stáhnout do souboru například zde, změnit koncovku staženého souboru na .docx a otevřít ve Wordu.

 
Nahoru Odpovědět
13. listopadu 10:45
Avatar
Jaroslav Patrný:29. listopadu 2:03

Provedl jsem to přesně jak popisuješ, ale soubor nejde otevřít.

 
Nahoru Odpovědět
29. listopadu 2:03
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:29. listopadu 8:10

Base64 se pouziva na zakodovani znaku 0-255 do soustavy znaku 0-63 (64 znaku). Mezi tyto znaky prave patri textove citelne znaku a-z, A-Z, 0-9, +/= A je to z historickych a praktickych duvodu, proc se to pouziva.
Co se do kodu dava navic je odradkovani po 40 znacich. Coz by mela ta funkce odbourat automaticky nebo muzes zkusit pocarovat s druhym parametrem.
https://en.wikipedia.org/wiki/Base64
https://www.php.net/…4-decode.php

V hlavicce mas filename="Dotaznik-pro-uchazece.docx".
Soubor by mel pojmenovat pri ukladani na disk tim jmenem.
Data zacinaji a konci "UEsDBBQABg... 1bNSkdoEFQW6".
Kdyz to dekodujes, treba online... Mel bys mit na zacatku "PK", coz je zkratka pro packed, pk zip. Coz je ok, protoze docx souboru jsou skupina souboru pakovana zipem.
http://www.utilities-online.info/base64/#…
Pokud ti to nezacina PK, pak jsi nejspis pridal k datum i hlavicky a mas to uplne spatne.

 
Nahoru Odpovědět
29. listopadu 8:10
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.