2012-05-07 30 views
5

Cách mở tệp pdf từ máy chủ mà không lưu tệp trên thiết bị và không sử dụng bất kỳ ứng dụng của bên thứ ba nào. Vì tôi không muốn người dùng tải xuống bất kỳ ứng dụng nào để sử dụng ứng dụng của tôi. Và tôi không muốn t muốn sử dụng chế độ xem web để mở tệp pdf.Cách mở PDF trong Android

Trả lời

0

cho điều này u phải sử dụng đầu đọc pdf libraries.this liên kết sẽ giúp u

https://stackoverflow.com/questions/4665957/pdf-parsing-library-for-android

+0

Tôi không thể hiểu cách sử dụng thư viện trong ứng dụng của mình. tôi rất mới cho android vì vậy hãy giúp tôi. –

+0

kiểm tra liên kết này điều này sẽ cung cấp cho ua ý tưởng ngắn gọn về việc thêm thư viện vào dự án của bạn http://stackoverflow.com/questions/3642928/adding-a-library-jar-to-an-eclipse-android-project –

+0

nếu bạn không muốn để lưu trữ pdf tại địa phương sau đó u nên sử dụng webview meathod ... –

15

Phương pháp này làm việc trong phiên bản cũ của android:

Trong một hoạt động mới:

 WebView webview = new WebView(this); 
     setContentView(webview); 
     webview.getSettings().setJavaScriptEnabled(true); 
     webview.getSettings().setPluginsEnabled(true); 
     webview.loadUrl("http://docs.google.com/gview?embedded=true&url=URL_of_PDF/fileName.pdf"); 
     setContentView(webview); 

cấp quyền cho phép internet trong tệp kê khai.

SỬ DỤNG phương pháp sau để mở tệp PDF đã cài đặt ứng dụng của bên thứ ba.

Để mở PDF trong sử dụng ứng dụng:

Uri path = Uri.fromFile(file); 
Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(path, "application/pdf"); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 
+0

tôi không muốn xem pdf của tôi trong webview .. vì vậy xin vui lòng đề nghị tôi làm thế nào tôi có thể mở pdf trong ứng dụng. –

+0

thấy, trong câu hỏi của bạn, bạn nói rằng bạn không muốn bất kỳ ứng dụng của bên thứ 3, do đó, 'WEBVIEW' là lối thoát. Trong URL, bạn có thể trực tiếp chuyển URL của trang web đó nơi tệp PDF tồn tại. Nếu bạn biết rằng ứng dụng của bên thứ ba được cho phép thì bạn có thể đi tới 'intents' trong ví dụ trên. – Pallavi

+0

để sử dụng Intent tôi phải lưu trữ tệp pdf trên máy cục bộ nhưng tôi không lưu trữ tệp đó trên máy cục bộ. tôi có thể sử dụng một số tập tin jar để xem pdf ?? –

3

sử dụng PdfViewer.jar và làm cho một mã như dưới đây - sao chép từ here

First.java

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

    File images = Environment.getExternalStorageDirectory(); 
    imagelist = images.listFiles(new FilenameFilter() 
    { 
      public boolean accept(File dir, String name) 
      { 
        return ((name.endsWith(".pdf"))); 
      } 
    }); 
    pdflist = new String[imagelist.length]; 
    for(int i = 0;i<imagelist.length;i++) 
    { 
      pdflist[i] = imagelist[i].getName(); 
    } 
    this.setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, pdflist)); 
} 

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) 
{ 
     super.onListItemClick(l, v, position, id); 
     String path = imagelist[(int)id].getAbsolutePath(); 
     openPdfIntent(path); 
} 

private void openPdfIntent(String path) 
{ 
    try 
    { 
     final Intent intent = new Intent(First.this, Second.class); 
     intent.putExtra(PdfViewerActivity.EXTRA_PDFFILENAME, path); 
     startActivity(intent); 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
} 

thứ hai. java

public class Second extends PdfViewerActivity 
{ 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
} 

public int getPreviousPageImageResource() { 
    return R.drawable.left_arrow; 
} 

public int getNextPageImageResource() { 
    return R.drawable.right_arrow; 
} 

public int getZoomInImageResource() { 
    return R.drawable.zoom_in; 
} 

public int getZoomOutImageResource() { 
    return R.drawable.zoom_out; 
} 

public int getPdfPasswordLayoutResource() { 
    return R.layout.pdf_file_password; 
} 

public int getPdfPageNumberResource() { 
    return R.layout.dialog_pagenumber; 
} 

public int getPdfPasswordEditField() { 
    return R.id.etPassword; 
} 

public int getPdfPasswordOkButton() { 
    return R.id.btOK; 
} 

public int getPdfPasswordExitButton() { 
    return R.id.btExit; 
} 

public int getPdfPageNumberEditField() { 
    return R.id.pagenum_edit; 
} 
} 

Hy vọng điều này sẽ giúp bạn rất nhiều. Thử cái này. Đừng quên thêm Second.java vào tệp kê khai của bạn. Thêm một số drawables bất cứ điều gì nó đòi hỏi trong second.java với drawables của bạn. Và, hãy tham khảo ví dụ từ GitHub

+0

Xin chào Agarwal! Tôi đã có thể hiển thị tệp pdf trong thiết bị nhưng thư viện này không thể tải các tệp pdf có kích thước lớn hơn và các hình ảnh bên trong tệp pdf được hiển thị dưới dạng hình ảnh mờ. Bạn đã gặp vấn đề này chưa? –

+0

Một khi tôi đã làm việc này, tôi đã thất vọng bởi việc thiếu một giao diện mượt mà và thiếu các cử chỉ và vô số nio.BufferUnderflowExceptions, ngay cả sau khi thêm android: largeHeap = "true" vào thẻ của tôi trong tệp kê khai –

Các vấn đề liên quan