Ошибка отображения некоторых PDF-файлов с OpenViewerFX

Я использую OpenViewerFX (JPedal) для отображения файлов PDF в приложении JavaFX. Некоторые файлы отображаются хорошо, другие показывают только непечатаемые символы (в документах, созданных мной, а также в документах других людей). Смотрите, например, этот:

Ошибка дисплея

Это мой код:

private final PdfDecoderFX pdf = new PdfDecoderFX();
private Group group;

@Override
public void start(Stage stage) {

    BorderPane bp = new BorderPane();
    Scene scene = new Scene(bp, 400, 400);
    stage.setScene(scene);
    stage.show();

    group = new Group();
    group.getChildren().add(pdf);

    bp.setCenter(group);


    Platform.runLater(() -> {
        try {
            pdf.openPdfFile("D:\\Dokument1.pdf");
            decodePage();
        } catch (PdfException e) {
            e.printStackTrace();
            System.out.println(e.getMessage());
        }
    });
}

private void decodePage() {

    try {
        pdf.setPageParameters(2.0f, 0);
        pdf.decodePage(1);
        pdf.waitForDecodingToFinish();
    } catch (final Exception e) {
        e.printStackTrace();
        System.out.println(e.getMessage());
    }
}


Файл PDF был создан из документа Word на принтере Adobe PDF. Я использовал стандартный шрифт и только стандартные символы. Я протестировал несколько настроек при создании файла, в том числе

  • Совместимость "PDF 1.3" с "PDF 1.7"
  • Включить / отключить веб-оптимизацию
  • Включить все шрифты
  • Включить шрифты открытого типа

но всегда один и тот же результат.

Что я могу делать не так?

1 ответ

Похоже, проблема со шрифтом для меня. Вывод отладки помог мне в прошлом - по крайней мере, я увидел там какое-то сообщение об ошибке. Я не совсем уверен, какой был правильный вариант, но попробуйте следующее:

  1. Вы пытались включить ведение журнала jpedal?
//debug code
LogWriter.log_name="/yourpath/log.txt";
LogWriter.setupLogFile(true,0,"1.0","v",false);
  1. Что это org.jpedal.PdfDecoder.getPageDecodeStatus(int type) состояние, где типом является любое значение, определенное в org.jpedal.parser.DecodeStatus

  2. Мы используем исправленную версию ViewerFX - можете ли вы попробовать это?

  3. Вы уверены, что указали правильный путь к шрифту? Чтобы добавить весь каталог шрифтов через флаг JVM, установите флаг JVM -Dorg.jpedal.fontdirs=dirList где dirList - список возможных каталогов, разделенных запятыми.

  4. Какая у тебя ОС? Windows или Linx?

  5. Вы также попробовали -Dorg.jpedal.inclusiveLogFilter= "memory,error" Вариант JVM?

  6. Попробуйте установить -Dverbose=true

  7. Вызов GUI.debugFX=true; смотрите здесь.

Другие вопросы по тегам