pdf.js缓存pdf文件吗



我正在尝试将pdf.js集成到Javafx应用程序中。我使用的示例viewer.html来自https://mozilla.github.io/pdf.js/getting_started/.因此,我在WebView中加载带有空文件参数的viewer.html(因此一开始不会呈现任何页面(。然后我从代码中运行PDFViewerApplication.open。这样做,所需的PDF就可以很好地呈现出来。现在,如果我更改了PDF中的某些内容并运行PDFViewerApplication.open查看器会重新加载,但会再次显示旧版本的PDF。

我正在努力实现的一个最小的例子:

public class Test extends Application {
@Override
public void start(Stage stage) throws Exception {
HBox root = new HBox();
Scene scene = new Scene(root);
WebView webView = new WebView();
root.getChildren().add(webView);
Button btn = new Button("load");
btn.setOnAction(event -> {
try {
webView.getEngine().executeScript("PDFViewerApplication.open("" + new File("latex/invoice.pdf").toURI().toURL().toString() + "");");
} catch (MalformedURLException e) {
e.printStackTrace();
}
});
root.getChildren().add(btn);
stage.setScene(scene);
stage.show();
webView.getEngine().load(new File("js/web/viewer.html").toURI().toURL().toString());
}
public static void main(String[] args) {
launch(args);
}
}

我怀疑有两个问题可能发生:

  1. CORS出现问题,这是极不可能的,因为PDF加载一次
  2. pdf文件以任何方式缓存在pdf.js中

因为我怀疑问题2更有可能,所以我的问题是:pdf.js缓存pdf文件吗?如果缓存了,我如何让它停止缓存文件?如果它确实noch缓存PDF文件,还有什么可能是我问题的原因?

如何使其停止缓存文件?

这个问题很老了,但我正在添加一个答案,因为我最近遇到了同样的问题,为了停止缓存文件,我只是在pdf URL后面添加了一个随机字符串,比如:

{url}/100207300003.pdf?v678281

这解决了一次又一次加载相同文件的问题。

您说您正在更改PDF内容,但不清楚如何使用PDF编辑器将更改保存到完全打开的文件。

编辑需要缓存完整的文件,以便计算添加或删除PDF对象时PDF对象之间的内部文件长度。

当然,我们可以在浏览器中添加注释,然后可以将缓存的全长(末尾有更改(写入新的文件名。

然后可以关闭缓存,以便使用新文件名打开。打开旧文件名将不包括任何更改。

最新更新