문제

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에 적용) :

    1. 다운로드 아카이브 및 추출.
    2. DOMPDF Fonts 폴더에서 추출 된 파일을 복사하십시오 /dompdf/lib/fonts/.
    3. 편집하다 dompdf_font_family_cache.dist.php 스 니펫으로 1.
    4. 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):

    1. 운영: ttf2afm -o Arial.afm Arial.ttf. (나는 우분투에서 그것을했다.)
    2. 운영: ttf2ufm -a -F Arial.ttf. (Exe From에서 Windows에서 수행했습니다 UFPDF, 그러나 나는 당신이 사용할 수 있다고 생각합니다 /dompdf/lib/ttf2ufm/bin/ttf2ufm.exe.)
    3. 복사 Arial.* 파일 /dompdf/lib/fonts/.
    4. 추가 dompdf_font_family_cache.dist.php 스 니펫 2.
    5. 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;

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top