Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

PDF Viewer u Androidu

[es] :: Java :: PDF Viewer u Androidu

[ Pregleda: 1779 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

gojic
Indjija,Srbija

Član broj: 276886
Poruke: 28
*.dynamic.isp.telekom.rs.



Profil

icon PDF Viewer u Androidu29.04.2017. u 17:21 - pre 84 meseci
Pozdrav.

Pravim aplikaciju koja se sastoji od prve strane nakoji ce biti lista knjiga.Kada se klikne na sliku knjige korisnik ce moci da prelista,nesto kao besplatan uzorak.Dakle prvih par stranica i isto toliko poslednjih stranica.
Planirao sam to da uradim sa intentom. Dakle kad neko klikne sliku knjige pomocu click listenera i intenta se otvara nova java klasa u kojoj bi mi bio pdf fajl koji zelim da bude prikazan.Bio bi prikazan pomocu PDF VIewera.Medjutim iako nemam nikakvu run-time gresku na telefonu mi izbacuje gresku da se moja aplikacija zaustavila.

Sigurno meni logika ne valja. Ne znam ni koliko mi je sam intent problem zato sto kad stavim toast u intent , poruka se normalno prikazuje prilikom klikom na sliku knjige. Onog momenta kad stavim u intent da se otvori java klasa sa pdf fajlom koji zelim da prikazem na telefonu, desi se ta greska.

Ubacio sam u build grade biblioteku iz koje uzimam pdf viewer:
Code:
compile 'com.github.barteksc:android-pdf-viewer:2.3.0'


XML kod glavne stranice gde mi se nalazi lista knjiga:
Code:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true">

    <RelativeLayout xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/activity_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.dsk.android.decijisvetknjiga.MainActivity">

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#3498DB">


                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"
                    android:layout_alignParentTop="true"
                    android:orientation="horizontal">

                    <ImageView
                        android:id="@+id/slika_1"
                        android:layout_width="125dp"
                        android:layout_height="175dp"
                        android:layout_margin="5dp"
                        android:scaleType="centerCrop"
                        android:src="@drawable/placeholder" />

                    <TextView
                        android:id="@+id/naziv_knjige_1"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginLeft="22dp"
                        android:layout_weight="1"
                        android:text="Naziv knjige"
                        android:textSize="16sp"
                        android:textStyle="bold|italic" />

                    <TextView
                        android:id="@+id/cena_1"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginLeft="50dp"
                        android:layout_weight="1"
                        android:text="00 RSD"
                        android:textSize="16sp"
                        android:textStyle="bold" />
                </LinearLayout>


            </RelativeLayout>

            <TextView
                android:layout_width="match_parent"
                android:layout_height="1dp" />

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#3498DB">


                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"
                    android:layout_alignParentTop="true"
                    android:orientation="horizontal">

                    <ImageView
                        android:id="@+id/slika_2"
                        android:layout_width="125dp"
                        android:layout_height="175dp"
                        android:layout_margin="5dp"
                        android:scaleType="centerCrop"
                        android:src="@drawable/placeholder" />

                    <TextView
                        android:id="@+id/naziv_knjige_2"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginLeft="22dp"
                        android:layout_weight="1"
                        android:text="Naziv knjige"
                        android:textSize="16sp"
                        android:textStyle="bold|italic" />

                    <TextView
                        android:id="@+id/cena_2"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginLeft="50dp"
                        android:layout_weight="1"
                        android:text="00 RSD"
                        android:textSize="16sp"
                        android:textStyle="bold" />
                </LinearLayout>

            </RelativeLayout>

            <TextView
                android:layout_width="match_parent"
                android:layout_height="1dp" />

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#3498DB">


                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal">

                    <ImageView
                        android:id="@+id/slika_3"
                        android:layout_width="125dp"
                        android:layout_height="175dp"
                        android:layout_margin="5dp"
                        android:scaleType="centerCrop"
                        android:src="@drawable/placeholder" />

                    <TextView
                        android:id="@+id/naziv_knjige_3"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginLeft="22dp"
                        android:layout_weight="1"
                        android:text="Naziv knjige"
                        android:textSize="16sp"
                        android:textStyle="bold|italic" />

                    <TextView
                        android:id="@+id/cena_3"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginLeft="50dp"
                        android:layout_weight="1"
                        android:text="00 RSD"
                        android:textSize="16sp"
                        android:textStyle="bold" />
                </LinearLayout>


            </RelativeLayout>

            <TextView
                android:layout_width="match_parent"
                android:layout_height="1dp" />

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#3498DB">


                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal">

                    <ImageView
                        android:id="@+id/slika_4"
                        android:layout_width="125dp"
                        android:layout_height="175dp"
                        android:layout_margin="5dp"
                        android:scaleType="centerCrop"
                        android:src="@drawable/placeholder" />

                    <TextView
                        android:id="@+id/naziv_knjige_4"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginLeft="22dp"
                        android:layout_weight="1"
                        android:text="Naziv knjige"
                        android:textSize="16sp"
                        android:textStyle="bold|italic" />

                    <TextView
                        android:id="@+id/cena_4"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginLeft="50dp"
                        android:layout_weight="1"
                        android:text="00 RSD"
                        android:textSize="16sp"
                        android:textStyle="bold" />
                </LinearLayout>


            </RelativeLayout>

            <TextView
                android:layout_width="match_parent"
                android:layout_height="1dp" />

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="#3498DB">


                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal">

                    <ImageView
                        android:id="@+id/slika_5"
                        android:layout_width="125dp"
                        android:layout_height="175dp"
                        android:layout_margin="5dp"
                        android:scaleType="centerCrop"
                        android:src="@drawable/placeholder" />

                    <TextView
                        android:id="@+id/naziv_knjige_5"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginLeft="22dp"
                        android:layout_weight="1"
                        android:text="Naziv knjige"
                        android:textSize="16sp"
                        android:textStyle="bold|italic" />

                    <TextView
                        android:id="@+id/cena_5"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginLeft="50dp"
                        android:layout_weight="1"
                        android:text="00 RSD"
                        android:textSize="16sp"
                        android:textStyle="bold" />
                </LinearLayout>
            </RelativeLayout>

            <TextView
                android:layout_width="match_parent"
                android:layout_height="1dp" />

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="#3498DB">


                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal">

                    <ImageView
                        android:id="@+id/slika_6"
                        android:layout_width="125dp"
                        android:layout_height="175dp"
                        android:layout_margin="5dp"
                        android:scaleType="centerCrop"
                        android:src="@drawable/placeholder" />

                    <TextView
                        android:id="@+id/naziv_knjige_6"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginLeft="22dp"
                        android:layout_weight="1"
                        android:text="Naziv knjige"
                        android:textSize="16sp"
                        android:textStyle="bold|italic" />

                    <TextView
                        android:id="@+id/cena_6"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginLeft="50dp"
                        android:layout_weight="1"
                        android:text="00 RSD"
                        android:textSize="16sp"
                        android:textStyle="bold" />
                </LinearLayout>

            </RelativeLayout>

        </LinearLayout>
    </RelativeLayout>

</ScrollView>


Drugi XML kod gde mi se nalazi PDF Viewer:

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

    <com.github.barteksc.pdfviewer.PDFView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/prvi_pdf">
    </com.github.barteksc.pdfviewer.PDFView>

</LinearLayout>


Prvi java fajl gde mi se nalaze inten i onclick listeneri i intenti:
Code:
package com.dsk.android.decijisvetknjiga;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;

import com.github.barteksc.pdfviewer.PDFView;

public class MainActivity extends AppCompatActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        ImageView imgV1 = (ImageView) findViewById(R.id.slika_1);
        ImageView imgV2 = (ImageView) findViewById(R.id.slika_2);
        ImageView imgV3 = (ImageView) findViewById(R.id.slika_3);
        ImageView imgV4 = (ImageView) findViewById(R.id.slika_4);
        ImageView imgV5 = (ImageView) findViewById(R.id.slika_5);
        ImageView imgV6 = (ImageView) findViewById(R.id.slika_6);

        imgV1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(v.getContext(), "Prva Knjiga", Toast.LENGTH_SHORT).show();
                Intent prvaKnjiga = new Intent(MainActivity.this, PrvaKnjiga.class);
                startActivity(prvaKnjiga);
            }
        });
        imgV2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(v.getContext(), "Druga knjiga", Toast.LENGTH_SHORT).show();
            }
        });
        imgV3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(v.getContext(), "Treca knjiga", Toast.LENGTH_SHORT).show();
            }
        });
        imgV4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(v.getContext(), "Cetvrta knjiga", Toast.LENGTH_SHORT).show();
            }
        });
        imgV5.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(v.getContext(), "Peta knjiga", Toast.LENGTH_SHORT).show();
            }
        });
        imgV6.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(v.getContext(), "Sesta knjiga", Toast.LENGTH_SHORT).show();
            }
        });

    }

}


Drugi JAVA fajl sa PDF Viewrom:
Code:
package com.dsk.android.decijisvetknjiga;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import com.github.barteksc.pdfviewer.PDFView;


public class PrvaKnjiga extends AppCompatActivity{


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.prva_knjiga);

        PDFView pdfView  = (PDFView)findViewById(R.id.prvi_pdf);
        pdfView.fromAsset("loops.pdf").load();
    }
}

Intent sam ubacio samo u prvi onclisk listener kao probu cim sam video gresku nije bilo potrebe da se dalje trudim dok ne prokljuvim sta dalje.
 
Odgovor na temu

dusans
Stojanov Dušan
Pančevo

Član broj: 9551
Poruke: 1343
*.dynamic.sbb.rs.



+311 Profil

icon Re: PDF Viewer u Androidu29.04.2017. u 19:04 - pre 84 meseci
Citat:

Medjutim iako nemam nikakvu run-time gresku na telefonu mi izbacuje gresku da se moja aplikacija zaustavila


Onako, na prvu loptu, ne vidim ništa pogrešno u tvom kodu.
Da li si zakačio telefon na USB i uključio USB debugging? Šta dobijaš kao grešku onda u Android Studio-u?
Ako i dalje ne dobijaš tekst greške, probaj da staviš kod u try...catch i da ispišeš grešku sa log.e

https://developer.android.com/studio/debug/index.html
 
Odgovor na temu

gojic
Indjija,Srbija

Član broj: 276886
Poruke: 28
*.dynamic.isp.telekom.rs.



Profil

icon Re: PDF Viewer u Androidu29.04.2017. u 22:29 - pre 84 meseci
Pa to me i buni najvise. Kod sam po sebi je jednostavam da jednostavniji ne moze biti... U OnClick listeneru mi je kod koji zelim da se aktivira kad se dodirne zeljeno polje na ekranu,otvara se nova java klasa sa kodom koji zelim da se pokrene i to je to...ne vidim gde sam mogao da pogresim...

Hvala ti za link i za savet...sad je vez kasno, videcu sutra prvom prilikom to da probam

[Ovu poruku je menjao gojic dana 29.04.2017. u 23:47 GMT+1]
 
Odgovor na temu

iglig
Igor Iglič
Beograd, Srbija

Član broj: 300685
Poruke: 80



+16 Profil

icon Re: PDF Viewer u Androidu30.04.2017. u 00:57 - pre 84 meseci
Fali ti builder i par interfejsa, evo ti pa iskombinuj. Btw za API>=25 mora da se dobije dozvola korisnika radi pristupa ext. mem.
*edit, ova lib dodaje 64bit shared object i ako postoji još neka lib koja nudi samo 32bit verziju a nisi uradio Abi split onda će da puca na x64 telefonima.

Code:
//Ucitaj pdf sa eksterne memorije
        String exsterniPdf = intent.getStringExtra("exsterniPdf");
        if (exsterniPdf != null) {
            File externalFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath(), exsterniPdf);
            if(externalFile.exists()) displayFromFile(externalFile);
            else obavestiKorisnikaFajlNePostoji();
        }

Code:
private void displayFromFile(File file) {
        pdfView.fromFile(file)
                .defaultPage(pageNumber)
                .onPageChange(this)
                .enableAnnotationRendering(true)
                .onLoad(this)
                .scrollHandle(new DefaultScrollHandle(this))
                .load();
    }

Code:
@Override
    public void onPageChanged(int page, int pageCount) {
        pageNumber = page;
        setTitle(String.format("%s %s / %s", pdfFileName, page + 1, pageCount));
    }

    @Override
    public void loadComplete(int nbPages) {
        // logMetaData();
    }


[Ovu poruku je menjao iglig dana 30.04.2017. u 13:17 GMT+1]
 
Odgovor na temu

gojic
Indjija,Srbija

Član broj: 276886
Poruke: 28
*.dynamic.isp.telekom.rs.



Profil

icon Re: PDF Viewer u Androidu01.05.2017. u 10:07 - pre 84 meseci
Citat:
*edit, ova lib dodaje 64bit shared object i ako postoji još neka lib koja nudi samo 32bit verziju a nisi uradio Abi split onda će da puca na x64 telefonima.


Jel moze pomoci oko ovog?Znam sta je ABI,doduse povrsno,ali ne znam sta je ABI split?Ako te mrzi sa da mi obajsnjavas, jel mozes da me uputis na neki link u vezi ABI splita...pokusao sam da proguglam al nisam nasao zadovoljavajuc odgovor..
Hvala za ostatak, sad cu da probam pa javljam

EDIT ok resio sam problem. Problem je bio u tome sto sam u manifestu zaboravio da dodam sledeci kod:
Code:
 <activity
            android:name=".PrvaKnjiga"
            android:label="NAziv Prve Knjige"
            android:parentActivityName=".MainActivity"/>
        <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".MainActivity"></meta-data>
    </application>


Mada bih se mogao zakleti da sam ga dodao jos na pocetku...al bitno je da sad ne izbacuje gresku

[Ovu poruku je menjao gojic dana 01.05.2017. u 14:37 GMT+1]
 
Odgovor na temu

iglig
Igor Iglič
Beograd, Srbija

Član broj: 300685
Poruke: 80



+16 Profil

icon Re: PDF Viewer u Androidu01.05.2017. u 14:44 - pre 84 meseci
Abis &
so


Ova pdf lib dolazi i sa x64 binarnim so fajlom (libmodpdfium.so). E sad fora je da ukoliko dodatno koristiš libsqlcipher.so koji npr. postoji samo za x86 i armeabi-v7a arhitekture, a ne i za x64 onda će app da crashuje na x64 telefonima jer ne mogu paralelno da koriste x64 i x86 instrukcije. Rešenje je da kroz gradle islkjučiš x64 verzije i onda će app srećno da trči na x86 instrukcijama. Mislio sam da je možda u ovome problem pošto AS ne prikazuje upozorenje.

Ukoliko knjige čuvaš u data folderu i zanemariš korisnike sa root privilegijama možeš slobodno koristiti celu knjigu a u demo verziji prikazati samo određene stranice. Tako bi npr. mogao da zadržiš korisnika i postupno dodaješ sadržaj, tipa svaki dan nova besplatna stranica ili poglavlje svake nedelje. Takođe ne bi morao da praviš skraćena izdanja. Sve zavisi od biznis logike. Pre nego što završiš ceo projekat izmaltretiraj app sa najvećom očekivanom knjigom, meni nije bilo od interesa ali mislim da su neki devs imali problema sa učitavanjem velikih stripova. Svg obrađuje korektno kad su u pitanju tehnički nacrti ali zavisno od uređaja prilikom zooma može doći do neželjene pixelizacije. Ovo je ista lib koju koristi Google za docs, trenutno za Android nema bolje po mom iskustvu.
 
Odgovor na temu

[es] :: Java :: PDF Viewer u Androidu

[ Pregleda: 1779 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.