Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] jak dodać nagłówek i stopkę do pliku pdf i zapisać go pod tą samą nazwą
Forum PHP.pl > Forum > Przedszkole
jan85
Witam dopiero zaczynam uczyć się php potrzebuje coś co by zautomatyzowało dodanie nagłówka i stopki do kilku tysięcy plików. do których ścieżki byly by w jakimś pliku tekstowym. Znalazłem poniższy kod zastanawiam się jak go przerobić aby przetwarzał
całą listę plików pdf. Proszę o pomoc jakieś wskazówki cokolwiek.

  1.  
  2. <?
  3.  
  4. /* Ładujemy klasy fpdf i fpdi */
  5. require_once(?includes/fpdf/fpdi.php?);
  6.  
  7. /* Ustalamy domyślny folder czcionek */
  8. define(?FPDF_FONTPATH?,'fpdf/font/?);
  9. $FPDF_FONTPATH=?fpdf/font/?;
  10.  
  11. //Jak zrobić żeby pobieral osobno nazwy plików z wcześniej przygotowanej listy
  12. // w której każda linijka jest kompletną
  13. //ścieżką do pliku
  14. $pdf =& new FPDI();
  15.  
  16. /* Ustalamy źródłowy plik PDF do którego dodamy stopkę w postaci tekstu i nagłówek w postaci pliku jpg */
  17. $pagecount = $pdf->setSourceFile(?edytowanypdf.pdf?);
  18. $tplidx = $pdf->importPage(1, ?/MediaBox?);
  19.  
  20. $pdf->addPage();
  21. $pdf->useTemplate($tplidx);
  22. $wymiary = $pdf->getTemplateSize($tplidx);
  23.  
  24. /* Podajemy nazwę pliku JPG wpisując jego położenie (x,y) oraz wymiary (x,y) */
  25. $pdf->Image(?logo.jpg?,180,10,20,15);
  26.  
  27. //Polskie znaki w czcionce mamy ustalone - wybieramy czcionkę o rozmiarze 9
  28. $pdf->AddFont(?arialpl?,?,?arialpl.php?);
  29.  
  30. $pdf->SetFont(?arial?,?,9);
  31.  
  32. $pdf->Text(10, 271, ?tu bedzie stopka?);
  33. $pdf->SetFont(?arial?,?,9);
  34.  
  35.  
  36. // jak zapisać każdy z tych plików tam gdzie był i pod tą sama nazwą
  37. /* zapisujemy plik */
  38. $pdf->Output(?plikwynikowy.pdf?, ?F?);
  39.  
  40. ?>
Kshyhoo
Niech zgadnę, może w pętli?

EDIT:
1. Przeczytaj regulamin Forum i się do niego zastosuj.
2. Czytaj mój podpis poniżej...
Daiquiri
Proszę dodać BBCode, w innym przypadku zamknę temat.
jan85
w porządku a jaką Byś wybrał pentle
co Sądzisz o przejściu za pomocą foreach przez plik z linkami a potem użyciu np explode - czy się tam przyda?

orginal z opisem do testów jest na
http://architekt.unistyle.pl/index.php/fpd...omoca-php/2008/

  1. <?
  2.  
  3. /* Ladujemy klasy fpdf i fpdi */
  4. require_once('includes/fpdf/fpdi.php');
  5.  
  6. /* Ustalamy domyslny folder czcionek */
  7. define('FPDF_FONTPATH','fpdf/font/');
  8. $FPDF_FONTPATH="fpdf/font/";
  9.  
  10. //Jak zrobić żeby pobieral osobno nazwy plików z wczesniej przygotowanej listy
  11. // w której kazda linijka jest kompletna
  12. //sciezki do pliku
  13. $arraylines = file('/var/www/lista.txt');
  14.  
  15. $pdf =& new FPDI();
  16.  
  17. foreach($arraylines as $value)
  18. {
  19. /* Ustalamy zrodlowy plik PDF do ktorego dodamy stopke w postaci tekstu i naglowek w postaci pliku jpg */
  20. $pagecount = $pdf->setSourceFile("$value");
  21. //$pagecount = $pdf->setSourceFile("edytowanypdf.pdf");
  22. $tplidx = $pdf->importPage(1, '/MediaBox');
  23.  
  24. $pdf->addPage();
  25. $pdf->useTemplate($tplidx);
  26. $wymiary = $pdf->getTemplateSize($tplidx);
  27.  
  28. /* Podajemy nazwę pliku JPG wpisujac jego polozenie (x,y) oraz wymiary (x,y) */
  29. $pdf->Image("logo.jpg",180,10,20,15);
  30.  
  31. //Polskie znaki w czcionce mamy ustalone - wybieramy czcionke o rozmiarze 9
  32. $pdf->AddFont('arialpl',",'arialpl.php');
  33.  
  34. $pdf->SetFont('arial',",9);
  35.  
  36. $pdf->Text(10, 271, "tu bedzie stopka");
  37. $pdf->SetFont('arial',",9);
  38. $pdf->Output($value, 'F');
  39. }
  40. ?>


Wyświetla błąd
unexpected $end w 44 linijce (ale mam wszystkie klamerki zamknięte) proszę o pomoc
nospor
pętla

Klamerki masz zamknięte, ale nie masz zamkniętych cudzysłowi. Nawet kolorowanie w poście juz to pokazuje

nie: $pdf->AddFont('arialpl',",'arialpl.php');
a: $pdf->AddFont('arialpl',"",'arialpl.php');

nie: $pdf->SetFont('arial',",9);
a: $pdf->SetFont('arial',"",9);
jan85
Dziękuję ale pojawił się jeszcze jeden problem (wyświetla się poniższy komunikat mimo iż plik znajduje się tam gdzie trzeba i ma odpowiednie uprawnienia

Warning: require_once(includes/fpdf/fpdi.php) [function.require-once]: failed to open stream: No such file or directory in /var/www/fpdf/gen.php on line 4

Fatal error: require_once() [function.require]: Failed opening required 'includes/fpdf/fpdi.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/fpdf/gen.php on line 4

  1. <?
  2.  
  3. /* Ladujemy klasy fpdf i fpdi */
  4. require_once("includes/fpdf/fpdi.php");
  5.  
  6. /* Ustalamy domyslny folder czcionek */
  7. define('FPDF_FONTPATH','fpdf/font/');
  8. $FPDF_FONTPATH="fpdf/font/";
  9.  
  10. //Jak zrobić żeby pobieral osobno nazwy plików z wczesniej przygotowanej listy
  11. // w której kazda linijka jest kompletna
  12. //sciezki do pliku
  13. $arraylines = file('/var/www/lista.txt');
  14.  
  15. $pdf =& new FPDI();
  16.  
  17. foreach($arraylines as $value)
  18. {
  19. /* Ustalamy zrodlowy plik PDF do ktorego dodamy stopke w postaci tekstu i naglowek w postaci pliku jpg */
  20. $pagecount = $pdf->setSourceFile("$value");
  21. //$pagecount = $pdf->setSourceFile("edytowanypdf.pdf");
  22. $tplidx = $pdf->importPage(1, '/MediaBox');
  23.  
  24. $pdf->addPage();
  25. $pdf->useTemplate($tplidx);
  26. $wymiary = $pdf->getTemplateSize($tplidx);
  27.  
  28. /* Podajemy nazwę pliku JPG wpisujac jego polozenie (x,y) oraz wymiary (x,y) */
  29. $pdf->Image("logo.jpg",180,10,20,15);
  30.  
  31. //Polskie znaki w czcionce mamy ustalone - wybieramy czcionke o rozmiarze 9
  32. $pdf->AddFont('arialpl',"",'arialpl.php');
  33.  
  34. $pdf->SetFont('arial',"",9);
  35.  
  36. $pdf->Text(10, 271, "tu bedzie stopka");
  37. $pdf->SetFont('arial',"",9);
  38. $pdf->Output($value, 'F');
  39. }
  40. ?>
8_pasazer_NOSTROMO
Podepnę się pod temat bo mam problem ze stopką. Mam oto taki kod PHP przy tworzeniu PDF.
Problem polega na tym że stopka w PDF który powstaje nie zawiera tresci zmiennych $_kto, $_ip mimo iż one istnieją na 100%. (Dokument wygenerowany elektronicznie przez : , IP : ) - tak mi drukuje.
Co zrobic by w stopce zawarte mogły być zmienne php. Gdy wpisze na sztywno to działa.


  1. $_kto="Czterej Panceni i Pies";
  2. $_ip="10.2.80.12";
  3.  
  4. ########################################### PDF
  5. define('FPDF_FONTPATH','../../../font/'); //definiuje katalog z czcionkami komponentu
  6. require_once "../../../fpdf.php"; //odniesienie do skryptu komponentu
  7. class PDF extends FPDF
  8. {
  9.  
  10. // stopka
  11. function Footer()
  12. {
  13. $this->SetY(-10); //Position at 1.5 cm od końca str
  14. $this->SetFont('arial_pl','',5); //Arial 8
  15. $this->Cell(190,0,"Dokument wygenerowany elektronicznie przez : $_kto, IP : $_ip",0,0,'C');
  16. $this->SetY(-10); //Pozycja 1 cm od końca str
  17. $this->SetFont('arial_pl','',8); //Arial 8
  18. $this->Cell(190,0,'str '.$this->PageNo().'/{nb}',0,0,'R'); //Numer strony
  19. }
  20.  
  21. function Nag_tab()
  22. {
  23. $this->AddPage('P','A4');
  24. $this->SetFont('arial_pl','', 10);
  25. }
  26. } //koniec klasy
  27.  
  28. $pdf=new PDF();
  29. $pdf->Open(); //otwiera nowy dokument
  30. $pdf->AliasNbPages();
  31. $pdf->AddPage(); //dodaje nową stronę do dokumentu
  32. $pdf->AddFont('arial_pl','','arial_pl.php'); //dodaje swoją czcionkę arial_pl do dokumentu
  33. $pdf->SetMargins(15,15,15); //Margines lewy,gora,prawy
  34. $pdf->SetAutoPageBreak('auto',10);
  35. $pdf->SetFillColor(255,255,255); // kolor tła, BIAŁY


Poprawiłem
nospor
Przecież wiadać jak wół, że zmienne $_kto, $_ip nie istnieją.... to, że ty je gdzieś tam tworzysz gdzieś indziej, 300 km dalej, to fakt, one tam istnieją, ale nie istnieją tu....

Albo je przekazuj do funkcji jako parametry, albo poczytaj o zasiegu zmiennych.
8_pasazer_NOSTROMO
@ nospor

Poprawiłem, wiec zmienne są. A powiedz mi jak wstawić zmienne jako parametr do funkcji, bo nie wiem. Ty wiesz to mi powiedz. Ja też bede wiedział.
nospor
Manual -> funkcje
Tam masz wszystko wyjaśnione

Cytat
Poprawiłem, wiec zmienne są
Są, dopiero jak poprawiłeś. Wcześniej w kodzie nie było smile.gif Co nie zmienia faktu, ze dla funkcji są nadal nie widoczne. Już ci napisałem co masz zrobić.
8_pasazer_NOSTROMO
@ nospor
A mozesz mi podać linka bo szukam i szukam i naprwdę nie wiem gdzie to znaleść.

  1. function Footer()
  2. {
  3. $this->$_kto;
  4. $this->$_ip;
  5. ...
  6. }


nie działa

  1. function Footer($_kto,$_ip)
  2. {
  3. $this->$_kto;
  4. $this->$_ip;
  5. ...
  6. }


nie działa

Opadam z sił. Proszę powiedz, bo kliknę w opcje (NIE POMÓGŁ (a wiedział)) jak dostawisz taką.
nospor
Cytat
bo kliknę w opcje (NIE POMÓGŁ (a wiedział)) jak dostawisz taką.

Weź ty mnie tak nie strasz bo po nocach spac nie będę mógł....

Po grzyba ci te $this? Masz przekazać do funkcjie a nie do obiekttu.
Napisalem wyraźnie: manual-> funkcje
a nie : manual -> klasy i obiekty

http://pl1.php.net/manual/pl/functions.arguments.php
8_pasazer_NOSTROMO
Udało się. Podaje rozwiazanie dla potomnych.
Przypominam zagadnienie.

Użycie zmiennych w stopce FPDF.


  1. $_kto = "Czterej Pancerni";
  2. $_ip = "10.2.80.11";
  3.  
  4.  
  5. ########################################### PDF
  6. define('FPDF_FONTPATH','../../../font/'); //definiuje katalog z czcionkami komponentu
  7. require_once "../../../fpdf.php"; //odniesienie do skryptu komponentu
  8. class PDF extends FPDF
  9. {
  10. var $zalogowany;
  11. var $ipek;
  12. function changeName($_kto, $_ip)
  13. {
  14. $this->zalogowany = $_kto;
  15. $this->ipek = $_ip;
  16. }
  17.  
  18. // stopka
  19. function Footer()
  20. {
  21. $this->SetY(-9); //Position at 1.5 cm od końca str
  22. $this->SetFont('arial_pl','',5); //Arial 8
  23. $this->Cell(190,0,'Dokument wygenerowany elektronicznie przez : '.$this->zalogowany.', IP : '.$this->ipek.'', 0, 0, 'C');
  24. $this->SetY(-10); //Pozycja 1 cm od końca str
  25. $this->SetFont('arial_pl','',8); //Arial 8
  26. $this->Cell(190,0,'str '.$this->PageNo().'/{nb}',0,0,'R'); //Numer strony
  27. }
  28.  
  29. function Nag_tab()
  30. {
  31. $this->AddPage('P','A4');
  32. $this->SetFont('arial_pl','', 10);
  33. }
  34. } //koniec klasy
  35.  
  36. $pdf=new PDF();
  37. $pdf->Open(); //otwiera nowy dokument
  38. $pdf->changeName($_kto, $_ip);
  39. $pdf->AliasNbPages();
  40. $pdf->AddPage(); //dodaje nową stronę do dokumentu
  41. $pdf->AddFont('arial_pl','','arial_pl.php'); //dodaje swoją czcionkę arial_pl do dokumentu
  42. $pdf->SetMargins(15,15,15); //Margines lewy,gora,prawy
  43. $pdf->SetAutoPageBreak('auto',10);
  44. $pdf->SetFillColor(255,255,255); // kolor tła, BIAŁY
  45.  


Nospor - nie pomógł. Klikam :-)

@ nospor
Ustaw sobie żeby Ci 10 pomógł = 1. Bo masz więcej punktów niż trzech pierwszych skoczków pucharu świata, punktów w klasyfikacji generalnej.

@ nospor

Nie gniewaj się, przecież wiesz że Cie lubie. Tylko Ty odpisujesz na moje wątki. Pomogłeś ale nie klikam bo masz za dużo. Masz monopol masz jak Kilkujadek na Kingsajz.

A tak przy okazji mógłbyś mi jeszcze wyczyścić te ostrzeżenia, bo już mają 3 lata niemal i gniją aż śmierdzi.
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.