키릴 문자의 DOMPDF 문제
-
13-09-2019 - |
문제
DOMPDF 라이브러리를 사용하여 PDF에서 송장을 만듭니다. 이 문서는 프랑스어, 러시아어 또는 영어로 될 수 있지만 러시아 문자를 인쇄하는 데 어려움이 있습니다.
먼저 UTF-8 인코딩을 사용하려고했고 meta
변환 할 HTML 페이지의 헤드에서 태그를 달성합니다.
u003Cmeta http-equiv="Content-Type" content="text/html; charset=utf-8" />
그러나 그것은 작동하지 않았습니다.
그런 다음 이것을 삽입했습니다 meta
내부의 태그 BODY
태그를 지정하고 프랑스 캐릭터의 문제를 해결하는 데 도움이되었습니다.
그러나 러시아 캐릭터는 여전히 작동하지 않습니다. 또한 러시아 문자를 HTML 엔티티로 변환하려고했지만 그 역시 작동하지 않습니다.
PDFLIB가 아닌 R & OS CPDF 클래스를 백엔드로 사용합니다.
누구든지 도울 수 있습니까?
해결책
문제는 Fonts Default DOMPDF 사용에 관한 것입니다 (즉, 모든 유니 코드 문자가있는 것은 아니며 지금까지 5000을 넘습니다). 일반적으로 arialuni.ttf는 필요한 것입니다. 현지화 된 러시아어 버전을 다운로드 할 수 있습니다 http://chernev.ru/dompdf.rar {Broken Link}
업데이트 된 링크 : https://code.google.com/p/ipwn/downloads/detail?name=ArialUni.ttf
다른 팁
허용 된 답변 링크는 끊어졌고 이전 버전의 DOMPDF가 포함되어 있습니다.
DOMPDF 0.6의 유니 코드 기호로 작업하려면 두 가지 대안이 있습니다.
사용 된 글꼴 사용 (DOMPDF 0.6에 적용) :
- 다운로드 아카이브 및 추출.
- DOMPDF Fonts 폴더에서 추출 된 파일을 복사하십시오
/dompdf/lib/fonts/
. - 편집하다
dompdf_font_family_cache.dist.php
스 니펫으로 1. - CSS에서
font-family: times;
.
스 니펫 1 :
/* ... */
'times' => array (
'normal' => DOMPDF_FONT_DIR . 'times',
'bold' => DOMPDF_FONT_DIR . 'timesbd',
'italic' => DOMPDF_FONT_DIR . 'timesi',
'bold_italic' => DOMPDF_FONT_DIR . 'timesbi'
),
'times-roman' => array (
'normal' => DOMPDF_FONT_DIR . 'times',
'bold' => DOMPDF_FONT_DIR . 'timesbd',
'italic' => DOMPDF_FONT_DIR . 'timesi',
'bold_italic' => DOMPDF_FONT_DIR . 'timesbi'
),
/* ... */
자신의 TTF 글꼴을 사용하려면 (예 :
Arial.ttf
):- 운영:
ttf2afm -o Arial.afm Arial.ttf
. (나는 우분투에서 그것을했다.) - 운영:
ttf2ufm -a -F Arial.ttf
. (Exe From에서 Windows에서 수행했습니다 UFPDF, 그러나 나는 당신이 사용할 수 있다고 생각합니다/dompdf/lib/ttf2ufm/bin/ttf2ufm.exe
.) - 복사
Arial.*
파일/dompdf/lib/fonts/
. - 추가
dompdf_font_family_cache.dist.php
스 니펫 2. - CSS에서
font-family: arial;
.
- 운영:
스 니펫 2 :
/* ... */
'arial' => array (
'normal' => DOMPDF_FONT_DIR . 'Arial',
'bold' => DOMPDF_FONT_DIR . 'Arial',
'italic' => DOMPDF_FONT_DIR . 'Arial',
'bold_italic' => DOMPDF_FONT_DIR . 'Arial'
)
/* ... */
Dejavu Font를 사용하면 키릴 문자를 볼 수 있습니다.
Dejavu TrueType 글꼴은 기본적으로 DOMPDF에 괜찮은 유니 코드 문자 범위를 제공하기 위해 사전 설치되었습니다. Dejavu 글꼴을 사용하려면 스타일 시트의 글꼴을 참조하십시오. } (Dejavu Sans의 경우).
DOMPDF에는 Dejavu Font가 기본값을 포함합니다
$html = "<html><head><style>body { font-family: DejaVu Sans }</style>".
"<body>А вот и кириллица</body>".
"</head></html>";
$dompdf = new \DOMPDF();
$dompdf->load_html($html);
$dompdf->render();
echo file_put_contents('cyrillic.pdf', $dompdf->output());
변경을 설정할 수도 있습니다 데프 기본적으로 글꼴 용 dompdf_config.inc.php
def("DOMPDF_DEFAULT_FONT", "DejaVu Sans");
arialuni.ttf run php load_font.php 'arial'arialuni.ttf dompdf 디렉토리에서 다운로드하고, 글꼴을 Arial It에서 설정하십시오;)
나에게 위의 4 단계는 문제를 해결하지 못했습니다. 그 외에도, dompdf 변환 PDF를 ANSI (ISO)로 만들었습니다. 옵션 페이지에서이를 비활성화해야합니다.http://domain.com/admin/settings/print/pdf
확인란을 사용하여 Dompdf의 유니 코드 모드를 사용하십시오. 이렇게하면 UTF-8/Unicode에서 파일을 생성 할 수 있습니다.
웹 설정은 기본적으로 dompdf_config.inc.php의 설정을 무시합니다.
문제가 CSS 리셋 사용에있을 수 있다는 점에 주목했습니다.font:inherit;