Получение неровностей из Java PDFBOX - PullRequest
0 голосов
/ 07 октября 2018

Я использую Java PDFBOX 2.0.12, чтобы попытаться прочитать PDF, сгенерированный латексом.кажется, все работает нормально, но по некоторым причинам определенные значения ( <, <=,>,> = ) меняются на вопросительные знаки (? ), и я получаю различные предупреждения, такие как "ВНИМАНИЕ: нет сопоставления Unicode для a105 (105) в шрифте F18" .Любая помощь будет принята с благодарностью.

Java-код:

try {
        PDDocument document = PDDocument.load(file);
        PDFTextStripper pdfStripper = new PDFTextStripper();

          //Retrieving text from PDF document
          String text = pdfStripper.getText(document);
          System.out.println(text);

          //Closing the document
          document.close();
    } catch (InvalidPasswordException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

Латексный код:

\documentclass[12pt]{article}
\usepackage[a5paper]{geometry}
\usepackage[T1]{fontenc} % font encoding
\usepackage[utf8]{inputenc}

\title{algorithmicx (algpseudocode) example}
\usepackage{algpseudocode}

\begin{document}

\begin{algorithmic}[1]
\If{$quality\ge 9$}:
\State $a\gets perfect$
\ElsIf{$quality\ge 7$}:
\State $a\gets good$
\ElsIf{$quality\ge 5$}:
\State $a\gets medium$
\ElsIf{$quality\ge 3$}:
\State $a\gets bad$
\Else
\State $a\gets unusable$
\EndIf
\end{algorithmic}
\end{document}

документ, который генерируется / используется: https://drive.google.com/file/d/1P16FMHc1Pkd897G448Zd_6pgmnoWQLGt/view?usp=sharing

1 Ответ

0 голосов
/ 08 октября 2018

Как обсуждено в комментариях - файл должен быть написан как utf8 и открыт с хорошим редактором как NOTEPAD ++.

    try (OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(txtFile), Charsets.UTF_8);
         PDDocument document = PDDocument.load(pdfFile))
    {
        PDFTextStripper stripper = new PDFTextStripper();
        stripper.writeText(document, out);
    }
...