package org.jabref.gui.documentviewer; import java.util.ArrayList; import java.util.List; import java.util.Objects; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; public class PdfDocumentViewModel extends DocumentViewModel { private final PDDocument document; public PdfDocumentViewModel(PDDocument document) { this.document = Objects.requireNonNull(document); this.maxPagesProperty().set(document.getNumberOfPages()); } @Override public ObservableList<DocumentPageViewModel> getPages() { @SuppressWarnings("unchecked") List<PDPage> pages = document.getDocumentCatalog().getAllPages(); // There is apparently no neat way to get the page number from a PDPage...thus this old-style for loop List<PdfDocumentPageViewModel> pdfPages = new ArrayList<>(); for (int i = 0; i < pages.size(); i++) { pdfPages.add(new PdfDocumentPageViewModel(pages.get(i), i + 1)); } return FXCollections.observableArrayList(pdfPages); } }