Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] zapis odczyt z pliku pdf
Forum PHP.pl > Forum > Przedszkole
Swirek
Pobieram z zewnętrznego serwera dane w postaci binarnej jest to dokładnie plik pdf.

jak mam odczytać i wyświetlić te dane jako już działający normalny pdf?

  1. $file = "plik.pdf";
  2. $fp = fopen($file, "wb");
  3. flock($fp, 2);
  4. fwrite($fp, $wartosc2[1]);
  5. flock($fp, 3);
  6. fclose($fp);
  7.  
  8. $nazwa = $file;
  9. $otworz = fopen($nazwa, "rb");
  10. $tresc = fread($otworz, filesize($nazwa));
  11. fclose($otworz);


funkcja zapisuje mi plik pdf ale nie potrafię go otworzyć bo jest uszkodzony, bo te dane trzeba pewnie "przerobić" ale nie wiem jak.
jak mam dane z pliku pdf zapisane binarnie zapisać do pliku lub przechwycić je w locie, aby wyświetlić je w przeglądarce?

i przy okazji w php5 jest nowa funkcja zapisująca plik zamiast flock fopen ale mi uciekła. Może ktoś przypomnieć?

z góry dziękuję
Fifi209
file_put_contents
file_get_contents

Co do otwierania przez przeglądarkę - pod warunkiem, że ma wtyczkę.
Wysyłasz do przeglądarki nagłówki przez header informujące o tym że to plik pdf i go odczytujesz. To co ona zrobi, czy zapisze czy otworzy to jej sprawa.
pifarek
  1. header ("Content-Type: application/pdf");
  2. $content = file_get_contents('http://www.futrega.org/wk/wk.pdf');
  3.  
  4. echo $content;

O takie coś ci chodzi?
Swirek
zrobiłem coś takiego dodałem nagłówek

  1. $file = "plik.pdf";
  2. file_put_contents($file, $danebinarne);
  3.  
  4. echo "%PDF-".$file;


wyskoczyło mi wcześniej że na początku nie ma %PDF- i dlatego dodałem ale w takim wypadku wywala plik jest uszkodzony i nie mógł być naprawiony
co mogę jeszcze zrobić by to uruchomić?

edit:

zmieniłem na (pomojam zapis nie potrzebny)

  1. echo "%PDF-".$danebinarne;
Fifi209
A możesz pokazać cały skrypt?
Swirek
  1. header ("Content-Type: application/pdf");
  2.  
  3. $Siodemka2 = new Siodemka();
  4. $Siodemka2->_WydrukEtykietaPdf($numery);
  5.  
  6. preg_match('#<ns0:result>(.*)</ns0:result>#', $Siodemka2->__getLastResponse(), $wartosc);
  7.  
  8. echo "%PDF-".$wartosc[1];
  9.  


wszystkie zbędne znaki spacje wywaliłem.

między znacznikami <ns0:result> jest wartość binarna pliku która zostaje pobrana od kuriera.

edit:

pobieranie danych od kuriera przebiega pomyślnie dane zapisane do parametru $wartosc są dokładnie takie jak zwraca mi api kuriera, problem jest tylko z wyrzuceniem ich na ekran w postaci pdf
mls
To może pokaż jeszcze fragment tego, co zawiera zmienna $wartosc - bo jest bardzo prawdopodobne, że nie ma tam wcale danych binarnych...
Swirek
Cytat(mls @ 14.10.2011, 21:10:00 ) *
To może pokaż jeszcze fragment tego, co zawiera zmienna $wartosc - bo jest bardzo prawdopodobne, że nie ma tam wcale danych binarnych...


  1. JVBERi0xLjQKJeLjz9MKNSAwIG9iago8PC9GaWx0ZXIvRmxhdGVEZWNvZGU....
  2. Pj4+L01lZGlhQm94WzAgMCAyODAgMjgwXT4+CmVuZG9iagoxMCAwIG9iago8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDEyNTE+PnN0cmVhbQp4nI1Xa1IbRxD+r1P0T1Epjea1szP+t3rgCGGtvFqVYhVVqQ3IlIKBGHAp4Qy5hZXNvdXJjZXM8PC9Qcm9jU2V0IFsvUERGIC9UZXh0IC9JbWF
    nZUIgL0ltYWdlQyAvSW1hZ2VJXS9Gb250PDwvRjEgMiAwIFI+Pj4+L1N1YnR5cGUvRm9ybS9CQm94WzAgMCAxMTMuMTYgNDguMDJdPj5zdHJlYW0KeJyVkj1OBDEMhfucIiU0
    D9txYqdF2j1BrgBISDR7/4IJszuMcBrk7ot/Xp5N2UGSGa5ZKd/eksDaDgld7rCiyg5/nnfIBJZQzwqT0IAdGqAQRKOAElE9RJ1oIZQotZSVqtLgIVUJuqAKjm31jgqaP0whLJyqiNOrw+OgRodTp9ymD6dOVrceqo1mTaAy9f1Vagbx0NS3uhaposWluC1UdQbFb3VdXVC344TOx0K8sIupIspl6q
    t1MTPKogeX3zX+k70nzjNuH+l1pJcrb/M4j4lpC861QaYIErI8vtKTciFqXU3Z7Xl8pstI3wTfqWMKZW5kc3RyZWFtCmVuZG9iago5IDAgb2JqCj
    w8L01hdHJpeCBbMSAwIDAgMSAwIDBdL0ZpbHRlci9GbGF0ZURlY29kZS9UeXBlL1hPYmplY3QvRm9ybVR
    5cGUgMS9MZW5ndGggMTU2L1Jlc291cmNlczw8L1Byb2NTZXQgWy9QREYgL1RleHQgL0ltYWdlQiAvSW1h
    Z2VDIC9JbWFnZUldL0ZvbnQ8PC9GMSAyIDAgUj4+Pj4vU3VidHlwZS9Gb3JtL0JCb3hbMCAwIDU0LjQgMzIuMDJdPj5zdHJlYW0KeJyVkLEOAiEMhvc+RUddsC2Fw9VEJzeZ3NXExOXefxByh5e0k+lCPv5+LRCWQIIcMori/AAJuiAKZUXaTgYVj1isinW4unRlU7u2I8mmJAaxfsneJkdvi3GwrTcm74t5vGHrVbeJqssUm0ns7Um8P
    f3+g/4gT2DsNb/gVOFw4TaFsXZMrRhlCtwhCU1YP7C73u77+oZzhS/E6F5sCmVuZHN0cmVhbQplbmRvYmoKNiAwIG9iago8PC9Db3VudCA0L1R5cGUvUGFnZXMvSVRYVCgyLjE
    uNykvS2lkc1s3IDAgUiAxMSAwIFIgMTUgMCBSIDE5IDAgUl0+PgplbmRvYmoKMjAgMCBvYmoKPDwvVHlwZS9DYXRhbG9nL1BhZ2VzIDYgMCBSPj4KZW5kb2JqCjIxIDAg
    b2JqCjw8L0NyZWF0aW9uRGF0ZShEOjIwMTExMDE0MjMxNjQzKzAyJzAwJykvUHJvZHVjZXIoaVRleHQgM
    i4xLjcgYnkgMVQzWFQpL01vZERhdGUoRDoyMDExMTAxNDIzMTY0MyswMicwMCcpPj4KZW5kb2JqCnhyZW
    YKMCAyMgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDkyODggMDAwMDAgbiAKMDAwMDAwNjA2NyAwMDA
    wMCBuIAowMDAwMDA4OTA5IDAwMDAwIG4gCjAwMDAwMDYxNTUgMDAwMDAgbiAKMDAwMDAwMDAxNSAwMDAw
    MCBuIAowMDAwMDEwNTk2IDAwMDAwIG4gCjAwMDAwMDEzMzcgMDAwMDAgbiAKMDAwMDAwNzU5MSAwMDAwM
    CBuIAowMDAwMDEwMjE3IDAwMDAwIG4gCjAwMDAwMDE1MjYgMDAwMDAgbiAKMDAwMDAwMjg0NiAwMDAwMC
    BuIAowMDAwMDA4NDQxIDAwMDAwIG4gCjAwMDAwMDgwNTYgMDAwMDAgbiAKMDAwMDAwMzAzNyAwMDAwMCB
    uIAowMDAwMDA0MzYxIDAwMDAwIG4gCjAwMDAwMDk3NTIgMDAwMDAgbiAKMDAwMDAwNzIwOCAwMDAwMCBu
    IAowMDAwMDA0NTU0IDAwMDAwIG4gCjAwMDAwMDU4NzQgMDAwMDAgbiAKMDAwMDAxMDY4MCAwMDAwMCBuI
    AowMDAwMDEwNzI2IDAwMDAwIG4gCnRyYWlsZXIKPDwvSUQgWzxlYTBlMjdiZWNiM2M2OTE2NTZiN2VhYj
    c0OTYxNjA0OD48YTI5ZDAyNzg1ZmM3M2E1YTMyM2UyNjk4NGRlM2UzMjA+XS9Sb290IDIwIDAgUi9TaXplIDIyL0luZm8gMjEgMCBSPj4Kc3RhcnR4cmVmCjEwODQ5CiUlRU9GCg==
  3.  


post był za długi więc skróciłem krzaczki:)
Fifi209
I Twoim zdaniem to zapis binarny (zero-jedynkowy) ?
Swirek
http://www.siodemka.com/narzedzia/wsparcie...epniane-metody/

ostatnia metoda wink.gif
mls
base64_decode i będzie binarny... wink.gif

Tak więc autorze wątku, może spróbuj po prostu:
  1. header ("Content-Type: application/pdf");
  2. $Siodemka2 = new Siodemka();
  3. $Siodemka2->_WydrukEtykietaPdf($numery);
  4. $wartosc = null;
  5.  
  6. if (preg_match('#<ns0:result>(.*)</ns0:result>#', $Siodemka2->__getLastResponse(), $wartosc))
  7. echo(base64_decode($wartosc[1]));
Swirek
Cytat(mls @ 14.10.2011, 22:41:52 ) *
base64_decode i będzie binarny... wink.gif

Tak więc autorze wątku, może spróbuj po prostu:
  1. header ("Content-Type: application/pdf");
  2. $Siodemka2 = new Siodemka();
  3. $Siodemka2->_WydrukEtykietaPdf($numery);
  4. $wartosc = null;
  5.  
  6. if (preg_match('#<ns0:result>(.*)</ns0:result>#', $Siodemka2->__getLastResponse(), $wartosc))
  7. echo(base64_decode($wartosc[1]));



Wiedziałem że coś tam trzeba przerobić biggrin.gif
Rączki całuje i dziękuje biggrin.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.