Java 使用OpenViewerFX显示某些PDF时出错
我正在使用OpenViewerFX(JPedal)在JavaFX应用程序中显示PDF文件。有些文件显示得很好,而另一些文件只显示不可打印的字符(在我自己创建的文档以及其他人创建的文档中)。 例如,请参见以下示例: 这是我的代码:Java 使用OpenViewerFX显示某些PDF时出错,java,pdf,javafx,openviewerfx,Java,Pdf,Javafx,Openviewerfx,我正在使用OpenViewerFX(JPedal)在JavaFX应用程序中显示PDF文件。有些文件显示得很好,而另一些文件只显示不可打印的字符(在我自己创建的文档以及其他人创建的文档中)。 例如,请参见以下示例: 这是我的代码: private final PdfDecoderFX pdf = new PdfDecoderFX(); private Group group; @Override public void start(Stage stage) { BorderPane
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文件是使用Adobe PDF打印机从Word文档创建的。我使用了标准字体和仅使用标准字符。我在创建文件时测试了几个设置,包括
- 兼容“PDF 1.3”到“PDF 1.7”
- 启用/禁用web优化
- 包括所有字体
- 包括开放式字体
我可能做错了什么?对我来说似乎是字体问题。调试输出在过去帮助了我——至少我在那里看到了一些错误消息。我不太确定正确的选项是什么,但请尝试以下方法:
org.jpedal.PdfDecoder.getPageDecodeStatus(int-type)
说明了什么,其中type是在org.jpedal.parser.DecodeStatus中定义的任何值
-Dorg.jpedal.fontdirs=dirList
,其中dirList是以逗号分隔的可能目录列表-Dorg.jpedal.inclusiveLogFilter=“memory,error”
JVM选项-Dverbose=true
GUI.debugFX=true代码>请参阅
谢谢你的提示。我还没有尝试登录。我将在周一回来工作时测试它,并给你回复。我测试了你的建议,下面是我的结果:1。日志显示一个文档的“未知字体”不起作用,但不是所有2个文档。无法测试,因为“org.jpedal.parser.DecodeStatus”不存在(也不在任何其他包中)3。使用此版本不会改变任何内容4。添加JVM标志没有帮助(根本不需要,因为我在PDF中嵌入了字体)。不适用于Windows或Linux 6。程序不使用此选项启动(主类内存,无法找到或加载错误)7。添加此选项后,似乎什么也不做8。-->编译器错误“无法分配最终字段GUI.debugFx”我测试了IcePDF,它适用于所有测试的PDF文件,将切换到此。谢谢你的有用提示,+1
//debug code
LogWriter.log_name="/yourpath/log.txt";
LogWriter.setupLogFile(true,0,"1.0","v",false);