Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] tworzenie pdf-a tcpdf
Swirek
post
Post #1





Grupa: Zarejestrowani
Postów: 221
Pomógł: 20
Dołączył: 4.05.2006
Skąd: Polska

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Swirek 26.08.2011, 17:53:04
Go to the top of the page
+Quote Post
CuteOne
post
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


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>


Ten post edytował CuteOne 26.08.2011, 18:16:09
Go to the top of the page
+Quote Post
Swirek
post
Post #3





Grupa: Zarejestrowani
Postów: 221
Pomógł: 20
Dołączył: 4.05.2006
Skąd: Polska

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/wink.gif)
teraz dostosować plik

Ten post edytował Swirek 26.08.2011, 20:18:38
Go to the top of the page
+Quote Post
CuteOne
post
Post #4





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


  1. $content = file_get_contents('http: // www. domena .pl / pokaz.php?id=1');


a post curlem lub przez plik/baze

Ten post edytował CuteOne 26.08.2011, 21:11:51
Go to the top of the page
+Quote Post
kda
post
Post #5





Grupa: Zarejestrowani
Postów: 75
Pomógł: 2
Dołączył: 29.07.2009

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 14:49