使用OpenViewerFX显示某些PDF时出错

时间:2018-01-25 08:00:29

标签: java pdf javafx openviewerfx

我正在使用 OpenViewerFX (JPedal)在 JavaFX 应用程序中显示 PDF文件。某些文件显示良好,其他文件只显示不可打印的字符(在我自己创建的文档中以及其他人的文档中)。 例如,见这个:

Display error

这是我的代码:

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文件是使用 Adob​​e PDF 打印机从Word文档创建的。我使用标准字体仅标准字符。我在创建文件时测试了几个设置,包括

  • 兼容性“PDF 1.3”至“PDF 1.7”
  • 启用/禁用网络优化
  • 包含所有字体
  • 包含开放式字体

但总是一样的结果。

我可能做错了什么?

1 个答案:

答案 0 :(得分:1)

对我来说似乎是一个字体问题。调试输出在过去帮助了我 - 至少我看到了一些错误消息。我不太确定正确的选项是什么,但请尝试以下方法:

  1. 您是否尝试启用jpedal日志记录?
  2. //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的修补版本 - 您可以试试one吗?

    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;,请参阅here