Делает pdf.js кэшировать PDF-файлы?

#javascript #java #pdf #webview #pdf.js

#javascript #java #PDF #webview #pdf.js

Вопрос:

Я пытаюсь интегрировать pdf.js в приложение Javafx. Я использую образец viewer.html от https://mozilla.github.io/pdf.js/getting_started /. Поэтому я загружаю viewer.html с пустым параметром file (поэтому сначала страница не отображается) в WebView. Затем я запускаю PDFViewerApplication.открыть из кода. При этом требуемый PDF-файл отображается нормально. Теперь, если я что-то изменю в PDF-файле и запущу PDFViewerApplication.откройте программу просмотра, которая перезагружается, но снова показывает старую версию 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);
    }
}
 

Есть 2 проблемы, которые, как я подозреваю, могут возникнуть:

  1. Существует проблема с CORS, которая крайне маловероятна, поскольку PDF загружается один раз
  2. PDF-файл кэшируется любым способом в pdf.js

Поскольку я подозреваю, что проблема 2 более вероятна, мои вопросы: есть ли pdf.js кэшировать PDF-файлы, и если да, то как я могу заставить его прекратить кэширование файлов? Если он не кэширует файлы PDF, что еще может быть причиной моей проблемы?

Ответ №1:

как я могу заставить его прекратить кэширование файлов?

Вопрос старый, но я добавляю ответ, поскольку недавно столкнулся с той же проблемой, и чтобы остановить кэширование файлов, я просто добавил случайную строку после URL-адреса pdf, например:

 {url}/100207300003.pdf?v678281
 

Это решило проблему с повторной загрузкой одного и того же файла снова и снова.

Ответ №2:

Вы говорите, что изменяете содержимое PDF, но неясно, как используется редактор PDF для сохранения изменений в полностью открытом файле.

Для редактирования требуется кэширование всего файла, чтобы вычислить внутреннюю длину файла между объектами PDF, если они добавляются или удаляются.

Естественно, мы можем добавить аннотацию в браузере, и тогда полная длина кэша с изменениями в конце может быть записана как новое имя файла.

Затем кэш можно закрыть, чтобы открыть с использованием нового имени файла. Открытие старого имени файла не будет включать никаких изменений.