Я пытаюсь преобразовать * .xhtml с символами на иврите (UTF-8) в PDF с помощью библиотеки iText, но Я получаю все буквы в обратном порядке. Насколько я понял из этого question я могу установить RTL только для ColumnText
и PdfCell
объектов:Невозможно установить направление RTL для букв на иврите при преобразовании из * .xhtml в * .pdf с помощью библиотеки iText
арабские (и иврит) могут быть правильно воспроизведены только в контексте ColumnText и PdfPCell.
Так что я сомневаюсь, можно ли конвертировать всю * .xhtml страницу в PDF?
Это * .xhtml файл, который я пытаюсь импортировать:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Title of document</title>
</head>
<body style="font-size:12.0pt; font-family:Arial">
שלום עולם
</body>
</html>
И это Java-код, который я использую:
public static void convert() throws Exception{
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("import.pdf"));
writer.setRunDirection(PdfWriter.RUN_DIRECTION_RTL);
document.open();
String str = null;
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("import.xhtml"), "UTF8"));
StringBuilder sb = new StringBuilder();
while ((str = in.readLine()) != null) {
System.out.println(str);
sb.append(str);
}
in.close();
XMLWorkerHelper worker = XMLWorkerHelper.getInstance();
InputStream is = new ByteArrayInputStream(sb.toString().getBytes(StandardCharsets.UTF_8));
worker.parseXHtml(writer, document, is, Charset.forName("UTF-8"));
document.close();
}
}
Это то, что я получаю до настоящего времени:
Благодарим за любую помощь.
Я не могу читать иврит, так что простите мне мое замешательство, но я вижу «שלום עולם» в вашем коде, и я вижу те же самые глифы, которые справа налево написаны на вашем снимке экрана. Разве это не означает, что iText изменил ориентацию текста? –
@BrunoLowagie, они одни и те же глифы, но в противоположном направлении. В коде «ש» находится самый правый символ, а на картинке «ש» - самый левый глиф. – Anatoly
ОК, я буду экспериментировать. В HTML в PDF вы можете иметь что-то вроде этого: '