Avatar billede PHPnoob Juniormester
07. juni 2017 - 15:21 Der er 10 kommentarer og
1 løsning

fpdf viser ikke ÆØÅ rigtigt i browser pdf

Kære eksperter.

Jeg sidder med et lidt ældre system, der bruger fpdf v. 1.6.

Problemet:
-Når pdf vises i browseren, skrives æøå/ÆØÅ ikke rigtigt:
    - Ø bliver fx til øl & Å til Ã¥

Jeg har prøvet mig frem til forskellige løsninger bl. a. $str = utf8_decode($str); for at lave det om til iso-8859-1 men uden held.

På forhånd tak for jeres input!
Avatar billede nemlig Professor
07. juni 2017 - 17:36 #1
Hejsa.
Jeg har lavet denne function til at løse problemet:
function html_utf8($utf){  //BRUGES I PDF-dokumenter til korrekt visning af tegntabel og htmlspecialchars
    $utf = iconv('UTF-8', 'ISO-8859-1',$utf);
    $utf = htmlspecialchars_decode($utf,ENT_QUOTES);
    return $utf;
}


og bruger fx functionen sådan her:
$pdf->Cell(50,5,html_utf8('ÆØÅæøå'),0,2);
Avatar billede PHPnoob Juniormester
07. juni 2017 - 20:56 #2
@nemlig

Hej og tak for svaret.
Jeg prøvede at sætte funktionen ind:

$pdf->Cell(70, 8,(50, 5, html_utf8('ÆØÅæøå'), "Servicemærke", 0, 0, 'L', false);

Men den lavede hele den "Cell" om til en sort firkant.
Avatar billede PHPnoob Juniormester
07. juni 2017 - 21:17 #3
Kunne man fx lave en lignende funktion hvor:  $dest='I'; bliver lavet om??
Avatar billede PHPnoob Juniormester
07. juni 2017 - 21:34 #4
Skal lige siges at jeg skrev forkert i #2:
$pdf->Cell(70, 8,(50, 5, html_utf8('ÆØÅæøå'), "Servicemærke", 0, 0, 'L', false);

- derfor de sorte felter ^^

Jeg skrev det derefter ind sådan her: 
$pdf->Cell(70, 8, html_utf8('ÆØÅæøå'), 0, 0, 'L', false);

- Det gav ikke nogen ændring - stadig æ
Avatar billede nemlig Professor
07. juni 2017 - 21:41 #5
Du bruger ikke korrekt syntax. Du har alt for mange parametre.

Prøv fx. denne simple kode og se om den ikke virker. Så har du måske en ide om, hvordan du skal bruge funktionen:
<?php
function html_utf8($utf)
{
    $utf = iconv('UTF-8', 'ISO-8859-1',$utf);
    $utf = htmlspecialchars_decode($utf,ENT_QUOTES);
    return $utf;
}   
require '../fpdf.php'; // OBS - ANGIV KORREKT STI
class PDF extends FPDF
{
}

$pdf=new PDF();
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetFont('Times','B',24);
$pdf->SetFillColor(255,255,255);
$pdf->Cell(70, 8, html_utf8('Servicemærke'), 0, 0, 'L',1);
$pdf->Output();
?>
Avatar billede nemlig Professor
07. juni 2017 - 21:44 #6
#4. Ok - det ser korrekt ud. Du skal også gemme din fil med tegnsættet UTF-8.
Avatar billede PHPnoob Juniormester
07. juni 2017 - 23:30 #7
Tak for hjælpen @nemlig!!!
-> Jeg rettede tegnsæt og med din funktion virkede det 100%
Avatar billede htx98i17 Professor
08. juli 2017 - 16:10 #8
Jeg har pludselig samme problem og har et opklaringsspørgsmål hvis jeg må...

Er problemet at fpdf() har problemer med at vise utf8 tegn korrekt eller har den problemer med at vise ISO-8859-1 korrekt?

for jeg har gemt mine data som utf8 og jeg har problemer nu.
Avatar billede nemlig Professor
08. juli 2017 - 17:14 #9
Fpdf understøtter ikke UTF-8. 
Brug fx. ovennævnte function på 3 linjer. Jeg gætter på, at det løser dine udfordringer.
Avatar billede htx98i17 Professor
08. juli 2017 - 17:33 #10
Det er altså meget mærkeligt at problemet først opstår nu.

utf8_decode() fungerer fint hos mig og løste problemet.
Hvordan kan det være at du ikke har brugt det?
Avatar billede nemlig Professor
08. juli 2017 - 18:21 #11
Mine data i databasen var gemt som ISO 8859-1, men min host (www.one.com) ændrede pludselig i setup'et, således at udtræk blev konverteret til UTF-8.

Jeg søgte i fpdf-forum om problemer med UTF-8 tegnsæt og fandt løsningen, som vist i funktionen ovenfor.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester