Как отобразить PDF-файл через веб-браузер Android без предварительной загрузки


89

Есть ли способ заставить стандартный браузер Android автоматически открывать PDF, Word или другой типичный файл без необходимости загружать файл, а затем заставлять пользователя открывать файл из приложения Загрузки или панели уведомлений ?

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

В iOS все эти файлы отображаются в браузере. Мне нужен способ заставить браузер автоматически запускать файлы в Acrobat Reader или QuickOffice или в любой другой программе, которую пользователь должен отображать.

Кто-нибудь знает, как это сделать? Я знаю, что в Документах Google есть некоторая поддержка просмотра PDF-файлов, но люди, использующие наше веб-приложение, могут не иметь общедоступного доступа в Интернет во всех случаях и могут попасть на локальный веб-сервер.


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

Ваши PDF-файлы оптимизированы для быстрого просмотра в Интернете? В противном случае они не могут отображаться во время загрузки - следовательно, их можно только загрузить, а затем отобразить.
Роберт

Ответы:


66

Вы можете открыть PDF-файл в Google Docs Viewer, добавив URL-адрес в:

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

Это откроет PDF-файл в браузере по умолчанию или в WebView.

Список поддерживаемых форматов приведен здесь .


4
Это было очень полезно, спасибо. Я не уверен, что это на 100% необходимо, но, вероятно, стоит упомянуть, что <url поддерживаемого документа> должен быть закодирован по URL.
mason81

1
У меня это не работает ... Просто отображается страница «Ой! При предварительном просмотре этого документа возникла проблема» с помощью кнопки загрузки. При нажатии на кнопку загрузки ничего не происходит.
Lee Yi Hong

25
Приведенная выше ссылка не работает для Chrome на Android, я переключился на нее, https://drive.google.com/viewerng/viewer?embedded=true&url=####и это сработало !
QFDev

2
Привет, похоже, URL в ответе больше не работает. Теперь я получаю с ним бесконечный цикл в слушателе webView. URL-адрес, опубликованный в комментарии QFDev , работает.
Джин Бо

Это все еще сохраняет документ в вашем временном каталоге Android, если я правильно помню.
Жан-Поль


4

В частности, чтобы установить плагин pdf.js для firefox, вы не используете магазин приложений. Вместо этого перейдите на addons.mozilla.org изнутри mozilla и установите его оттуда. Кроме того, чтобы проверить, правильно ли он установлен, перейдите в меню Инструменты: Надстройки (а не по URL-адресу «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 Диске: https://docs.google.com/viewer?srcid=YOUR_GDRIVE_PDF_DOC_ID_HERE&pid=explorer&efh=false&a=v&chrome=false&embedded=true (это может быть ссылка или srcid 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-адрес, даже если я могу добавить его в тег привязки, который уже упоминался выше
Сиддарам Х

@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.