java - 如何在 java 中读取波斯语 pdf 文件

标签 java pdf itext

我想使用 itext 阅读包含波斯语字符的 pdf 文件。我从这里读到,但文字是相反的。例如 "бə"而不是 "هر"。 我用 "\n"拆分它并从 end 开始阅读每一行中的每个文本,但我认为也许有更好的解决方案可以从这个 Pdf 中读取。 那是我的代码:

public class Main extends JFrame {
    private static final int WIDTH = 600;
    private static final int HEIGHT = 600;
    /**
     * by Shomeis
     */
    private static final long serialVersionUID = 1L;

    public Main() {
        Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
        int x = dim.width / 2 - WIDTH / 2;
        int y = dim.height / 2 - HEIGHT / 2;
        setBounds(x, y, WIDTH, HEIGHT);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setMinimumSize(new Dimension(600, 600));
        //
        File pdf = new File("E:\\guide1.pdf");
        if (!pdf.canRead() || !pdf.isFile()) {
            System.err.println("cannot read input file " + pdf.getAbsolutePath());
            return;
        }
        try {
            PdfReader reader = new PdfReader(pdf.getAbsolutePath());
            String page;
            String areaText = "";
            System.out.println(reader.getNumberOfPages());
            for (int k = 1; k <= reader.getNumberOfPages(); k++) {
                System.out.println(k);
                page = PdfTextExtractor.getTextFromPage(reader, k);

                String[] b = page.split("\n");

                for (int i = 0; i < b.length; i++) {
                    for (int j = (b[i].length() - 1); j >= 0; j--) {
                        areaText += b[i].charAt(j);
                    }
                    areaText += "\n";
                }
            }
            JTextArea text = new JTextArea(areaText);
            JScrollPane sc = new JScrollPane(text);
            text.setWrapStyleWord(true);
            text.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
            this.setContentPane(sc);
            this.setVisible(true);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        new Main().setVisible(true);
    }
}

最佳答案

你可以反转单词:

String res = strategy.getResultantText();
res = new StringBuilder(res).reverse().toString();

关于java - 如何在 java 中读取波斯语 pdf 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25525149/

相关文章:

java - 在 listFragment 中实现 OnScrollListener

android - 如何将pdf文件转换为android中的doc文件?

javascript:直接发送base64string进行打印,无需预览

itext - 使用 iText 提取 PDF 文本

java - 错误的 key 类 : Text is not IntWritable

来自类的 Java 枚举列表

java NaN 和 -infinity

java - 如何修复 "hdfs://192.123.81.123:9000/atos/sample.pdf not a SequenceFile"

itext - 如何摆脱 PdfPCell、iText 5 中的顶部填充

java - 验证 PDF 是否使用 iText 进行了数字签名