Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] tworzenie pdf-a tcpdf
Forum PHP.pl > Forum > Przedszkole
Swirek
Witam

mam problem z tworzeniem pdf-a
generuje sobie stronę i chce zapisać ją do pdf-u za pomocą ob_get_contents.

Przy prostym tekście i prostej tabelce plik się generuje ale w kodzie gdy podglądam pdf-a widać znaczniki html-a

mój kod

  1. <?ob_start();?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  5. <style type="text/css">
  6. .import1_table {...
  7. }
  8. .import2_table {...
  9. }
  10. .import2_table td {...
  11. }
  12. </style>
  13.  
  14. </head>
  15. <?
  16.  
  17. require_once('tcpdf/config/lang/pol.php');
  18. require_once('tcpdf/tcpdf.php');
  19.  
  20.  
  21. $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
  22.  
  23.  
  24. $pdf->SetCreator(PDF_CREATOR);
  25. $pdf->SetAuthor('...');
  26. $pdf->SetTitle('...i');
  27. $pdf->SetSubject('Dokument');
  28. $pdf->SetKeywords('TCPDF, PDF');
  29.  
  30. $pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 006', PDF_HEADER_STRING);
  31.  
  32. $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
  33. $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
  34.  
  35. $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
  36.  
  37. $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
  38. $pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
  39. $pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
  40.  
  41. $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
  42.  
  43. $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
  44.  
  45. $pdf->setLanguageArray($l);
  46.  
  47.  
  48. listawysylkowa($_GET["id"]);
  49.  
  50. ///////////////////////////////////////
  51.  
  52. function listawysylkowa($id)
  53. {
  54.  
  55. $wybierz_transakcje = mysql_query("select * from transakcje where lista_id=".$id);
  56. $i=1;
  57.  
  58. while($wybierz_transakcje2=mysql_fetch_array($wybierz_transakcje))
  59. {
  60. ?>
  61.  
  62. <table class="import1_table">
  63. <tr>
  64. <td><?=$i?></td>
  65. </tr>
  66. </table>
  67.  
  68. <table class="import2_table" cellspacing="0" cellpadding="0">
  69. <tr>
  70. <td colspan="2" style="text-align: right;">Koszty wysyłki:</td>
  71. <td style="text-align: right;"><?=$wybierz_transakcje2["transport"]?> zł</td>
  72. </tr>
  73. <tr style="background-color: #F0F0F0;">
  74. <td colspan="2" style="text-align: right; padding: 8px 0;">Suma do zapłaty (uwzględnia cenę przedmiotów, koszty wysyłki, ew. rabaty):</td>
  75. <td style="text-align: right;"><?=round($razemcena+$wybierz_transakcje2["transport"],2);?></td>
  76. </tr>
  77. <tr>
  78. <td colspan="3"></td>
  79. </tr>
  80. </table>
  81.  
  82. <br style="clear: both;"/>
  83.  
  84. <?
  85. $i++;
  86. $razemcena=0;
  87. }
  88. }
  89.  
  90. $html = ob_get_contents();
  91.  
  92. $pdf->writeHTML($html, true, false, true, false, '');
  93.  
  94. $pdf->lastPage();
  95.  
  96. $pdf->Output('/pdf/plik.pdf', 'D');
  97.  


mocno go odchodziłem żeby nie zaśmiecać forum. Wszystkie parametry z bazy są pobierane prawidłowo tylko nie wrzucałem już zapytań tu na forum.
Do sedna. Generując w ten sposób plik zapisuję do siebie na komputer, ale po uruchomieniu dostaje komunikat, że nieobsługiwany typ pliku lub plik jest uszkodzony. Wszystkie pliki nmam zapisane w kodowaniu UTF-8 bez BOM.

W czym może tkwić problem?

z góry dziękuję za wszystkie wskazówki.
CuteOne
Prosty przykład

pobierz.php - tu będzie załadowana biblioteka tcpdf

  1. // wszystkie konfiguracje tcpdf'a
  2.  
  3. $content = file_get_contents('http: // localhost / pokaz.php');
  4.  
  5. $pdf->writeHTML($content, true, false, true, false, '');
  6. $pdf->lastPage();
  7. $pdf->Output('/pdf/plik.pdf', 'D');


pokaz.php
  1. <?php
  2. echo "AAA";
  3. ?>
  4. <html><head> itd.
  5. </html>
Swirek
dziękuję za odpowiedź jednak jest problem.

plik do drukowania jest generowany dynamicznie na podstawie danych pobranych z bazy.

Za pomocą tej funkcji chyba tego nie uda mi się zrobić bo plik się nie wykona dobrze myślę?

edit. momencik coś wychodzi wink.gif

edit 2. jak wyrzucam echo parametr content to wyrzuca mi stronkę bez wykonanego kodu

ok sam rozwiązałem problem, wpadł mi do głowy pomysł z wykorzystaniem curla i się udało wink.gif
teraz dostosować plik
CuteOne
  1. $content = file_get_contents('http: // www. domena .pl / pokaz.php?id=1');


a post curlem lub przez plik/baze
kda
Witam,

Potrzebuję pomocy w uruchomieniu tego skryptu do tworzenia PDF za pomocą "tcpdf"
W katalogu PDF mam katalog tcpdf a w nim to co sciągnąlem z sieci,oraz dwa pliki tekst.html, test1.php.
Wywołując w przeglądarce plik test1.php otrzymuję taki komunikat:
TCPDF ERROR: Wrong page number on setPage() function: 0
Gdzie mam błąd, dodam że podchodzę do tematu tworzenia PDF za pomocą php po raz pierwszy więc proszę o wyrozumiałość.


Plik test1.php
  1. <?
  2. require_once('tcpdf/config/lang/pol.php');
  3. require_once('tcpdf/tcpdf.php');
  4.  
  5. $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
  6.  
  7.  
  8. $pdf->SetCreator(PDF_CREATOR);
  9. $pdf->SetAuthor('...');
  10. $pdf->SetTitle('...i');
  11. $pdf->SetSubject('Dokument');
  12. $pdf->SetKeywords('TCPDF, PDF');
  13.  
  14. $pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 006', PDF_HEADER_STRING);
  15.  
  16. $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
  17. $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
  18.  
  19. $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
  20.  
  21. $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
  22. $pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
  23. $pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
  24.  
  25. $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
  26.  
  27. $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
  28.  
  29. $pdf->setLanguageArray($l);
  30.  
  31. $content = file_get_contents('tekst.html');//strona którą mam zapisać do PDFa
  32.  
  33. $pdf->writeHTML($content, true, false, true, false, '');
  34. $pdf->lastPage();
  35. $pdf->Output('/pdf/plik.pdf', 'D');
  36. ?>

Plik tekst.html
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
  2. "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" >
  4.  
  5. Jakiś tekst do testów żźćłąśłęó.
  6. </head>
  7. </html>


A może ktoś mi podsunie jakieś inne rozwiązanie. Chodzi mi o opcję gdy kliknę w np. link otwiera się strona która z automatu umożliwia pobranie jej zawartości i zapisanie pliku PDF.
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.