Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Drukowanie formularza
Forum PHP.pl > Forum > Przedszkole
raqqos
Chciałbym, żeby po kliknięciu na przycisk drukowało mi tylko to co jest w formularzu, bez ścieżki dostępu na górze strony ani żadnego nagłówka. Czy jest coś takiego możliwe w php?
nospor
W php jak najbardziej. Zapisujesz to co chesz do pdf (lub rtf lub czegoś inneego) i wyrzucasz do przeglądarki jako plik do ściągnięcia. Wówczas gościu zrobi se z tym co będzie chciał.
raqqos
Cytat
Zapisujesz to co chesz do pdf (lub rtf lub czegoś inneego) i wyrzucasz do przeglądarki jako plik do ściągnięcia.
A czy mógłbyś konkretniej jakis schemacik zapodać?

Po przemyśleniu biggrin.gif :nie jestem pewien czy w moim przypadku to będzie taki dobry pomysl. Taki pdf musialbym generowac dla kazdego klienta, a w ciagu dnia moze ich byc sporo, więc problemem moze byc ilosc miejsca na dysku na te pliki. Nie ma innego sposobu?
nospor
Co do miejsca na pliki. NIkt nie każe ci ich zapisywać na dysku. Generujesz w php i kod pdf rzucasz do przeglądarki z odpowiednim nagłówkiem. Ja swego czasu robiłem wersję do wydruku w rtf. MIałem wzorzec, w nim miałem miejsce na wstawienie swoich danych któe chciałem wydrukować. Zczytywałem wzorzec, wstawialem dane i do klienta rzucałem.
Kod do rzucenia do klienta:
  1. <?php
  2.  
  3. Header('Content-Type: application/rtf');
  4. Header('Content-Length: '.strlen($rtf));
  5. Header('Content-disposition: inline; filename=guarantee.rtf');
  6. echo $rtf;//zawartość rtf
  7.  
  8. ?>

Po za tym jak juz się uprzesz zapisywac pliki na dysku to rzucaj je do konkretnego katalogu, który raz na jakiś czas będziesz czyścił
raqqos
Dzieki nospor! Zrobiłem to na rtf-ach. Pieknie dziala biggrin.gif
Jakby kogoś interesowalo to kod pliku do pobierania rtfa wyglada u mnie tak:
  1. <?php
  2.  
  3.  header('Content-Type: application/rtf');
  4.  header('Content-disposition: inline, filename=do_druku.rtf');
  5.  
  6.  $d1 = $HTTP_POST_VARS['id'];
  7.  $d2 = $HTTP_POST_VARS['imie'];
  8.  $d3 = $HTTP_POST_VARS['nazwisko'];
  9.  $d4 = $HTTP_POST_VARS['ulica'];
  10.  $d5 = $HTTP_POST_VARS['nr_dom_lok'];
  11.  $d6 = $HTTP_POST_VARS['miejscowosc'];
  12.  $d7 = $HTTP_POST_VARS['sygnatura_wniosku'];
  13.  
  14.  $dzis = date(&#092;"d.m.Y\");
  15.  
  16.  $nazwa_pliku = 'wzorzec_odmowa.rtf';
  17.  $wp = fopen($nazwa_pliku, 'r');
  18.  
  19.  $wyswietl = fread($wp, filesize($nazwa_pliku));
  20.  
  21.  fclose($wp);
  22.  
  23.  $wyswietl = str_replace('<<data>>', $dzis, $wyswietl);
  24.  $wyswietl = str_replace('<<sygnatura>>', $d7, $wyswietl);
  25.  $wyswietl = str_replace('<<imie>>', $d2, $wyswietl);
  26.  $wyswietl = str_replace('<<nazwisko>>', $d3, $wyswietl);
  27.  $wyswietl = str_replace('<<ulica>>', $d4, $wyswietl);
  28.  $wyswietl = str_replace('<<nr_dom_lok>>', $d5, $wyswietl);
  29.  $wyswietl = str_replace('<<miejscowosc>>', $d6, $wyswietl);
  30.  
  31.  echo $wyswietl;
  32.  tworz_stopke_html();
  33.  
  34. ?>


A mam jeszcze pytanie odnośnie headera. Czy da sie go polaczyc z funkcja require_once w tym samym pliku? Ja musialem kombinowac i rozdzielac zapis do bazy i pobieranie rtfa w 2 odzielnych plikach bo w jednym wyskakiwal błąd: headers already sent....
nospor
Ja bym tylko u ciebie zamienił:
  1. <?php
  2.  
  3. $wyswietl = str_replace('<<data>>', $dzis, $wyswietl);
  4. $wyswietl = str_replace('<<sygnatura>>', $d7, $wyswietl);
  5. $wyswietl = str_replace('<<imie>>', $d2, $wyswietl);
  6. $wyswietl = str_replace('<<nazwisko>>', $d3, $wyswietl);
  7. $wyswietl = str_replace('<<ulica>>', $d4, $wyswietl);
  8. $wyswietl = str_replace('<<nr_dom_lok>>', $d5, $wyswietl);
  9. $wyswietl = str_replace('<<miejscowosc>>', $d6, $wyswietl);
  10.  
  11. ?>

na:
  1. <?php
  2.  
  3. $search = array('<<data>>', '<<sygnatura>>', '<<imie>>', '<<nazwisko>>', '<<ulica>>', '<<nr_dom_lok>>', '<<miejscowosc>>');
  4. $replace = array($dzis, $d7, $d2, $d3, $d4, $d5, $d6);
  5. $wyswietl = str_replace($search, $replace, $wyswietl);
  6.  
  7. ?>
Zastosowanie tablic będzie bardziej efektywne.

Co do
Cytat
headers already sent
należy na początku skryptu dać ob_start(). Temat się czesto na forum przewija możesz ewentualnie jeszcze poszukać jak nadal nie będzie działało
raqu
Nie moge sobie poradzic z taką kwestią dry.gif
Mam ten pliczek pobierz_odmowe.php i wygląda on tak
  1. <?php
  2.  header('Content-Type: application/rtf');
  3.  header('Content-disposition: inline, filename=do_druku.rtf');
  4.  
  5.  $znaki=array(&#092;"ą\"=>\"ą\",\"ś\"=>\"ś\",\"Ľ\"=>\"ź\",\"ˇ\"=>\"Ą\",\"Ś\"=>\"Ś\",\"Ź\"=>\"Ź\");
  6.  
  7.  $d1 = $HTTP_POST_VARS['id'];
  8.  $d2 = strtr($HTTP_POST_VARS['imie'], $znaki);
  9.  $d3 = strtr($HTTP_POST_VARS['nazwisko'], $znaki);
  10.  $d4 = strtr($HTTP_POST_VARS['ulica'], $znaki);
  11.  $d5 = $HTTP_POST_VARS['nr_dom_lok'];
  12.  $d6 = $HTTP_POST_VARS['kod'];
  13.  $d7 = strtr($HTTP_POST_VARS['miejscowosc'], $znaki);
  14.  $d8 = $HTTP_POST_VARS['sygnatura_wniosku'];
  15.  
  16.  $dzis = date(&#092;"d.m.Y\");
  17.  
  18.  $nazwa_pliku = 'wzorzec_odmowa.rtf';
  19.  $wp = fopen($nazwa_pliku, 'r');
  20.  $wyswietl = fread($wp, filesize($nazwa_pliku));
  21.  fclose($wp);
  22.  
  23.  $search = array('<<data>>', '<<sygnatura>>', '<<imie>>', '<<nazwisko>>', '<<ulica>>', '<<nr_dom_lok>>', '<<kod>>', '<<miejscowosc>>');
  24.  $replace = array($dzis, $d8, $d2, $d3, $d4, $d5, $d6, $d7);
  25.  $wyswietl = str_replace($search, $replace, $wyswietl);
  26.  
  27.  echo $wyswietl;
  28. ?>

Problem w tym ze na jednym kompie skrypt normalnie generuje plik do_druku.rtf a na innym to nie chce dzialac. Jak klikam na formularz to mi pobiera ten wlasnie plik pobierz_odmowe.php z paskudnie sformatowanym tekstem. Może cos trzeba zmienic w ustawieniach phpa? Aha dziala na kompie z win98 a nie chce z XP ale to chyba bez roznicy, a krasnal wszedzie ten sam.
nospor
Mi paskudnie sformatwany text wyskakiwal, gdy w jakimkolwiek skrypcie przed <? i po ?> były białe znaki czyli spacje, entery itp. Gdy wyrzucasz plik do downloadu, nic poza nim nie może wyjść do przeglądarki. Głupia spacja rozwali ci wszystko.
pousuwaj więc we wszystkich skryptach które są tu używane wszystkie białe znaki z początku i końcu pliku. powinno pomóc. Pamiętaj - Wszystkie!!!.
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.