如何在安卓系统中从 URL 加载 PDF?
原文:https://www . geeksforgeeks . org/如何从 android 中的 url 加载 pdf/
大多数应用程序都要求在其应用程序中包含显示 PDF 文件的支持。因此,如果我们必须在我们的应用程序中使用多个 PDF 文件,实际上不可能在我们的应用程序中添加每个 PDF 文件,因为这种方法可能会导致应用程序的大小增加,并且没有用户愿意下载如此大的应用程序。因此,为了解决这个与大小相关的问题,我们将直接在应用程序中从服务器加载 PDF 文件,而不会实际将这些文件保存在应用程序中。从服务器加载 PDF 文件将有助于我们管理应用程序大小的增加。所以在这篇文章中,我们将看看如何从我们的安卓应用程序中的网址加载 PDF 文件。
PDFView 的实现
为了添加这个 PDF 视图,我们正在使用一个库,它将帮助我们从网址加载 PDF。注意,我们将使用 Java 语言来实现这个项目。
逐步实施
第一步:创建新项目
要在安卓工作室创建新项目,请参考如何在安卓工作室创建/启动新项目。注意选择 Java 作为编程语言。
第二步:添加依赖项进行构建. gradle(模块:app)
导航到渐变脚本>构建.渐变(模块:应用),并在依赖项部分添加以下依赖项。
实现' com . github . barteksc:Android-pdf-viewer:2 . 8 . 2 '
现在同步选项将出现在右上角点击立即同步选项。
第三步:在你的 AndroidManifest.xml 文件中添加访问互联网的权限
在您的 AndroidManifest.xml 文件中添加以下两行。
第 4 步:使用 activity_main.xml 文件
导航到应用程序> res >布局> activity_main.xml 并将下面的代码添加到该文件中。下面是 activity_main.xml 文件的代码。
可扩展标记语言
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<!--PDF Viewer to display our PDF-->
<com.github.barteksc.pdfviewer.PDFView
android:id="@+id/idPDFView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
步骤 5:使用 MainActivity.java 文件
导航到应用程序> java >您的应用程序包名称>MainActivity.java文件。以下是MainActivity.java文件的代码。代码中添加了注释,以更详细地理解代码。
Java 语言(一种计算机语言,尤用于创建网站)
import android.os.AsyncTask;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import com.github.barteksc.pdfviewer.PDFView;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import javax.net.ssl.HttpsURLConnection;
public class MainActivity extends AppCompatActivity {
// creating a variable
// for PDF view.
PDFView pdfView;
// url of our PDF file.
String pdfurl = "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// initializing our pdf view.
pdfView = findViewById(R.id.idPDFView);
new RetrivePDFfromUrl().execute(pdfurl);
}
// create an async task class for loading pdf file from URL.
class RetrivePDFfromUrl extends AsyncTask<String, Void, InputStream> {
@Override
protected InputStream doInBackground(String... strings) {
// we are using inputstream
// for getting out PDF.
InputStream inputStream = null;
try {
URL url = new URL(strings[0]);
// below is the step where we are
// creating our connection.
HttpURLConnection urlConnection = (HttpsURLConnection) url.openConnection();
if (urlConnection.getResponseCode() == 200) {
// response is success.
// we are getting input stream from url
// and storing it in our variable.
inputStream = new BufferedInputStream(urlConnection.getInputStream());
}
} catch (IOException e) {
// this is the method
// to handle errors.
e.printStackTrace();
return null;
}
return inputStream;
}
@Override
protected void onPostExecute(InputStream inputStream) {
// after the execution of our async
// task we are loading our pdf in our pdf view.
pdfView.fromStream(inputStream).load();
}
}
}
注意:如果你已经更新到 Android Studio 4.0 或更高版本,那么你可能会面临以下错误
java Execution failed for task ':app:stripDebugDebugSymbols'. NDK at ~/Library/Android/sdk/ndk-bundle did not have a source.properties file
请参考本修复错误。
输出:
[https://media.geeksforgeeks.org/wp-content/uploads/20201215133531/Screenrecorder-2020-12-15-13-33-42-833.mp4](https://media.geeksforgeeks.org/wp-content/uploads/20201215133531/Screenrecorder-2020-12-15-13-33-42-833.mp4)出库项目:https://github . com/chaitanyamunje/gfgimanag leader/tree/pdf viewer
版权属于:月萌API www.moonapi.com,转载请注明出处