Otazníky místo diakritiky – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Otazníky místo diakritiky – PHP – Fórum – Programujte.comOtazníky místo diakritiky – PHP – Fórum – Programujte.com

 

fix0
Stálý člen
17. 9. 2018   #1
-
0
-

Ahoj, hraji si s tcpdf a ať se snažím jak chci, nedaří se mi zařídit, aby ve vygenerovaném PDF byly správně symboly jako : ěščřžýáíéĚŠČŘŽÝÁÍÉ. Beru zpět, znaky s čárkou jako ýáíé fungují, nefunguj jen s háčkem jako: ěščřž Namísto nich se zobrazují jen otazníky. Jako kdyby to písmo, které tam je přednastavené neumělo, ale ta helvetica by tam měla být.

Zkoušel jsem funkci iconv, ale podařilo se mi najít jen variantu, která to ještě zhorší.

Máte prosím pěkně pro mě nějaký typ? V příloze je, jak to vypadá. Případně dodám i kód.

Připojen obrázek.

Díky moc všem co poradíte.

Nahlásit jako SPAM
IP: 92.240.177.–
MilanL+1
Grafoman
18. 9. 2018   #2
-
0
-
Nahlásit jako SPAM
IP: 91.139.9.–
fix0
Stálý člen
18. 9. 2018   #3
-
0
-

#2 MilanL
No samozřejmě sem googlil a na stránce kterou jsi poslal jsem byl také. Otázkou je spíš jak mi ta stránka měla pomoct, pochybuji, že je nutné v shellu generovat vlastní fonty... :-)

Zde je tedy zdrojový kód:

<?php  
header("Content-Type: text/html; charset=utf-8");
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);



 function fetch_data()  
 {  
      $output = '';  
	  require('../../nastaveni.php');
      $conn = mysqli_connect($servername, $username, $password, $dbname);
      $sql = "SELECT * FROM firmy ORDER BY id ASC";  
      $result = mysqli_query($conn, $sql);  
      while($row = mysqli_fetch_array($result))  
      {       
							// <td>'.$row["id"].'</td>  
                          // <td>'.$row["firma"].'</td>  

      $output .= '<tr>  
                          
						  <td>nevím co je špatně</td>
						  <td>velký špatný</td>
						  <td>nefunguje ani iconv</td>
                     </tr>  
                          ';  
      }  
      return $output;  
 }  
 if(isset($_POST["generate_pdf"]))  
 {  
      require_once('tcpdf/tcpdf.php');  
      $obj_pdf = new TCPDF('P', PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);  
      $obj_pdf->SetCreator(PDF_CREATOR);  
      $obj_pdf->SetTitle("Generátor do PDF");  
      $obj_pdf->SetHeaderData('', '', PDF_HEADER_TITLE, PDF_HEADER_STRING);  
      $obj_pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));  
      $obj_pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));  
      $obj_pdf->SetDefaultMonospacedFont('helvetica');  
      $obj_pdf->SetFooterMargin(PDF_MARGIN_FOOTER);  
      $obj_pdf->SetMargins(PDF_MARGIN_LEFT, '10', PDF_MARGIN_RIGHT);  
      $obj_pdf->setPrintHeader(false);  
      $obj_pdf->setPrintFooter(false);  
      $obj_pdf->SetAutoPageBreak(TRUE, 10);  
      $obj_pdf->SetFont('helvetica', '', 11);  
      $obj_pdf->AddPage('L');  // na šířku
	  //$test = iconv('UTF-8', 'windows-1252', "ěščřžýá");
      $content = '';  
	  $content .= '  
      <h4 align="center">Něco na ukázku</h4><br /> 
      <table border="1" cellspacing="0" cellpadding="3">  
           <tr>  
				<th width="3%">Id</th>  
				<th width="28%">Číslo</th>  
				<th width="6%">Masíčko</th>  
				<th width="8%">Čokoláda</th>  
  
						
           </tr>  
      ';  
      $content .= fetch_data();  
      $content .= '</table>';  
      $obj_pdf->writeHTML($content);  
      $obj_pdf->Output('pdf.pdf', 'I');  
 }  
 ?>  
 <!DOCTYPE html>  
 <html>  
      <head>  
           <title>Generátor PDF</title>  
		   <meta http-equiv="content-type" content="text/html; charset=utf-8" />
           <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />            
      </head>  
      <body>  
           <br />
           <div class="container">  
                <h4 align="center">Generátor  PDF</h4><br />  
                <div class="table-responsive">  
                	<div class="col-md-12" align="right">
                     <form method="post">  
                          <input type="submit" name="" class="btn btn-danger" value="Vrátit se zpět" />  
                          <input type="submit" name="generate_pdf" class="btn btn-success" value="Generovat PDF" />  
                     </form>  
                     </div>
                     <br/>
                     <br/>
                     <table class="table table-bordered">  
                          <tr>  
				<th width="3%">Id</th>  
				<th width="28%">Číslo</th>  
				<th width="6%">Masíčko</th>  
				<th width="8%">Čokoláda</th>  
                          </tr>  
                     <?php  
                     echo fetch_data();  
                     ?>  
                     </table>  
                </div>  
           </div>  
      </body>  
</html>
Nahlásit jako SPAM
IP: 92.240.177.–
peter
~ Anonymní uživatel
4016 příspěvků
19. 9. 2018   #4
-
0
-

- php header() prepnout do utf
- sql SET NAMES prepnout na utf
- funkce pro pdf prepnout na utf
- meta tag prohlizece v podstate ignoruji, tam casto muzes napsat, co chces
A melo by se to zobrazit spravne, ne? Ve tvem kodu nevidim jediny takovy prepinac.

Nahlásit jako SPAM
IP: 2001:718:2601:258:e52d:e537:4095:51ba...–
fix0
Stálý člen
19. 9. 2018   #5
-
0
-

Naopak, všechny potřebné tebou zmíněné přepínače tam mám, nebo se pletu?:

PHP header funkce:

header("Content-Type: text/html; charset=utf-8");
 

Objekt třídy PDF má také utf:
$obj_pdf = new TCPDF('P', PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

SET NAMES sem zatím nedeklaroval, jednoduše proto, že zobrazující se chyby nemají s databází nic společného. Když si všimneš, tak všechny data co mají něco společného s MySQL jsou zakomentované. A tudíž tento přepínač je zbytečný, když s databází vůbec nepracuji?
 

Nahlásit jako SPAM
IP: 92.240.177.–
Kit+15
Guru
20. 9. 2018   #6
-
0
-

#5 fix
Proč tam máš MIME text/html, když generuješ PDF?

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:9cc7:d834:54ae:9e10...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
gna
~ Anonymní uživatel
1891 příspěvků
20. 9. 2018   #7
-
0
-

#3 fix
Problém bude pravděpodobně ve fontu, takže by ho mohlo vyřešit vygenerování fontu, který potřebné znaky zaručeně obsahuje.

Nahlásit jako SPAM
IP: 213.211.51.–
fix0
Stálý člen
20. 9. 2018   #8
-
0
-

#6 Kit
Proč tam máš MIME text/html, když generuješ PDF?

Protože sice generuji PDF ale text je html :-D Je to správně. :-P Jinak by se prohlížeč snažil ten soubor načítat jako PDF a to by se mu nepovedlo.

Problém bude pravděpodobně ve fontu, takže by ho mohlo vyřešit vygenerování fontu, který potřebné znaky zaručeně obsahuje.

Takže se tomu fakt nevyhnu jo. :-)  Divný, že neexistuje již hotový font, který umí i znaky, co potřebuji. :-)

Nahlásit jako SPAM
IP: 92.240.177.–
fix0
Stálý člen
20. 9. 2018   #9
-
0
-

Ale co třeba haluška, kde mnou přiložený kód souboru pdf.php má jako require once třídu tcpdf, která neexistuje? :-D Viz screenshot s lokací adresáře souboru, který spouštím. Nikde na serveru tu třídu tcpdf nemám, ale funguje a instance mohu vytvářet, i PDF generuje. :-D

Můžete mi to prosím zatím někdo vysvětlit, než si poradím s tím fontem? :-D

Připojen obrázek.

Nahlásit jako SPAM
IP: 92.240.177.–
fix0
Stálý člen
20. 9. 2018   #10
-
0
-

Diakritika opravena aktualizací (tedy nahráním tcpd), protože na serveru vůbec záhadně nebyla. Hustá to anomálie. A dal jsem font DeJaVu a už to zdá se šlape jak se patří. Díky všem.

Ale klidně mi fakt dejte vědět, jak je možné, že mi doteď ta třída fungovala, přestože sem na na serveru ve svém kořeni nahranou neměl...

Nahlásit jako SPAM
IP: 92.240.177.–
Kit+15
Guru
20. 9. 2018   #11
-
0
-

#10 fix
Ta třída byla nejpíš součástí nějakých knihoven PHP, které se nachází v jiném adresáři. Nenahával jsi to náhodou pomocí Composeru?

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:148e:1715:e23f:8918...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 51 hostů

Podobná vlákna

? místo diakritiky — založil A

Odstránenie diakritiky — založil muhahaha

Odstranění diakritiky — založil gengar

Odhalení diakritiky — založil gruv

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý