Announcement

Collapse
No announcement yet.

PDF Datei einbinden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • PDF Datei einbinden

    Guten Abend zusammen,

    gibt es eine Möglichkeit eine PDF Datei in die programmierte App einzufügen (bspw. res/drawable-hdpi) und dann mit Hilfe eines Viewers die PDF anzeigen zu lassen?
    Wäre toll wenn man diesen Viewer ebenfalls in die App einbinden könnte. Also das man nicht extra im Playstore einen herunterladen muss. (Falls jemand so etwas wirklich nicht besitzt)

    Ich habe zwar schon Möglichkeiten gefunden, dass man die PDF von der SD-Karte anzeigen lassen kann, möchte ich aber nicht.

    Beispiel:

    Ich klicke einen Button, eine Klasse wird gestartet welche die PDF Datei einfach nur anzeigt (welche sich direkt in der App befindet)

    Ich hoffe das war Verständlich.
    Gruß
    Iloivar

  • #2
    Hat wirklich keiner eine Idee?

    Ich habe es jetzt folgendermaßen probiert:

    Code:
    package com.example.programm;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.webkit.WebView;
    import android.webkit.WebViewClient;
    
    public class Klasse extends Activity{
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		// TODO Auto-generated method stub
    		super.onCreate(savedInstanceState);
    		
    		WebView varpdf = (WebView) findViewById(R.id.wvPDF);
    		varpdf.loadUrl("http://www.google.de");
    		varpdf.setWebViewClient(new WebViewClient());
    	}
    	
    }
    Ich würde dann statt die URL : "http://www.google.de" einfach einen Link der PDF aus der Dropbox nehmen, oder einen Link über Google Docs.

    Das Problem ist, dass nichtmal die jetzt vorhandene URL funktioniert

    Wäre echt toll wenn jemand helfen kann...
    verzweifel langsam
    Gruß
    Iloivar

    Comment


    • #3
      Da du keinen extra Viewer willst, wird es schwierig. Kaum einer schreibt einen eigenen Reader.
      Christian

      Comment


      • #4
        Ja ist mir leider auch aufgefallen...

        Und den WebView würde ich auch benutzen.

        Mein aktueller Stand ist folgender:

        Code:
         
        
        public class Klasse extends Activity{
        
        	@Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                WebView webView=new WebView(Klasse.this);
                webView.getSettings().setJavaScriptEnabled(true);
                webView.getSettings().setPluginState(PluginState.ON);
        
                webView.setWebViewClient(new Callback());
               
                String pdfURL = "https://www.dropbox.com/Dateipfad";
                webView.loadUrl("http://docs.google.com/gview?embedded=true&url=" + pdfURL);
        
                setContentView(webView);
            }
        
            private class Callback extends WebViewClient {
                @Override
                public boolean shouldOverrideUrlLoading(
                        WebView view, String url) {
                    return(false);
                }
            }
        }
        Allerdings bekomme ich hier nur irgendeinen Code angezeigt und nicht die PDF-Datei selbst.

        Wenn du noch andere Vorschläge hast --> bin ab jetzt für alles offen
        Gruß
        Iloivar

        Comment


        • #5
          Guten Abend,

          der Kampf ist endlich vorbei...

          Falls das mal jemand brauchen sollte hier die Lösung:

          Code:
          package com.example.package;
          
          
          import android.annotation.SuppressLint;
          import android.app.Activity;
          import android.app.ProgressDialog;
          import android.os.Bundle;
          import android.webkit.WebView;
          import android.webkit.WebViewClient;    
          import android.os.Bundle;
          
          public class Klasse extends Activity{
          
              private WebView webView;
              Activity activity ; 
              private ProgressDialog progDailog;  // loader 
              String GoogleDocs="http://docs.google.com/gview?embedded=true&url="; 
                                               // Google Docs URL
            
                 @Override
              public void onCreate(Bundle savedInstanceState) {
                  super.onCreate(savedInstanceState);
                  setContentView(R.layout.strafenkatalog);
          
                  activity = this;       
                  progDailog = ProgressDialog.show(activity, "Loading","Please wait...", true);
                  progDailog.setCancelable(false);       
                 webView = (WebView) findViewById(R.id.webview_compontent);      
                 
              
                 webView.getSettings().setJavaScriptEnabled(true);    
                 webView.getSettings().setLoadWithOverviewMode(true);
                 webView.getSettings().setUseWideViewPort(true);      
                 //Download Status
                  webView.setWebViewClient(new WebViewClient(){
                     
                      @Override
                      public boolean shouldOverrideUrlLoading(WebView view, String url) {
                          progDailog.show();
                          view.loadUrl(url);
                      
                          return true;               
                      }
                      @Override
                      public void onPageFinished(WebView view, final String url) {
                          progDailog.dismiss();
                      }
                  });
                 
                  webView.loadUrl(GoogleDocs+"hierdieurl.pdf");   // Hier die PDF-URL eingeben
           }  
           
          }
          Folgendes in die XML:

          Code:
          <?xml version="1.0" encoding="utf-8"?>
          <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              > 
              
              <WebView  
                  android:id="@+id/webview_compontent"
                  android:layout_width="fill_parent" 
                  android:layout_height="fill_parent" 
                  android:layout_weight="1.0"   
              />
          </LinearLayout>
          Und natürlich nicht zu vergessen in die Android Manifest XML die Internet Permission eintragen:

          Code:
              <uses-permission android:name="android.permission.INTERNET" />
          Kann also hier geschlossen werden.
          Gruß
          Iloivar

          Comment


          • #6
            Die Webview ist zu Anzeige von Webseiten gedacht. Wenn ich also da eine PDF anzeige, wird entweder der interne Viewer des Browser genutzt oder der mit dem Browser verbundene externe Viewer. Warum nicht diesen dann dirket starten
            Christian

            Comment


            • #7
              Originally posted by Christian Marquardt View Post
              Die Webview ist zu Anzeige von Webseiten gedacht. Wenn ich also da eine PDF anzeige, wird entweder der interne Viewer des Browser genutzt oder der mit dem Browser verbundene externe Viewer. Warum nicht diesen dann dirket starten
              Mittlerweile bringen alle relevanten (alle, außer der IE) auch entsprechende Unterstützung für PDF mit. Also wieso externen Viewer starten wenn es ein WebKit selbst kann?

              Comment


              • #8
                WebView:

                Basic usage

                By default, a WebView provides no browser-like widgets, does not enable JavaScript and web page errors are ignored. If your goal is only to display some HTML as a part of your UI, this is probably fine; the user won't need to interact with the web page beyond reading it, and the web page won't need to interact with the user. If you actually want a full-blown web browser, then you probably want to invoke the Browser application with a URL Intent rather than show it with a WebView. For example:
                Das wird den externen starten müssen
                Christian

                Comment


                • #9
                  Da bin ich auch schon wieder :|
                  Was soll ich sagen...aller Anfang ist schwer

                  ich war so froh das es endlich funktioniert, dass ich es nicht ausführlich getestet habe.

                  Folgendes funktionert:

                  Code:
                  webView.loadUrl(GoogleDocs+"http://178.239.16.28/fzs/sites/default/files/dokumenti-vijesti/sample.pdf");
                  Dies ist ein Beispiel, welche ich im Internet gefunden habe.

                  Wenn ich jedoch einfach eine Datei (bspw in der Dropbox) Freigebe und den Link eingebe, wird mir nur HTML-Code angezeigt.
                  Ich kann mir vorstellen das die Lösung/ der Grund relativ einfach ist, ich komme jedoch nicht drauf.

                  Kann mir da jemand weiterhelfen?
                  Gruß
                  Iloivar

                  Comment


                  • #10
                    Was passiert denn wenn Du dieselbe URL einfach im Browser aufmachst?

                    Comment


                    • #11
                      Wenn ich den Dropbox Link in Chrome oder im Internet Explorer öffne wird mir die PDF Datei angezeigt.

                      Ich hab das ganze jetzt auch mal auf meinem Tablet im Firefox, Chrome und im Samsung Browser (der einfach Internet heißt) geöffnet.
                      Hier wird mir nur die Option gegeben die Datei herunterzuladen. Also die PDF-Datei wird nicht angezeigt.
                      Gruß
                      Iloivar

                      Comment


                      • #12
                        Was soll den nun gemacht werden?
                        Runterladen ist doch etwas anderes als

                        welche die PDF Datei einfach nur anzeigt (welche sich direkt in der App befindet)
                        Wenn die Browser eine Datei zum runterladen anbieten, ist üblicherweise kein PDF-Reader dem Browser bekannt.
                        Christian

                        Comment


                        • #13
                          Ich möchte das die Datei in einem Browser direkt angezeigt wird, so wie es auch auf dem PC funktioniert.

                          Und für mich noch zum Verständnis.
                          Warum funktioniert das ganze denn mit folgendem Link:

                          http://178.239.16.28/fzs/sites/defau...sti/sample.pdf

                          und mit dem aus der Dropbox nicht?

                          Im Prinzip benutze ich ja in meinem Code bei beiden Links Google Docs zur Anzeige...
                          also:
                          http://docs.google.com/gview?embedde...sti/sample.pdf
                          Gruß
                          Iloivar

                          Comment


                          • #14
                            Dazu muss der Browser einen PDF-Reader installiert haben oder das von Hause aus können.

                            Hinsichtlich der Dropbox musst du dir mal den Response-Header anschauen, was dort ankommt

                            Im Prinzip benutze ich ja in meinem Code bei beiden Links Google Docs zur Anzeige...
                            Das ist ja nun noch etwas anderes. Da kommt kein PDF, sondern HTML. Und irgendein google-Murks zeigt das PDF in irgendeinem Javascript-Google-Viewer an
                            Zuletzt editiert von Christian Marquardt; 02.07.2014, 18:28.
                            Christian

                            Comment


                            • #15
                              Hallo habe Deinen Vorschlag ausprobiert, aber leider bekomme ich einen Fehler angezeigt:
                              fehler.jpg

                              Code Manifest:
                              <?xml version="1.0" encoding="utf-8"?>
                              <manifest xmlns:android="http://schemas.android.com/apk/res/android"
                              package="com.example.wosi34.webviewdropbox">

                              <application
                              android:allowBackup="true"
                              android:icon="@mipmap/ic_launcher"
                              android:label="@string/app_name"
                              android:supportsRtl="true"
                              android:theme="@style/AppTheme">
                              <activity android:name=".Klasse">
                              <intent-filter>
                              <action android:name="android.intent.action.MAIN" />

                              <category android:name="android.intent.category.LAUNCHER" />
                              </intent-filter>
                              </activity>
                              </application>
                              <uses-permission android:name="android.permission.INTERNET" />
                              </manifest>

                              Code Klasse

                              package com.example.wosi34.webviewdropbox;

                              import android.annotation.SuppressLint;
                              import android.app.Activity;
                              import android.app.ProgressDialog;
                              import android.os.Bundle;
                              import android.webkit.WebView;
                              import android.webkit.WebViewClient;
                              import android.os.Bundle;

                              class Klasse extends Activity{

                              private WebView webView;
                              Activity activity ;
                              private ProgressDialog progDailog; // loader
                              String GoogleDocs="http://docs.google.com/gview?embedded=true&url=";
                              // Google Docs URL

                              @Override
                              public void onCreate(Bundle savedInstanceState) {
                              super.onCreate(savedInstanceState);
                              setContentView(R.layout.strafenkatalog);

                              activity = this;
                              progDailog = ProgressDialog.show(activity, "Loading","Please wait...", true);
                              progDailog.setCancelable(false);
                              webView = (WebView) findViewById(R.id.webview_compontent);


                              webView.getSettings().setJavaScriptEnabled(true);
                              webView.getSettings().setLoadWithOverviewMode(true );
                              webView.getSettings().setUseWideViewPort(true);
                              //Download Status
                              webView.setWebViewClient(new WebViewClient(){

                              @Override
                              public boolean shouldOverrideUrlLoading(WebView view, String url) {
                              progDailog.show();
                              view.loadUrl(url);

                              return true;
                              }
                              @Override
                              public void onPageFinished(WebView view, final String url) {
                              progDailog.dismiss();
                              }
                              });

                              webView.loadUrl(GoogleDocs+"http://www.stoag.de/fileadmin/bilder/content/Dienstplan/Dienstplan_12.06.2016/TA11/Diensterklaerung_TA_11_E-Bus.pdf"); // Hier die PDF-URL eingeben
                              }

                              }


                              Code activity_main:

                              <?xml version="1.0" encoding="utf-8"?>
                              <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                              androidrientation="vertical"
                              android:layout_width="fill_parent"
                              android:layout_height="fill_parent"
                              >

                              <WebView
                              android:id="@+id/webview_compontent"
                              android:layout_width="fill_parent"
                              android:layout_height="fill_parent"
                              android:layout_weight="1.0"
                              />
                              </LinearLayout>


                              Code strafkatalog:

                              <?xml version="1.0" encoding="utf-8"?>
                              <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                              androidrientation="vertical" android:layout_width="match_parent"
                              android:layout_height="match_parent">

                              </LinearLayout>


                              Code build.gradle:

                              apply plugin: 'com.android.application'

                              android {
                              compileSdkVersion 24
                              buildToolsVersion "24.0.2"

                              defaultConfig {
                              applicationId "com.example.wosi34.webviewdropbox"
                              minSdkVersion 16
                              targetSdkVersion 24
                              versionCode 1
                              versionName "1.0"
                              }
                              buildTypes {
                              release {
                              minifyEnabled false
                              proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
                              }
                              }
                              }

                              dependencies {
                              compile fileTree(dir: 'libs', include: ['*.jar'])
                              testCompile 'junit:junit:4.12'
                              compile 'com.android.support:appcompat-v7:24.2.0'
                              }

                              Vielleicht kannst du und ein anderer mir sagen , warum der Fehler angezeigt wird und nicht die Datei angezeigt wird.

                              Gruß wosi34

                              Comment

                              Working...
                              X