FPDF 패키지의 인코딩을 utf-8로 설정하는 방법을 아는 사람이 있습니까? 아니면 그리스 문자를 지원하는 ISO-8859-7 (Greek) 이상입니까?
기본적으로 그리스 문자가 포함 된 pdf 파일을 만들고 싶습니다.
모든 제안이 도움이 될 것입니다. 조지
- 답변 # 1
- 답변 # 2
tFPDF라는 공식 UTF-8 버전의 FPDF도 있습니다 http://www.fpdf.org/en/script/script92.php
원본 FPDF에서 쉽게 전환 할 수 있습니다. 위의 링크 또는 내 코드의 예와 같이 유니 코드 글꼴도 사용해야합니다.
$str = utf8_decode($str);
어디서나 utf8_decode ()를 스패밍하는 대신 이것을 사용하는 것이 훨씬 더 우아하다고 생각하며 AddFont ()에서 .ttf 파일을 직접 사용하는 기능도 거꾸로됩니다.
여기의 다른 대답은 문제를 피하거나 해결하는 방법 일 뿐이며 UTF-8을 피하는 것은 최신 프로젝트에 대한 실질적인 옵션이 아닙니다.
FPDF를 기반으로하는 mPDF 또는 TCPDF (및 기타)와 같은 대안이 있지만 고급 기능을 제공하고 UTF-8을 지원하며 HTML 코드를 해석 할 수 있습니다 (물론 HTML을 PDF로 변환하는 직접적인 방법이 없기 때문에 제한됨) . 대부분의 FPDF 코드는 해당 라이브러리에서 직접 사용할 수 있으므로 코드를 쉽게 마이그레이션 할 수 있습니다.
https://github.com/mpdf/mpdf http://www.tcpdf.org/
- 답변 # 3
이 문제에 대한 정말 간단한 해결책이 있습니다.
fpdf.php 파일에서 다음 행으로 이동하십시오 :
$str = iconv('UTF-8', 'windows-1252', $str);
내 버전의 fpdf에서 648 행입니다. 다음 코드 줄을 삽입하십시오 :
<?php //this is a UTF-8 file, we won't need any encode/decode/iconv workarounds //define the path to the .ttf files you want to use define('FPDF_FONTPATH',"../fonts/"); require('tfpdf.php'); $pdf = new tFPDF(); $pdf->AddPage(); // Add Unicode fonts (.ttf files) $fontName = 'Helvetica'; $pdf->AddFont($fontName,'','HelveticaNeue LightCond.ttf',true); $pdf->AddFont($fontName,'B','HelveticaNeue MediumCond.ttf',true); //now use the Unicode font in bold $pdf->SetFont($fontName,'B',12); //anything else is identical to the old FPDF, just use Write(),Cell(),MultiCell()... //without any encoding trouble $pdf->Cell(100,20, "Some UTF-8 String"); //... ?>
(코드 줄 위)
if($txt!=='') {
이것은 모든 독일어 특수 문자에 적용되며 그리스어 특수 문자에도 적용됩니다. 그렇지 않으면 cp1252를 필요한 각 알파벳으로 바꾸십시오. 지원되는 모든 문자는 여기에서 볼 수 있습니다. http://en.wikipedia.org/wiki/Windows-1252
여기에서 해결책을 보았습니다 : http://fudforum.org/forum/index.php?t=msg&goto=167345 원래 작성자가 utf와 8 사이에 대시를 삽입하는 것을 잊었으므로 위의 예제 코드를 사용하십시오.
위의 내용이 도움이 되었기를 바랍니다.
Daan
- 답변 # 4
글꼴을 먼저 생성해야합니다.
$txt = iconv('utf-8', 'cp1252', $txt);
를 사용해야합니다 유틸리티는 FPDF 패키지에 포함되어 있습니다. 나는 리눅스에서 데모의 약간 확장 된 스크립트를 사용했다 :
그런 다음 생성 된 파일을if($align=='R')
MakeFont
에 복사했습니다. 내 웹 디렉토리에 다음을 사용했습니다 :<?php // Generation of font definition file for tutorial 7 require('../makefont/makefont.php'); $dir = opendir('/usr/share/fonts/truetype/ttf-dejavu/'); while (($relativeName = readdir($dir)) !== false) { if ($relativeName == '..' || $relativeName == '.') continue; MakeFont("/usr/share/fonts/truetype/ttf-dejavu/$relativeName",'ISO-8859-2'); } ?>
(저는 테이블 작업을하고있었습니다.) 그것은 나의 언어를 위해 일했습니다 (Buňka jedna는셀 하나의 체코 어입니다). 체코 어는 중앙 유럽 언어이며 ISO-8859-2에도 속합니다. 안타깝게도 FPDF 사용자는 UTF-8 인코딩의 장점을 잃어 버렸습니다. PDF로 얻을 수 없습니다 :
font
덴마크어
$pdf->Cell(80,70, iconv('UTF-8', 'ISO-8859-2', 'Buňka jedna'),1);
Městečko Fruens Bøge
가된다 ISO-8859-2에서 볼 수 있습니다.해결 방법 제안 :그리스어 글꼴을 가져 와서 적절한 인코딩 (ISO-8859-7)을 사용하여 글꼴을 생성 한 후
ø
를 사용해야합니다. 글꼴이 생성 된 대상 인코딩과 동일한 대상 인코딩을 사용합니다. - 답변 # 5
유니 코드 글꼴을 허용하는 mPDF라는 FPDF 확장이 있습니다.
http://www.mpdf1.com/mpdf/index.php
ř
관련 자료
- php - UTF-8 인코딩은 모든 HTML 페이지에서 작동하지만 하나만 작동합니다
- c++builder - TIdHTTP-> Put ()을 사용하여 UTF-8 인코딩
- java - JSON을 파일로 저장할 때 인코딩 문제, UTF-8로 저장하는 방법?
- python - 인코딩 (UTF-8) 문제
- Linux perl에서 모든 인코딩에서 utf-8 로의 파일 인코딩
- utf 8 - fscanf로 UTF-8 인코딩을 읽는 방법
- java - ByteArrayOutputStream을 사용한 UTF-8 인코딩
- php - FPDF 문자 인코딩
- javascript - utf8 인코딩을 어떻게 달성 할 수 있습니까?
- c++ - VC ++ MFC 애플리케이션에서 UTF-8 인코딩을 사용하는 방법
- python - 매끈한 - csv 파일 인코딩 utf-8
- laravel - Laracsv UTF-8 인코딩
- unicode : UTF-8과 유니 code의 차이점은 무엇입니까?
- Python 요청 및 LanguageTool 인코딩 오류
- US-ASCII에서 UTF-8 (ICONV)까지의 강제 인코딩
- java : 이스케이프 된 유니 code 문자를 실제 문자로 다시 변환하십시오
- database : MariaDB Server에서 UTF-8 설정은 carrater_set_system을 무시합니다
- UTF-8 인코딩되면 주어진 바이트 수에 맞게 Java 문자열을 자르기는 방법은 무엇입니까?
- PHP는 국가 문자를 유지하는 UTF8_UNICODE_CI에 ASCII로 오는 문자열 변수를 변환합니다.
- python : 파일에 텍스트를 추가하고 잘못된 UTF-8 인코딩을 가져오고 MacOS에서 컴파일을 실패합니다.
- 그리스 데이터 응답은 Express에서 볼 수 없습니다
- Java에서 UTF-8에서 문자열을 입력하십시오
UTF-8 인코딩을 사용하지 마십시오. 표준 FPDF 글꼴은 ISO-8859-1 또는 Windows-1252를 사용합니다.
utf8_decode()
를 사용하여 ISO-8859-1로 변환 할 수 있습니다 : 와이즈 비즈 그러나 유로와 같은 일부 문자는 올바르게 번역되지 않습니다. iconv 확장자를 사용할 수있는 경우 올바른 방법은 다음과 같습니다. 와이즈 비즈