1

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

显示错误

这是我的代码:

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”
  • 启用/禁用网页优化
  • 包括所有字体
  • 包括 Open-Type 字体

但总是相同的结果。

我可能做错了什么?

4

1 回答 1

1

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

  1. 您是否尝试启用 jpedal 日志记录?
//debug code
LogWriter.log_name="/yourpath/log.txt";
LogWriter.setupLogFile(true,0,"1.0","v",false);
  1. type为任意值的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;这里

于 2018-01-26T15:22:47.003 回答