Использовал арабский и персидский в XWPFDocument
Я хочу преобразовать слово в PDF с арабскими буквами, после небольшой R&D я решил использовать
org.apache.poi.xwpf.converter.pdf.PdfConverter
но когда я пишу код ниже, конечный результат слева направо, и слова "загромождены", например, для результата "سع inد" в pdf будет "سعید", мой документ очень большой, а не один абзац:
public class ConvertWord {
public static void ConvertToPDF(String docPath, String pdfPath) {
try {
InputStream doc = new FileInputStream(new File(docPath));
XWPFDocument document = new
PdfOptions options = PdfOptions.create();
options.fontEncoding("UTF-8")
OutputStream out = new FileOutputStream(new File(pdfPath));
PdfConverter.getInstance().convert(document,out,options);
} catch (FileNotFoundException ex) {
} catch (IOException ex) {
}
}
public static void main(String[] args) {
ConvertWord cwoWord=new ConvertWord();
cwoWord.ConvertToPDF("D://" + "usc.docx","D://test12.pdf");
}
}
1 ответ
Есть обходной путь для решения этой проблемы. Вам необходимо использовать библиотеку ICU4J. Потом:
String shaped = new StringBuilder(new ArabicShaping(ArabicShaping.LETTERS_SHAPE).shape(s))
.reverse().toString();
Хотя у вас могут возникнуть проблемы с персидскими юникодами. Возникла проблема, и кто-то исправил ее, установив исправлениеArabicShaping
. Я не нашел на него ссылки, но вот исправленный код. (Мне пришлось загрузить файл на свой Google диск, чтобы он не удалялся со временем)
Также вот ссылка на код и его отличие от основного кода.
Я изменил название класса на PersianShaping
для удобства.
Эта тема: Создание документа PDF из документа Word с использованием Java API, содержит другие библиотеки, которые вы можете использовать. Я не думаю, что эта библиотека, которую вы используете, будет поддерживать параметры макета; он также содержит множество ошибок и не поддерживает таблицы, графики, номера страниц, как указано здесь: https://github.com/opensagres/xdocreport/wiki/XWPFConverterPDFViaIText