PDF-Files laden und anzeigen

jorgeHX

Erfahrenes Mitglied
Hallo zusammen,
ich würde gerne PDF-Files in einer Pane anzeigen. Dafür müsste ich aber wissen, wie man solche Files lädt und eben anzeigen kann....

Wäre cool, wenn mir jemand weiterhelfen könnte.

Danke
 
Ist das Teil kostenpflichtig bzw. kann ich mein Programm weitervermarkten, wenn ich diesen Reader einbaue

Danke
 
Hallo!

Schau mal hier:
Code:
/**
 * 
 */
package de.tutorials;

import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.ole.win32.OleAutomation;
import org.eclipse.swt.ole.win32.OleClientSite;
import org.eclipse.swt.ole.win32.OleFrame;
import org.eclipse.swt.ole.win32.Variant;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

/**
 * @author Administrator
 * 
 */
public class SWTPDFViewer {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Display display = new Display();
        Shell shell = new Shell(display);

        shell.setText("SWTPDFViewer");
        shell.setLayout(new FillLayout());

        OleFrame frm = new OleFrame(shell, SWT.NONE);

        OleClientSite site = new OleClientSite(frm, SWT.NONE, "PDF.PdfCtrl.6");
        OleAutomation auto = new OleAutomation(site);

        shell.open();

        int[] rgdispid = auto.getIDsOfNames(new String[] { "LoadFile" });
        int dispIdMember = rgdispid[0];

        Variant[] rgvarg = new Variant[1];
        rgvarg[0] = new Variant(
                "C:/Dokumente und Einstellungen/Administrator/Desktop/pdfs/Tutorial-1.2.2.pdf");

        Variant pVarResult = auto.invoke(dispIdMember, rgvarg);

        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) {
                display.sleep();
            }
        }

        int[] rgdispReleaseId = auto.getIDsOfNames(new String[] { "Release" });
        int dispIdMemberRelease = rgdispReleaseId[0];

        System.out.println(auto.invoke(dispIdMemberRelease));

        auto.dispose();

        frm.dispose();

        site.deactivateInPlaceClient();
        site.dispose();

    }
}

http://www-128.ibm.com/developerworks/library/os-activex/

Gruß Tom
 
Hi Tom,
saucooles Teil,
besteht auch irgendwie die Möglichkeit, dass ich nur die PDF-File in meiner Pane anzeigen kann ohne die oberen und seitliche Menübar?

Ist das Teil auch wirklich kostenlos und kann ich gegebenfalls in ein kleines Prog einbauen, dass ich an meine Uni verhökern will?

Tausenddank
 
Hallo zusammen,
ich benötige immernoch Hilfe beim Laden einer PDF. Toms Beispiel ist ziemlich geil und man den Code gut für eine Vollansicht nutzen.
Ich will aber nur eine PDF-File in meine TabPane laden und anzeigen lassen. Ohne irgendwelche Acrobet-Reader Funktionen einzublenden...

Ich hoffe super doll, dass das irgendwie möglich ist...
Wenn jemand eine Idee hat, so postet doch bitte...
Tausend Dank,
Jorge
 
Hallo,
ich bin noch immer auf der Suche nach einer möglichst einfachen Weise, PDF-Files in einem JPanel anzeigen zu können. Mehr soll das ganze Teil nicht können. Ich will lediglich den Pfad einer PDF-Datei angeben und schon wird diese Datei in einem JPanel angezeigt.

Irgendwie finde ich nur komplexe Sachen, die viel mehr als das können. Hat nicht jemand eine Idee, wie das gehen könnte?
Toms Idee ist schon cool, nur wird das Progamm eigenständig gestartet.

Es wäre super dringend... Danke
 
Ich versuche jetzt anstelle einer Shell, das Ganze in einem JPanel anzuzeigen? Geht das überhaupt?

Mein Problem ist, dass ich bislang ein ImageIcon (also ein Component) in mein BorderLayout geladen haben. Nun will ich aber mit SWT ein PDF dorthinein laden...

Ich hoffe wirklich, dass mir jemand weiterhelfen kann....

DANKE
 
Zuletzt bearbeitet:
Hallo!

Um den Acrobat ohne Toolbar zu laden könntest du mal folgendes Versuchen ...
(Habe übrigens gerade gemerkt, dass das ganze mit Acrobat 7 NICHT funktioniert ... auch wenn ich die AppID entsprechend anpasse...)

Weiterhin könntest du das PDF DOkument über SWT / Swing Integration in einem TabbedPane öffnen.

Code:
/**
 * 
 */
package de.tutorials;

import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.ole.win32.OleAutomation;
import org.eclipse.swt.ole.win32.OleClientSite;
import org.eclipse.swt.ole.win32.OleFrame;
import org.eclipse.swt.ole.win32.Variant;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

/**
 * @author Administrator
 */
public class SWTPdfViewer {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Display display = new Display();
		Shell shell = new Shell(display);

		shell.setText("SWTPDFViewer");
		shell.setLayout(new FillLayout());

		OleFrame frm = new OleFrame(shell, SWT.NONE);

		OleClientSite site = new OleClientSite(frm, SWT.NONE, "PDF.PdfCtrl.6");
		OleAutomation auto = new OleAutomation(site);

		shell.open();

		int[] rgdispid = auto.getIDsOfNames(new String[] { "LoadFile" });
		int dispIdMember = rgdispid[0];

		Variant[] rgvarg = new Variant[1];
		rgvarg[0] = new Variant(
				"C:/Dokumente und Einstellungen/Tom/Desktop/PDF's/ejb-2_1-fr-spec.pdf");

		Variant pVarResult = auto.invoke(dispIdMember, rgvarg);

		rgdispid = auto.getIDsOfNames(new String[] { "setShowToolbar" });
		dispIdMember = rgdispid[0];
		rgvarg = new Variant[1];
		rgvarg[0] = new Variant(false);
		pVarResult = auto.invoke(dispIdMember, rgvarg);

		while (!shell.isDisposed()) {
			if (!display.readAndDispatch()) {
				display.sleep();
			}
		}

		int[] rgdispReleaseId = auto.getIDsOfNames(new String[] { "Release" });
		int dispIdMemberRelease = rgdispReleaseId[0];

		System.out.println(auto.invoke(dispIdMemberRelease));

		auto.dispose();

		frm.dispose();

		site.deactivateInPlaceClient();
		site.dispose();

	}
}

Gruß Tom
 
Zurück