Ошибка отображения некоторых 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 ответ
Похоже, проблема со шрифтом для меня. Вывод отладки помог мне в прошлом - по крайней мере, я увидел там какое-то сообщение об ошибке. Я не совсем уверен, какой был правильный вариант, но попробуйте следующее:
- Вы пытались включить ведение журнала jpedal?
//debug code LogWriter.log_name="/yourpath/log.txt"; LogWriter.setupLogFile(true,0,"1.0","v",false);
Что это
org.jpedal.PdfDecoder.getPageDecodeStatus(int type)
состояние, где типом является любое значение, определенное вorg.jpedal.parser.DecodeStatus
Мы используем исправленную версию ViewerFX - можете ли вы попробовать это?
Вы уверены, что указали правильный путь к шрифту? Чтобы добавить весь каталог шрифтов через флаг JVM, установите флаг JVM
-Dorg.jpedal.fontdirs=dirList
где dirList - список возможных каталогов, разделенных запятыми.Какая у тебя ОС? Windows или Linx?
Вы также попробовали
-Dorg.jpedal.inclusiveLogFilter= "memory,error"
Вариант JVM?Попробуйте установить
-Dverbose=true
Вызов
GUI.debugFX=true;
смотрите здесь.