dmK
Новичок
FPDF генерит "битый" PDF (The file is damaged and could not be repaired)
Пошаговые действия:
1. Создаю afm файл нужного мне кирилического шрифта:
ttf2pt1 -a times.ttf times
2. Генерю для этого шрифта описание:
MakeFont('times.ttf','times.afm','cp1251');
3. Создаю simple PDF:
$pdf=new FPDF();
$pdf->AddPage();
$pdf->AddFont('TimesNewRomanPSMT','','times.php');
$pdf->SetFont('TimesNewRomanPSMT','',16);
$pdf->Cell(40,10,'Превед World!');
$pdf->Output();
В результате в браузере сообщение "The file is damaged and could not be repaired"
Ковырянее в проблеме привело к следующему наблюдению:
Если в файле описания, сгененрированного MakeFont'ом убрать $file='times.z'; то будет генериться читаемый PDF, правда с сообщением "Cannot extract embedded font 'TimesNewRomanPSMT'. Some characters may not display or print correctly." Под some characters имеллись ввиду, естественно, кирилический символы.
хелп плиз в)
-~{}~ 07.11.06 16:23:
Есть мнение что это либо из-за настроек пхп, либо из-за самой версии пхп, так как месяца два назад все прекрасно работало, а сейчас нет.
PHP Version 5.1.4
-~{}~ 07.11.06 17:28:
Разрулил проблему. Посвящается потомкам в))
Проблема была, как и предпологалось, в настройках php, а именно:
extension=php_mbstring.dll
mbstring.language = Russian
mbstring.internal_encoding = UTF-8
Перед генерацией PDF следует переключить mbstring на latin1, после чего можно смело ее восстанавливать, если вы продолжаете работу после генерации. В общем случае это может выглядеть следующим образом:
if (function_exists('mb_internal_encoding')) {
$oldEncoding=mb_internal_encoding();
mb_internal_encoding('latin1');
}
$pdf=new FPDF();
$pdf->AddFont('TimesNewRomanPSMT','','times.php');
$pdf->AddPage();
$pdf->SetFont('TimesNewRomanPSMT','',35);
$pdf->Cell(0,10,'Преветек от dmK
');
$pdf->Output();
if (function_exists('mb_internal_encoding'))
mb_internal_encoding($oldEncoding);
Пошаговые действия:
1. Создаю afm файл нужного мне кирилического шрифта:
ttf2pt1 -a times.ttf times
2. Генерю для этого шрифта описание:
MakeFont('times.ttf','times.afm','cp1251');
3. Создаю simple PDF:
$pdf=new FPDF();
$pdf->AddPage();
$pdf->AddFont('TimesNewRomanPSMT','','times.php');
$pdf->SetFont('TimesNewRomanPSMT','',16);
$pdf->Cell(40,10,'Превед World!');
$pdf->Output();
В результате в браузере сообщение "The file is damaged and could not be repaired"
Ковырянее в проблеме привело к следующему наблюдению:
Если в файле описания, сгененрированного MakeFont'ом убрать $file='times.z'; то будет генериться читаемый PDF, правда с сообщением "Cannot extract embedded font 'TimesNewRomanPSMT'. Some characters may not display or print correctly." Под some characters имеллись ввиду, естественно, кирилический символы.
хелп плиз в)
-~{}~ 07.11.06 16:23:
Есть мнение что это либо из-за настроек пхп, либо из-за самой версии пхп, так как месяца два назад все прекрасно работало, а сейчас нет.
PHP Version 5.1.4
-~{}~ 07.11.06 17:28:
Разрулил проблему. Посвящается потомкам в))
Проблема была, как и предпологалось, в настройках php, а именно:
extension=php_mbstring.dll
mbstring.language = Russian
mbstring.internal_encoding = UTF-8
Перед генерацией PDF следует переключить mbstring на latin1, после чего можно смело ее восстанавливать, если вы продолжаете работу после генерации. В общем случае это может выглядеть следующим образом:
if (function_exists('mb_internal_encoding')) {
$oldEncoding=mb_internal_encoding();
mb_internal_encoding('latin1');
}
$pdf=new FPDF();
$pdf->AddFont('TimesNewRomanPSMT','','times.php');
$pdf->AddPage();
$pdf->SetFont('TimesNewRomanPSMT','',35);
$pdf->Cell(0,10,'Преветек от dmK

$pdf->Output();
if (function_exists('mb_internal_encoding'))
mb_internal_encoding($oldEncoding);