Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] tworzenie pdf-a tcpdf
Swirek
post 26.08.2011, 17:48:15
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


--------------------
Macho odpadacie ;) .
Go to the top of the page
+Quote Post
CuteOne
post 26.08.2011, 18:14:51
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 26.08.2011, 19:00:14
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 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

Ten post edytował Swirek 26.08.2011, 20:18:38


--------------------
Macho odpadacie ;) .
Go to the top of the page
+Quote Post
CuteOne
post 26.08.2011, 21:11:17
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 15.01.2013, 21:09:50
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
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.04.2025 - 10:25