返回
使用iText 7手动设置识别源语言
见解分享
2023-12-24 23:43:56
在大多数情况下,Google 翻译 API 可以准确识别文本的源语言。然而,我们收到了俄罗斯用户关于无法正确识别俄语文本的反馈。经测试确认,确实如此。因此,我们在 iText 7 中添加了手动设置源语言的功能。
值得注意的是,此功能不仅要满足边缘情况,还要避免影响大多数用户。目前,我们的逻辑是这样的:
对于大多数用户来说,Google 翻译 API 的自动语言检测已经足够准确。因此,默认情况下,iText 7 不会提示用户手动设置源语言。
对于那些遇到问题的用户(例如,使用俄语文本的用户),iText 7 提供了一种便捷的方法来手动设置源语言。用户可以通过调用 setLanguage
方法指定源语言。
import com.itextpdf.io.source.ByteArrayOutputStream;
import com.itextpdf.text.Document;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.pdf.codec.Base64;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
public class ManualLanguageDetection {
public static void main(String[] args) throws IOException {
// 创建一个字节数组输出流,用于存储生成的 PDF 文档
ByteArrayOutputStream baos = new ByteArrayOutputStream();
// 创建一个 PDF 写入器,将字节数组输出流作为其输出目标
PdfWriter writer = new PdfWriter(baos);
// 创建一个文档对象
Document document = new Document();
// 打开 PDF 写入器
writer.open();
// 设置 PDF 文档的源语言为俄语
writer.setLanguage("ru");
// 向 PDF 文档添加一个段落
document.add(new Paragraph("Привет, мир!"));
// 关闭 PDF 文档
document.close();
// 将 PDF 文档转换为 Base64 编码的字符串
byte[] pdfBytes = baos.toByteArray();
String base64Pdf = Base64.encodeBytes(pdfBytes);
// 输出生成的 Base64 编码的 PDF 文档
System.out.println(base64Pdf);
}
}