Як відобразити PDF через веб-браузер Android без попереднього “завантаження”


88

Чи є спосіб отримати стандартний браузер Android для автоматичного відкриття PDF, Word або іншого типового файлу без необхідності проходити процес завантаження файлу, а потім змусити користувача відкрити файл із програми Завантаження або панелі сповіщень ?

У нас є веб-додаток, яке містить багато документів, які ми хотіли б включити, і їх не потрібно перетворювати у HTML, але змусити користувача завантажувати файл та відкривати вручну непросто навчити користувачів.

У iOS всі ці файли відображаються вбудовано в браузері. Я хотів би отримати спосіб, щоб браузер автоматично запускав файли в Acrobat Reader або QuickOffice або будь-яку іншу програму, яку користувач повинен відображати.

Хтось знає спосіб зробити це? Я знаю, що Документи Google мають певну підтримку перегляду PDF-файлів, але люди, які використовують наш веб-додаток, можуть не мати загальнодоступного доступу до Інтернету у всіх випадках і можуть здійснювати удари на локальному веб-сервері.


1
Я ніколи не бачив, щоб це працювало так. З огляду на це, я думаю, ви могли б створити власний браузер, здатний декодувати та правильно відображати PDF-файли. Я просто не вірю, що жоден з популярних браузерів підтримує це.
FoamyGuy

Чи оптимізовані ваші файли PDF для "швидкого перегляду в Інтернеті"? Якщо ні, вони не можуть бути відображені, поки завантаження все ще триває - отже, їх можна лише завантажити, а потім відобразити.
Роберт

Відповіді:


66

Ви можете відкрити PDF у засобі перегляду документів Google, додавши URL-адресу до:

http://docs.google.com/gview?embedded=true&url=<url of a supported doc>

Це відкриє PDF у браузері за замовчуванням або в WebView.

Список підтримуваних форматів наведено тут .


4
Це було дуже корисно, дякую. Я не впевнений, що це потрібно на 100%, але, мабуть, варто згадати, що <url підтримуваного документа> має бути закодованим.
mason81

1
У мене це не працює ... На ній просто відображається сторінка "На жаль, виникла проблема з попереднім переглядом цього документа" за допомогою кнопки завантаження. Після натискання кнопки завантаження нічого не відбувається.
Lee Yi Hong

25
Наведене вище посилання не працювало для Chrome на Android, я перейшов на це, https://drive.google.com/viewerng/viewer?embedded=true&url=####і це зробило свою роботу!
QFDev

2
Привіт, здається, URL-адреса у відповіді більше не працює. Зараз я отримую нескінченний цикл із ним у прослуховувачі webView. URL-адреса, розміщена в коментарі від QFDev , працює.
Gene Bo

Це все одно зберігає документ у вашому тимчасовому каталозі android, якщо я правильно згадую.
Жан-Поль


4

Зокрема, щоб встановити плагін pdf.js для Firefox, ви не використовуєте магазин додатків. Замість цього перейдіть до addons.mozilla.org зсередини mozilla та встановіть його звідти. Крім того, щоб перевірити, чи правильно він встановлений, перейдіть у меню Інструменти: Додатки (а не за адресою "about: plugins", як ви думаєте з версії для настільного ПК).

(Новий рахунок, інакше я б поставив це як коментар до відповіді вище)


4
String format = "https://drive.google.com/viewerng/viewer?embedded=true&url=%s";
String fullPath = String.format(Locale.ENGLISH, format, "PDF_URL_HERE");
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(fullPath));
startActivity(browserIntent);

3

Мені це теж потрібно було, і посилання вище перестали працювати, тому ось що я виявив для роботи з Новим Google Диском:

У Google є служба, яка створює посилання для PDF-файлів Not in GDrive: https://docs.google.com/viewer Просто додайте свою URL-адресу, і вона створить посилання, та код IFrame (Подивіться уважно, і ви побачите шаблон і створите посилання без цієї веб-служби)

Також є спосіб зробити це для PDF-файлів, що зберігаються на Google Drive: https://docs.google.com/viewer?srcid=YOUR_GDRIVE_PDF_DOC_ID_HERE&pid=explorer&efh=false&a=v&chrome=false&embedded=true (це може бути посилання або src URL-адреса iframe)

Я тестував на Android, і це добре виводить програму перегляду PDF.


Для мене, якщо я наразі не ввійшов з обліковим записом Google, то це переводить мене на сторінку входу. Чи є спосіб обійти це і просто переглянути PDF?
h_k

Спробуйте скористатися файлом viewerjs.org viewer.js, що виглядає багатообіцяючим, оскільки він не залежить від браузера і робить важкі заходи вашим сервером.
user1493559

2

На жаль, власний браузер, який присутній на пристроях Android, не підтримує такий тип файлів. Давайте подивимось, чи зможемо ми це зробити у версії 4.0.


2

Ви можете використовувати це

webView.loadUrl("https://docs.google.com/viewer?url=" + "url of pdf file"); 

хто-небудь може вказати причину голосування.
Акаш Бісарія

Можливо, ваша відповідь підходить для певної техніки програмування, і відповіддю може бути лише URL-адреса, навіть я можу додати її до якоря, що вже згадувалося вище
Siddaram H

@akash, можливо, вам потрібно додати більше пояснень. це правила тут
huzain07

2
  Try this, worked for me.

    WebView view = (WebView) findViewById(R.id.yourWebView);

    view.getSettings().setJavaScriptEnabled(true);
    view.getSettings().setPluginState(WebSettings.PluginState.ON);
    view.loadUrl("http://docs.google.com/gview?embedded=true&url="
                  +"your document link(pdf,doc,docx...etc)");

setPluginState ON важливий, дякую, згадавши про це
Beeing Jk

@BeeingJk, setPluginStateзастарілий від API 18 ( stackoverflow.com/questions/19362049/… ).
CoolMind

@CoolMind те, що ви показали у посиланні, setPluginsEnabledшвидше ніжsetPluginState
Beeing Jk

@BeeingJk, будь ласка, відкрийте сторінку ще раз, натисніть Ctrl + F, напишіть "setPluginState" і натисніть Enter.
CoolMind

@CoolMind добре, дякую, я також бачив це тут, developer.android.com/reference/android/webkit/… , але я не зміг видалити setPluginStateінший мій веб-перегляд не буде працювати
Beeing Jk

0
public class MainActivity extends AppCompatActivity {

    Button button;

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

        button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                openURL("http://docs.google.com/viewer?url=" + " your pdf link ");
            }
        });
    }

    private void openURL(String s) {
        Uri uri = Uri.parse(s);
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(uri,"text/html");
        startActivity(intent);
    }
}

-4
  • Завантажте .apk файл Acrobat Reader для Android для відображення PDF-файлу
  • Покладіть свої PDF-файли на SD-карту
  • Використовуйте фрагмент коду нижче

    File file= new File("/sdcard/test.pdf");
    Uri path=Uri.fromFile(file);
    Intent i =new Intent(Intent.ACTION_VIEW);
    i.setDataAndType(path,"application/pdf");
    i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(i);
    

4
Це для веб-браузера, а не для власної програми для Android. -1
ryandawkins
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.