Cách hiển thị PDF qua trình duyệt web Android mà không cần “tải xuống” trước


88

Có cách nào để khiến trình duyệt Android gốc tự động mở PDF, Word hoặc các tệp thông thường khác mà không cần phải trải qua quá trình tải xuống tệp rồi yêu cầu người dùng mở tệp từ ứng dụng Tải xuống hoặc thanh Thông báo không ?

Chúng tôi có một ứng dụng web có rất nhiều tài liệu mà chúng tôi muốn đưa vào và không cần phải chuyển đổi sang HTML, nhưng việc bắt người dùng tải xuống tệp và mở theo cách thủ công không dễ để đào tạo người dùng.

Trên iOS, tất cả các tệp này đều hiển thị nội tuyến trong trình duyệt. Tôi muốn có một cách để trình duyệt tự động khởi chạy các tệp vào Acrobat Reader hoặc QuickOffice hoặc bất kỳ chương trình nào mà người dùng có để hiển thị chúng.

Có ai biết một cách để làm điều đó? Tôi biết rằng Google Tài liệu có một số hỗ trợ xem PDF, nhưng những người sử dụng ứng dụng web của chúng tôi có thể không có quyền truy cập Internet công cộng trong mọi trường hợp và có thể đang truy cập vào máy chủ web cục bộ.


1
Tôi chưa bao giờ thấy nó hoạt động theo cách đó. Nói như vậy, tôi sẽ tưởng tượng bạn có thể tạo trình duyệt của riêng mình có khả năng giải mã và hiển thị đúng cách các tệp pdf. Tôi không tin bất kỳ trình duyệt phổ biến nào hỗ trợ điều này.
FoamyGuy vào

Các tệp PDF của bạn có được tối ưu hóa cho "Chế độ xem web nhanh" không? Nếu không, chúng không thể được hiển thị trong khi quá trình tải xuống vẫn đang diễn ra - do đó chúng chỉ có thể được tải xuống và sau đó hiển thị.
Robert

Câu trả lời:


66

Bạn có thể mở PDF trong Google Docs Viewer bằng cách nối URL vào:

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

Thao tác này sẽ mở PDF trong trình duyệt mặc định hoặc WebView.

Danh sách các định dạng được hỗ trợ được đưa ra ở đây .


4
Điều này rất hữu ích, cảm ơn bạn. Tôi không chắc điều đó là cần thiết 100%, nhưng có lẽ điều đáng nói là <url của một tài liệu được hỗ trợ> phải được mã hóa bằng urle.
thợ nề81

1
Điều này không hiệu quả với tôi ... Nó chỉ hiển thị một trang "Rất tiếc! Đã xảy ra sự cố khi xem trước tài liệu này" bằng nút tải xuống. Không có gì xảy ra khi bạn nhấp vào nút tải xuống.
Lee Yi Hong

25
Liên kết trên không hoạt động cho Chrome trên Android, tôi đã chuyển sang https://drive.google.com/viewerng/viewer?embedded=true&url=####và điều đó đã thành công!
QFDev

2
Xin chào, có vẻ như url trong câu trả lời không còn hoạt động. Tôi nhận được một vòng lặp vô hạn với nó bây giờ trong trình nghe webView. Url được đăng trong bình luận từ QFDev đang hoạt động.
Gene Bo

Điều này vẫn lưu tài liệu vào thư mục android tạm thời của bạn nếu tôi nhớ chính xác.
Jean-Paul


4

Cụ thể, để cài đặt plugin pdf.js cho firefox, bạn không sử dụng kho ứng dụng. Thay vào đó, hãy truy cập addons.mozilla.org từ bên trong mozilla và cài đặt nó từ đó. Ngoài ra, để xem nó có được cài đặt đúng cách hay không, hãy chuyển đến menu Tools: Add-ons (không phải url "about: plugins" như bạn có thể nghĩ từ phiên bản dành cho máy tính để bàn).

(Tài khoản mới, nếu không, tôi sẽ đặt điều này làm nhận xét về câu trả lời ở trên)


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

Tôi cũng cần điều này và các liên kết ở trên đã ngừng hoạt động, vì vậy đây là những gì tôi tìm thấy để hoạt động với Google Drive mới:

Google có một dịch vụ tạo liên kết cho tệp PDF Không có trong GDrive: https://docs.google.com/viewer Chỉ cần thêm URL của bạn và nó sẽ tạo liên kết và mã IFrame (Hãy quan sát kỹ và bạn sẽ thấy mẫu và tạo liên kết không có dịch vụ web này)

Ngoài ra, có một cách để thực hiện việc này đối với tệp PDF được lưu trữ trong Google Drive: https://docs.google.com/viewer?srcid=YOUR_GDRIVE_PDF_DOC_ID_HERE&pid=explorer&efh=false&a=v&chrome=false&embedded=true (đây có thể là một liên kết hoặc src URL của iframe)

Tôi đã thử nghiệm trên Android và nó hiển thị trình xem PDF độc đáo.


Đối với tôi, nếu tôi hiện không đăng nhập bằng tài khoản google, thì tôi sẽ đưa tôi đến trang đăng nhập. Có cách nào để bỏ qua điều này và chỉ xem pdf không?
h_k

Hãy thử sử dụng tệp viewjs.org view.js có vẻ hứa hẹn vì nó độc lập với trình duyệt và dựa vào máy chủ của bạn để thực hiện công việc nặng nhọc.
dùng1493559 29/12/16

2

Rất tiếc, trình duyệt gốc hiện có trên thiết bị Android không hỗ trợ loại tệp này. Hãy xem liệu trong thời đại 4.0 chúng ta có làm được điều đó không.


2

Bạn có thể sử dụng cái này

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

bất cứ ai có thể xin vui lòng đề cập đến lý do của việc giảm giá.
Akash Bisariya

Có thể là, câu trả lời của bạn phù hợp với một số kỹ thuật lập trình và câu trả lời có thể chỉ là URL, thậm chí tôi có thể thêm nó vào thẻ liên kết, đã được đề cập ở trên
Siddaram H

@akash có lẽ bạn cần giải thích thêm. đó là các quy tắc ở đây
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 BẬT là quan trọng, cảm ơn đã đề cập đến nó
Beeing Jk

@BeeingJk, setPluginStatekhông được dùng nữa từ API 18 ( stackoverflow.com/questions/19362049/… ).
CoolMind

@CoolMind những gì bạn đã hiển thị trong liên kết setPluginsEnabledchứ không phải làsetPluginState
Beeing Jk

@BeeingJk, làm ơn, mở lại trang, nhấn Ctrl + F, viết "setPluginState" và nhấn Enter.
CoolMind

@CoolMind ok, cảm ơn Tôi cũng đã thấy nó ở đây, developer.android.com/reference/android/webkit/… , nhưng tôi không thể xóa setPluginStatenếu không chế độ xem web của tôi sẽ không hoạt động
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
  • Tải xuống tệp acrobat reader .apk cho Android để hiển thị tệp pdf
  • Đặt các tệp pdf của bạn trên thẻ sd
  • Sử dụng đoạn mã bên dưới

    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
Điều này dành cho trình duyệt web, không phải ứng dụng Android gốc. -1
ryandawkins
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.