This question already has answers here:
TCPDF UTF-8 symbols not showing up
(16 answers)
utf8_encode function purpose
(4 answers)
Closed 1 year ago.
I cannot see German characters correctly in the generated pdf. Here is my code:
<?php
// Load autoloader (using Composer)
require __DIR__ . '/vendor/autoload.php';
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf->SetPrintHeader(false);
$pdf->AddPage();
// create some HTML content
$html = '<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
Die angeführten Preise sind Fixpreise für eine schlüsselfertige Ausführung gemäß Leistungsbeschreibung und Ausstattungsliste
und gelten bei einem Vertragsabschluss bis 31.12.2021.<br/>
Die m²-Angaben sind Cirka-Maße. Geringfügige Abweichungen sind möglich und auf Grundrissvarianten oder technische
Änderungen, behördliche Vorschriften etc. zurückzuführen.<br/>
In den oben genannten Preisen sind sämtliche in vorliegender Preisliste angeführten Kaufnebenkosten (mit Ausnahme der
Beglaubigungskosten und Barauslagen im Zusammenhang mit der Eintragung im Grundbuch) enthalten, der Verkauf erfolgt
provisionsfrei direkt vom Bauträger. Kosten im Zusammenhang mit der Finanzierung (insbesondere auch Kosten für die
Bankgarantie) sind von der Käuferseite zu tragen.
</body>
</html>';
$pdf->writeHTML(utf8_encode($html), true, false, true, false, '');
$pdf->lastPage();
$lastPage = $pdf->getPage();
$pdf->Output('generated.pdf', 'I');
And that's how it looks:
Looks all good on html though
just changed
$pdf->writeHTML(utf8_encode($html), true, false, true, false, '');
to
$pdf->writeHTML(($html), true, false, true, false, '');
and it worked!
You need to change the constructor, Set UTF-8 false and change new charset like below:
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, false, 'ISO-8859-1', false)
In above example, I set encoding ISO-8859-1 instead of UTF-8 and I change true to false.
header('Content-type: text/html; charset=utf-8');
in addition to be really sure the browser understands, add a meta-tag:
Related
I am trying to create a pdf in the Tamil language, but I am experiencing font rendering issues. When I use the Baamini font, it works, but there is no English font in Baamini, so I tried other fonts such as latha.ttf, notosans.ttf, azaghi.ttf, and others, but these fonts do not work in tcpdf or fpdf. Please assist us in resolving this, and thank you in advance!
<?php
header('Content-type: text/html; charset=UTF-8') ;//chrome
require_once('tcpdf_include.php');
// create new PDF document
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf->setFontSubsetting(true);
$pdf->SetFont('freeserif', '', 12);
$pdf->AddPage();
$utf8text = '<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> </head> <body> <p>தினமும் உங்களை இந்த தோட்டத்து வழியாக செல்லும்போது என்னை கவனிப்பீர்களா என்று திரும்பி திரும்பி பார்த்து செல்வேன். ஆனால் நீங்களோ வெறி பிடித்தது போல் மண்ணை கொத்தி கொண்டிருப்பீர்கள்.</p></body></html>';
$pdf->writeHTML($utf8text, true, 0, true, true);
$pdf->Output('example_067.pdf', 'I');
?>
My Output is
I need add to pdf different symbols, but sometime it get wrong result like this:
Original text is 'Sorry für die Stille'
How can I solve this?
Font settings:
$pdf = new TCPDF('L', PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf->SetFont (PDF_FONT_NAME_MAIN, '', 9 , '', 'default', true );
I read data from csv file. And wrote it to string and now need to classify those data.
if (($handle = fopen($_FILES['app_bundle_upload_type']['tmp_name']['file'], "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
$row++;
for ($c=0; $c < $num; $c++) {
$result.= $data[$c] . "<br />\n";
}
}
}
How Can I correctly use Regex to group this sort od data. I do care about everything inside " ". I tried regex = '/"(.*?)"/s'; But can't escape double quotes inside other quotes. What shall I do ? And ofc there's this whole html data which I do not have right now what to do.
That is my string
1;"admin_loginIncorrect";"Podane hasło jest nieprawidłowe";"1";"0"
2;"admin_logOut";"Wyloguj";"1";"0"
3786;"tutorial_text_3";"Wenn Sie
ein Produkt kaufen möchten dessen Preis Sie soeben aufgedeckt haben
tun Sie es schnell und klicken Sie auf ""kaufen"" - Sie haben dafür
20 Sekunden. Sie können aber eine Stunde oder einen Tag warten um zu
sehen ob der Preis noch weiter fällt. Das Aufdecken des Preises von
anderen Benutzern reduziert den Preis kontinuierlich weiter. Denken
Sie jedoch daran dass wenn Sie zu lange warten jemand wird schneller
sein als Sie!. ;5";"0" 3914;"auction_desc_22297";"MacBook 12" 256GB - Space Gray256 GB pamięci masowej flash z magistralą PCIe
na płycie głównejDwurdzeniowy procesorIntel Core
m3 1,1 GHzTurbo Boost do 2,2 GHz8 GB pamięci
RAMIntel HD Graphics 515Zawartość
opakowaniaMacBookZasilacz USB-C o mocy 29 WPrzewód zasilający USB-C (2 m)Cena zawiera koszt przesyłki."'"5";"0"
#EDIT
I started in wrong way. Using regex was to complex task. Thanks to fgetcsv i could do it a lot easier
if (($handle = fopen($fileName, "r")) !== FALSE) {
while (($data = fgetcsv($handle)) !== FALSE) { .... }}
It reads row by row and give it back in array
$data[$i]
Try this:
<?php
$string = '1;"admin_loginIncorrect";"Podane hasło jest nieprawidłowe";"1";"0" 2;"admin_logOut";"Wyloguj";"1";"0" 3786;"tutorial_text_3";"Wenn Sie ein Produkt kaufen möchten dessen Preis Sie soeben aufgedeckt haben tun Sie es schnell und klicken Sie auf ""kaufen"" - Sie haben dafür 20 Sekunden. Sie können aber eine Stunde oder einen Tag warten um zu sehen ob der Preis noch weiter fällt. Das Aufdecken des Preises von anderen Benutzern reduziert den Preis kontinuierlich weiter. Denken Sie jedoch daran dass wenn Sie zu lange warten jemand wird schneller sein als Sie!. ;5";"0" 3914;"auction_desc_22297";"MacBook 12" 256GB - Space Gray
256 GB pamięci masowej flash z magistralą PCIe na płycie głównejDwurdzeniowy procesorIntel Core m3 1,1 GHzTurbo Boost do 2,2 GHz8 GB pamięci RAMIntel HD Graphics 515
Zawartość opakowaniaMacBookZasilacz USB-C o mocy 29 WPrzewód zasilający USB-C (2 m)
Cena zawiera koszt przesyłki."\'"5";"0"';
$regex = '#"(?<quotes>[^"]*)"#';
preg_match_all($regex, $string, $matches);
var_dump($matches['quotes']);
See it here : https://3v4l.org/8Z8J5
I've this problem with my code.
I'm trying to get the spanish special chars with accents and the "ñ" and "€".
That's my code:
include_once(PLUGINS_PATH . "tcpdf/tcpdf.php");
$pdf = new TCPDF("L", PDF_UNIT, PDF_PAGE_FORMAT, false, 'ISO-8859-1', false);
// Deshabilitando la cabecera
$pdf->setPrintHeader(false);
// Deshabilitando el pie de página
$pdf->setPrintFooter(false);
// Márgenes
$pdf->SetMargins(5, 5, 5);
// Saltos de página automáticos.
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
// Establecer el ratio para las imagenes que se puedan utilizar
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
// Establecer la fuente
$pdf->SetFont('times', 10);
// Añadir pána
$pdf->AddPage();
$pdf->writeHTMLCell(0, 0, 2, 2, $html, 0);
//Cerramos y damos salida al fichero PDF
return $pdf->Output($pdf_path_name, 'F');
the $html variable contains all the information and when I display with a simple echo $html it well encoded.
I give you one pic with my PDF.
http://img706.imageshack.us/img706/9451/kw97.png
Solved the problem displaying european simbols.
But why I'm getting those "??????" simbols?
I give you another pic
http://img51.imageshack.us/img51/6342/42th.png
PD: I've been looking for one solution for 3 days and no solution i've found.
You have specified ISO-8859-1 which is more commonly known as Latin-1. Latin-1 does include those characters. But you should specify your coalition/encoding to be UTF-8 which will likely cover all of the special characters you need.
After reading some of the documentation, it doesn't appear that they use the ISO standards to identify the different types of encoding, but it isn't clear.
$pdf = new TCPDF("L", PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
Pls have a look at the following picture http://dev.mosaicware.pl/tmp/PDF-utf-problem.png
As you can se PL and RO characters are looking weird, they look fine on the webpage. Any clue?
I've used arialunicid0 font and following code (characters in DB are UTF-8):
$pdf = new models_PdfUtf(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', true);
$pdf->SetFont('arialunicid0'); $pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING);
$pdf->SetAuthor($problem . ' ' . $problem['user_surname']); $pdf->SetTitle($problem['problem_title']);
$pdf->SetSubject($problem['problem_title']);
$pdf->Output('export.pdf','I');
$pdf = new models_PdfUtf(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', true);
$pdf->SetFont('arialunicid0');
$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING);
$pdf->setPrintFooter(false);
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
$pdf->AddPage();
$pdf->writeHTML($c, true, 0, true, 0);
$pdf->SetAuthor($problem . ' ' . $problem['user_surname']);
$pdf->SetTitle($problem['problem_title']);
$pdf->SetSubject($problem['problem_title']);
$pdf->Output('export.pdf','I');
Unfortunately, the picture is now password protected, but from your description I'd guess that there is something in the HTML. I encountered a behavior as described by cou with links. Could you check if $c contains any links at all?