Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][MySQL][PHP]Zmiana formatu pliku wynikowego
Forum PHP.pl > Forum > Przedszkole
eurosoft
Witam wszystkich, na wstępie przepraszam za pytanie (pewnie prozaiczne) ale nie wiem jak to potraktować....
Mam następujący problem:
posiadam skrypt php który generuje mi pewien raport w którym są m.in. tabelki i inne opisy. W skrypcie są odwołania do MySQL oraz znaczniki html. Wszystko działa,
ładnie się wypełnia (wypełniane dane zależne sa od adresu url w którym przekazuję interesujące mnie zmienne), chciałem aby user mógł wydrukować / zapisać wynik do
pliku pdf, natrafiłem na bibliotekę DOMPDF, ale ona wymaga podania pliku HTML, i tu pojawił się problem....
jak z mojego pliku php już uzupełnionego moimi danych stworzyć plik html.

dziękuje ze podpowiedź i prosze o wyrozumiałość za treść pytania.
Pozdrawiam
maniana
W dokumentacji DOMPDF masz podaną opcję load_html_file więc musisz podać adres URL pliku z parametrami.
Jeśli chcesz podać html jako zmienną to możesz wczytać plik za pomocą file_get_contents
Możesz też wygenerować plik odrazu do zmiennej:
  1. // tu generacja dokumentu
  2. $wynik= ob_get_contents();
eurosoft
Więc tak:
mam plik drukuj.php
  1. <?php
  2. require_once("dompdf_config.inc.php");
  3. $dompdf = new DOMPDF();
  4. $dompdf->load_html_file("questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif?");
  5. $dompdf->render();
  6. $dompdf->stream("hello.pdf");
  7. ?>

więc w miejscu questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif powinienem podać adres do mojego php-a
a adres skryptu jaki chciałbym przekonwertować do pdf to:
http://xxx.pl/yyy/kartaewidencyjna.php?a=v...imie_nazwisko=a

nie rozumiem do końca jak wygenerować odrazu lik do zmiennej.
maniana
Do pliku drukuj przesyłasz te same zmienne getem a w miejscu podawania pliku wpisujesz URL (z http://) przedrukowywujesz zmienne z $_GET do urla.
  1. $dompdf->load_html_file('http://xxx.pl/yyy/kartaewidencyjna.php?a='.$_GET['a'].'&imie_nazwisko='.$_GET['imie_nazwisko']);
eurosoft
zrobiłem wg wskazówek mem teraz taką postać pliku drukuj.php

  1. <?php
  2. $a = trim($_GET['a']);
  3. $imie_nazwisko = trim($_GET[imie_nazwisko]);
  4.  
  5. require_once("dompdf_config.inc.php");
  6. $dompdf = new DOMPDF();
  7. $dompdf->set_paper('letter','landscape');
  8. $dompdf->load_html_file('http://www.xxx.pl/yyy/zzz/kartaewidencyjna.php?a='.$_GET['a'].'&imie_nazwisko='.$_GET['imie_nazwisko']);
  9. $dompdf->render();
  10. $dompdf->stream("hello.pdf");
  11. ?>


  1. link którym odwołuję się do pliku drukuj to:
  2. echo "<td width=40 align=center><a href=\"drukuj.php?a=view&amp;imie_nazwisko={$r[login]}\"><img src=img/ikony/drukuj.png title=Drukuj style=width:16px;height:16px;border:0px; /></a></td>";


Masz może jeszcze jakis pomysł jak to zrobić?
maniana
Mi działa ok. Tylko w konfigu należy zmienić linijkę:
  1. def("DOMPDF_ENABLE_REMOTE", true);
Jakieś błędy są widoczne?
eurosoft
Miałem na false, zmieniłem ale bez efektów,
więc jeszcze raz:
mam katalog np 1 w nim katalog dompdf w nim jest plik drukuj.php i kartaewidencyjna.php (piszę to bo może ścieżki mam skopane)
drukuj.php
  1. <?php
  2.  
  3. $a = trim($_GET['a']);
  4. $imie_nazwisko = trim($_GET[imie_nazwisko]);
  5.  
  6. require_once("dompdf_config.inc.php");
  7. $dompdf = new DOMPDF();
  8. //$dompdf->set_paper('A4','landscape');
  9. $dompdf->load_html_file('kartaewidencyjna.php?a='.$_GET['a'].'&imie_nazwisko='.$_GET['imie_nazwisko']);
  10. //$dompdf->load_html_file('indexx.html');
  11. $dompdf->render();
  12. $dompdf->stream("dokument.pdf");
  13. ?>


w katalogu 1 mam plik users.php w nim jest tabelka z kolejnymi rekordami pisanymi przez MySQL
w tabelce jest kolumna z linkiem
<td width=40 align=center><a href=\"dompdf/drukuj.php?a=view&amp;imie_nazwisko={$r[login]}\"><img src=img/ikony/drukuj.png title=Drukuj style=width:16px;height:16px;border:0px; /></a></td>

wynik: "Witryna sieci web nie może..."

trochę truję ale czuję się już bezsilny.....

aha! jeszcze jedno, jak zmienię w pliku drukuj.php na $dompdf->load_html_file('indexx.html'); to otwiera mi się plik pdf exclamation.gif
maniana
Adres pliku podany w load_html_file musi być adresem URL czyli http://... Czyli pełen adres na lokalu czy serwerze. Musi też poprawnie otwierac sie w przeglądarce.
eurosoft
Tak, tak to wynik moich kombinacji
mam taki link:
$dompdf->load_html_file('http://www.xxx.pl/robocza/low/kartaewidencyjna.php?a='.$_GET['a'].'&imie_nazwisko='.$_GET['imie_nazwisko']);

otwiera się w przeglądarce poprawnie................:-(

Cytat(eurosoft @ 12.04.2012, 15:32:17 ) *
Tak, tak to wynik moich kombinacji
mam taki link:
$dompdf->load_html_file('http://www.xxx.pl/robocza/low/kartaewidencyjna.php?a='.$_GET['a'].'&imie_nazwisko='.$_GET['imie_nazwisko']);

otwiera się w przeglądarce poprawnie................:-(



teraz sprawdziłem jeszcze w setup-ie i przy opcji DOMPDF_ENABLE_REMOTE mam true, ale jednak pokazuje mi na czerwono: allow_url_fopen disabled
maniana
allow_url_fopen oznacza ustawienie na serwerze (php.ini), zabrania otwierania plików z zewnątrz...

Zobacz tak:
  1. $a = trim($_GET['a']);
  2. $imie_nazwisko = trim($_GET['imie_nazwisko']);
  3.  
  4. include 'kartaewidencyjna.php';
  5. $wynik = ob_get_contents();
  6.  
  7. require_once("dompdf_config.inc.php");
  8. $dompdf = new DOMPDF();
  9. $dompdf->load_html($wynik);
  10. $dompdf->render();
  11. $dompdf->stream("dokument.pdf");
Upewnij się, że zmienne $a i $imie_nazwisko są widoczne w kartaewidencyjna.php
eurosoft
OK Hurrrrrrrrrrrrrrrra!! narazie mam pdfa, a masz (pewnie tak) złoty środek na polskie znaki?
maniana
DOMPDF powinien mieć przekonwertowane fonty z polskimi znakami. Zobacz czy dokument html jest w tym samym kodowaniu co zadeklarowane w konfigu.
eurosoft
nie bardzo wiem w jakiej sekcji tego szukać, w każdym razie dokument mam w ISO-8859-2
a w setupie mam coś takiego: DOMPDF_DEFAULT_FONT 'serif'
Jeśli to nie to to prosze podaj sekcję jakiej mam szukać
maniana
W konfigu domyślnie jest:
Cytat
mb_internal_encoding('UTF-8');
Zmień to, ew. przetestuj dokument w UTF.
eurosoft
niestety nie podziałało, zarówno zmiana kodowania strony i zmiana w configu i odwrotnie.....
maniana
W takim razie pozostaje przeszukanie googla lub przekonwertowanie własnych fontów.
Zobacz tu: http://forum.php.pl/index.php?showtopic=67663 lub tu: http://bukox.pl/php/dompdf-i-polskie-znakie/
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.