improved PDF view

This commit is contained in:
2022-01-05 13:05:01 +01:00
parent 2fd9b896ee
commit bda39837f9
3 changed files with 40 additions and 30 deletions

View File

@@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>BelegScanner</groupId>
<artifactId>BelegScanner</artifactId>
<version>0.0.6</version>
<version>0.0.7</version>
<name>BelegScanner</name>
<packaging>jar</packaging>

View File

@@ -21,6 +21,7 @@ import javax.swing.JPanel;
import org.icepdf.ri.common.ComponentKeyBinding;
import org.icepdf.ri.common.SwingController;
import org.icepdf.ri.common.SwingViewBuilder;
import org.icepdf.ri.common.views.DocumentViewController;
import org.json.JSONArray;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -92,7 +93,7 @@ public class MainFrame extends JFrame {
.addPathListener(this::setPath)
.addScanListener(this::scan);
docTable.addPreviewListener(pdfViewer::openDocument);
docTable.addPreviewListener(this::preview);
int x = config.getOrCreate(APP_X, 20);
int y = config.getOrCreate(APP_Y, 20);
@@ -103,20 +104,6 @@ public class MainFrame extends JFrame {
setVisible(true);
}
private JPanel preview() {
// https://stackoverflow.com/a/48248739/1285585
pdfViewer = new SwingController();
SwingViewBuilder factory = new SwingViewBuilder(pdfViewer);
JPanel viewerComponentPanel = factory.buildViewerPanel();
ComponentKeyBinding.install(pdfViewer, viewerComponentPanel);
// add interactive mouse link annotation support via callback
pdfViewer.getDocumentViewController().setAnnotationCallback(new org.icepdf.ri.common.MyAnnotationCallback(pdfViewer.getDocumentViewController()));
return viewerComponentPanel;
}
private void addFieldsFor(String path) {
Vector<String> marks = new Vector<>();
Matcher matches = MARKEN.matcher(path);
@@ -219,6 +206,26 @@ public class MainFrame extends JFrame {
docTable.preview(path);
}
private JPanel preview() {
// https://stackoverflow.com/a/48248739/1285585
pdfViewer = new SwingController();
SwingViewBuilder factory = new SwingViewBuilder(pdfViewer);
JPanel viewerComponentPanel = factory.buildViewerPanel();
ComponentKeyBinding.install(pdfViewer, viewerComponentPanel);
// add interactive mouse link annotation support via callback
pdfViewer.getDocumentViewController().setAnnotationCallback(new org.icepdf.ri.common.MyAnnotationCallback(pdfViewer.getDocumentViewController()));
return viewerComponentPanel;
}
private void preview(String file) {
pdfViewer.openDocument(file);
//pdfViewer.setToolBarVisible(false);
pdfViewer.setPageFitMode(DocumentViewController.PAGE_FIT_WINDOW_WIDTH, false);
}
private void scan(ActionEvent ev) {
updateConfig();
new Thread(() -> performScan(patchedPath,dimension)).start();
@@ -253,6 +260,7 @@ public class MainFrame extends JFrame {
updatePath();
}
private void updateConfig() {
String prefix = "app.categories."+category+".";
@@ -298,5 +306,4 @@ public class MainFrame extends JFrame {
for (Entry<String, String> entry : fields.entrySet()) patchedPath = patchedPath.replace("$"+entry.getKey(), entry.getValue());
statusBar.setPath(patchedPath);
}
}

View File

@@ -11,6 +11,7 @@ import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.Vector;
import java.util.stream.Collectors;
@@ -121,18 +122,6 @@ public class Toolbar extends JPanel {
height.addKeyListener(dimensionListener);
}
protected void updateDimensions() {
LOG.debug("updateDimensions()");
try {
int w = Integer.parseInt(width.getText().trim());
int h = Integer.parseInt(height.getText().trim());
dimensionListeners.forEach(listener -> listener.setDimension(new Dimension(w < 0 ? 0 : w, h < 0 ? 0 : h)));
} catch (NumberFormatException e) {
LOG.warn("Invalid dimensions!");
}
}
public void addFieldsFor(Vector<String> marks) {
LOG.debug("addFieldsFor({})",marks);
@@ -182,7 +171,9 @@ public class Toolbar extends JPanel {
private Component categoryPicker(Configuration config) {
JSONObject elements = config.getOrCreate("app.categories",new JSONObject());
elements.keySet().forEach(categories::add);
Set<String> cats = elements.keySet().stream().map(Object::toString).map(String::trim).collect(Collectors.toSet());
categories = new Vector<>(cats);
categories.sort((a,b)->a.toString().compareTo(b.toString()));
return new SelectComboBox(categories).onUpdateText(this::updateCat);
}
@@ -284,6 +275,18 @@ public class Toolbar extends JPanel {
} else LOG.debug("newCat is empty!");
}
protected void updateDimensions() {
LOG.debug("updateDimensions()");
try {
int w = Integer.parseInt(width.getText().trim());
int h = Integer.parseInt(height.getText().trim());
dimensionListeners.forEach(listener -> listener.setDimension(new Dimension(w < 0 ? 0 : w, h < 0 ? 0 : h)));
} catch (NumberFormatException e) {
LOG.warn("Invalid dimensions!");
}
}
private void updateField(String name, String val) {
LOG.debug("updateField({},{})",name,val);
fieldListeners.forEach(l -> l.setField(name,val));