Tôi đang đánh giá apache poi là tùy chọn để viết các tệp docx. Điều cụ thể mà tôi đang tìm kiếm là tạo nội dung trong tệp docx bằng các ngôn ngữ khác nhau (tiếng Hindi/marathi phải cụ thể). Tôi đang đối mặt với sự cố sau:Apache POI - Vấn đề đầu ra Docx
Khi tệp docx được viết, văn bản "Hindi/Marathi" hiển thị dưới dạng ô vuông mặc dù phông chữ "Arial Unicode MS" hỗ trợ. Vấn đề là khi chúng tôi kiểm tra các hộp MS Word hiển thị phông chữ là "Cailbri", mặc dù tôi đã đặt phông chữ thành "Arial Unicode MS". Nếu tôi chọn các hộp trong MS Word và sau đó thay đổi phông chữ thành "Arial Unicode MS", các từ tiếng Hindi/marathi được hiển thị chính xác. Bất kỳ ý tưởng tại sao điều này xảy ra? Xin lưu ý rằng tôi đang sử dụng phiên bản phát triển của POI vì phiên bản ổn định trước đó không hỗ trợ cài đặt các họ phông chữ. Đây là nguồn:
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
public class CreateDocumentFromScratch
{
public static void main(String[] args)
{
XWPFDocument document = new XWPFDocument();
XWPFParagraph paragraphTwo = document.createParagraph();
XWPFRun paragraphTwoRunOne = paragraphTwo.createRun();
paragraphTwoRunOne.setFontFamily("Arial Unicode MS");
paragraphTwoRunOne.setText("नसल्यास");
XWPFParagraph paragraphThree = document.createParagraph();
XWPFRun paragraphThreeRunOne = paragraphThree.createRun();
paragraphThreeRunOne.setFontFamily("Arial Unicode MS");
paragraphThreeRunOne.setText("This is nice");
FileOutputStream outStream = null;
try {
outStream = new FileOutputStream("c:/will/First.doc");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
document.write(outStream);
outStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Mọi trợ giúp sẽ được đánh giá cao.
Vui lòng cung cấp phiên bản chính xác của POI và MS Word - có vẻ như vấn đề không xảy ra với các phiên bản POI gần đây. –
Tôi đã thử mã của bạn với POI API 3.11 và nó hoạt động tốt. Tôi đã sử dụng MS Word 2013 để mở tệp .doc – esprittn