Introduce PDF viewer
authorMathieu Baudier <mbaudier@argeo.org>
Mon, 9 May 2022 04:49:24 +0000 (06:49 +0200)
committerMathieu Baudier <mbaudier@argeo.org>
Mon, 9 May 2022 04:49:24 +0000 (06:49 +0200)
org.argeo.app.ui/src/org/argeo/app/ui/publish/PdfViewer.java [new file with mode: 0644]

diff --git a/org.argeo.app.ui/src/org/argeo/app/ui/publish/PdfViewer.java b/org.argeo.app.ui/src/org/argeo/app/ui/publish/PdfViewer.java
new file mode 100644 (file)
index 0000000..38d995f
--- /dev/null
@@ -0,0 +1,37 @@
+package org.argeo.app.ui.publish;
+
+import java.awt.image.BufferedImage;
+import java.nio.file.Paths;
+
+import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.pdfbox.rendering.PDFRenderer;
+import org.argeo.eclipse.ui.specific.BufferedImageDisplay;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+
+public class PdfViewer {
+       public static void main(String[] args) throws Exception {
+               PDDocument doc = PDDocument.load(Paths.get(args[0]).toFile());
+               PDFRenderer renderer = new PDFRenderer(doc);
+
+               BufferedImage image = renderer.renderImageWithDPI(0, 300);
+
+               Display display = new Display();
+               Shell shell = new Shell(display);
+               shell.setLayout(new FillLayout());
+
+               shell.setSize(200, 200);
+
+               BufferedImageDisplay imageDisplay = new BufferedImageDisplay(shell, SWT.NONE);
+               imageDisplay.setImage(image);
+
+               shell.open();
+               while (!shell.isDisposed()) {
+                       if (!display.readAndDispatch())
+                               display.sleep();
+               }
+               display.dispose();
+       }
+}