Редактировать
Наконец-то я получил ее с той же библиотекой, которую вы использовали
файл ex.php будет выглядеть так:
<?php
// Optionally define the filesystem path to your system fonts
// otherwise tFPDF will use [path to tFPDF]/font/unifont/ directory
// define("_SYSTEM_TTFONTS", "C:/Windows/Fonts/");
require('tfpdf.php');
$pdf = new tFPDF();
$pdf->AddPage();
// Add a Unicode font (uses UTF-8)
$pdf->AddFont('DejaVu','','DejaVuSansCondensed.ttf',true);
$pdf->SetFont('DejaVu','',14);
// Load a UTF-8 string from a file and print it
$file = fopen("HelloWorld.txt", "r");
while(!feof($file))
{
$pdf->Write(8,utf8_strrev(fgets($file)));
}
fclose($file);
// Select a standard font (uses windows-1252)
$pdf->SetFont('Arial','',14);
$pdf->Ln(10);
$pdf->Write(5,'The file size of this PDF is only 13 KB.');
$pdf->Output();
function utf8_strrev($str){
preg_match_all('/./us', $str, $ar);
return implode(array_reverse($ar[0]));
}
?>
HelloWorld.txt:
ثتشر ققققققققق
ثتشر قثتقققققققق
и pdf:
![Pdf File](https://i.stack.imgur.com/iEtKH.png)
Вы пытались использовать юникод справа налево?
Old Edit, альтернатива Python
После попытки использовать символ Юникод справа налево, он не работал, потому что скрипт, используемый de OP, записывает символ char в объект с именем Cell.
Обходной будет установлен арабский шрифт. Но ...... Dejavu Fonts не поддерживает арабские шрифты, среди прочих:
- Иврит
- 1035 * Письмо нко *
- Лао
- Канадская аборигенная программа
- Ogham
- Тифинаг
- лиса
Боюсь сказать, что если вы будете использовать эту библиотеку, как она есть, вы не решите проблему.
Но!
Учитывая, что вы не указали fpdf, используемый на другом языке,
Я нашел работу с той же самой библиотекой в ядре, но сделанной на python:
#!/usr/bin/env python
# -*- coding: utf8 -*-
from fpdf import FPDF
pdf = FPDF()
pdf.add_page()
pdf.add_font('DejaVu', '', 'DejaVuSansCondensed.ttf', uni=True)
pdf.set_font('DejaVu', '', 14)
text = u"""
Arabic:
ححبا العاالعاللا العاالعالل
حححبا العاالعاللا العاالعالل
"""
for txt in text.split('\n'):
pdf.write(8, txt[::-1])
pdf.ln(8)
pdf.output("unicode.pdf", 'F')
Вам просто нужно повернуть строку перед тем, как записать ее в теле, она будет выглядеть так:
![enter image description here](https://i.stack.imgur.com/ZOT98.png)
Как это использовать:
Вот проект git
importante !: я пробовал в Python 2.7
Вы можете установить его с помощью pip:
pip install fpdf
и наконец: и САМОЕ ВАЖНОЕ
Я потерял два часа своей жизни, потому что я использую Ubuntu 18.04, поэтому библиотека fpdf
искала шрифты UTF-8 в
FPDF_FONT_DIR = os.path.join(os.path.dirname(__file__),'font')
в моем случае:
/home/damian/.local/lib/python2.7/site-packages/fpdf/font
ПОЭТОМУ УБЕДИТЕСЬ, ЧТОБЫ СДЕЛАТЬ СВОИ ШРИФТЫ, ИЛИ ВЫ ПОТЕРЯЕТЕ УМ.
Во всяком случае, я надеюсь, что