在 XWPFDocument 中使用阿拉伯语和波斯语
used arabic and persian in XWPFDocument
我想把word转成带有阿拉伯字母的pdf,
经过一些研发,我决定使用
org.apache.poi.xwpf.converter.pdf.PdfConverter
但是当我写下面的代码时,最后的结果是从左到右,而且单词很杂乱,例如对于“سعید”,pdf 中的结果是“سعید”,我的docx 很大而且没有一个段落:
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");
}
}
本帖:Creating PDF document from Word document using java api, contains other libraries you could use. I dont think this library, you are using, will support the layout options; it is also contains many bugs and doesn't support tables, graphs, page numbers as mentioned here: https://github.com/opensagres/xdocreport/wiki/XWPFConverterPDFViaIText
有解决此问题的解决方法。
您需要使用 ICU4J 库。
那么:
String shaped = new StringBuilder(new ArabicShaping(ArabicShaping.LETTERS_SHAPE).shape(s))
.reverse().toString();
尽管您可能对波斯语 Unicode 有一些疑问。有一个问题,有人通过修补 ArabicShaping
解决了这个问题。我没有找到它的 link 但是
here 是补丁代码。
(我不得不将文件上传到我的 google 驱动器中,这样它就不会随着时间的推移而被删除)
此外,here是对代码的link及其与主代码的区别。
为了方便起见,我将 class 名称更改为 PersianShaping
。
我想把word转成带有阿拉伯字母的pdf, 经过一些研发,我决定使用
org.apache.poi.xwpf.converter.pdf.PdfConverter
但是当我写下面的代码时,最后的结果是从左到右,而且单词很杂乱,例如对于“سعید”,pdf 中的结果是“سعید”,我的docx 很大而且没有一个段落:
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");
}
}
本帖:Creating PDF document from Word document using java api, contains other libraries you could use. I dont think this library, you are using, will support the layout options; it is also contains many bugs and doesn't support tables, graphs, page numbers as mentioned here: https://github.com/opensagres/xdocreport/wiki/XWPFConverterPDFViaIText
有解决此问题的解决方法。 您需要使用 ICU4J 库。 那么:
String shaped = new StringBuilder(new ArabicShaping(ArabicShaping.LETTERS_SHAPE).shape(s))
.reverse().toString();
尽管您可能对波斯语 Unicode 有一些疑问。有一个问题,有人通过修补 ArabicShaping
解决了这个问题。我没有找到它的 link 但是
here 是补丁代码。
(我不得不将文件上传到我的 google 驱动器中,这样它就不会随着时间的推移而被删除)
此外,here是对代码的link及其与主代码的区别。
为了方便起见,我将 class 名称更改为 PersianShaping
。