Android实现在线预览网络PDF文件

//pdf在线预览
    implementation 'org.xutils:xutils:3.5.0'
    implementation  'es.voghdev.pdfviewpager:library:1.0.3'

布局文件

 <RelativeLayout
        android:id="@+id/remote_pdf_root"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <es.voghdev.pdfviewpager.library.PDFViewPager
            android:id="@+id/pdfViewPager"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

    </RelativeLayout>

/**
 * PDF在线预览
 */
public class PdfviewActivity extends BaseActivity implements DownloadFile.Listener {
    public static final String TAG = "PdfviewActivity";
    @BindView(R.id.remote_pdf_root)
    RelativeLayout remotePdfRoot;
    @BindView(R.id.tv_lantitle)
    TextView tvLantitle;
    private PDFPagerAdapter adapter;
    private RemotePDFViewPager remotePDFViewPager;
    private LogineDialog logineDialog;

    @Override
    protected int getLayoutId() {
        return R.layout.activity_pdfview;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // TODO: add setContentView(...) invocation
        ButterKnife.bind(this);
    }

    @Override
    protected void initView() {
        String title = getIntent().getStringExtra("title");//标题
        String file = getIntent().getStringExtra("content");//网络路径:例如https://css4.pub/2015/textbook/somatosensory.pd
        tvLantitle.setText("     "+title);
        if (logineDialog == null) {
            logineDialog = new LogineDialog(this, "正在加载");
        }
        logineDialog.show();
        setDownloadListener(file);
    }

    /*设置监听*/
    protected void setDownloadListener(String url) {
        final DownloadFile.Listener listener = this;
        remotePDFViewPager = new RemotePDFViewPager(this, url, listener);
        remotePDFViewPager.setId(R.id.pdfViewPager);
    }

    @Override
    protected void destoryData() {

    }

     //加载成功
    @Override
    public void onSuccess(String url, String destinationPath) {
        if (logineDialog != null && logineDialog.isShowing()) {
            logineDialog.dismiss();
        }
        remotePdfRoot.setVisibility(View.VISIBLE);

        adapter = new PDFPagerAdapter(this, FileUtil.extractFileNameFromURL(url));
        remotePDFViewPager.setAdapter(adapter);
        updateLayout();
    }

    /*更新视图*/
    private void updateLayout() {
        remotePdfRoot.removeAllViewsInLayout();
        remotePdfRoot.addView(remotePDFViewPager, LinearLayout.LayoutParams.MATCH_PARENT,
                LinearLayout.LayoutParams.MATCH_PARENT);
    }
     //加载失败
    @Override
    public void onFailure(Exception e) {
        if (logineDialog != null && logineDialog.isShowing()) {
            logineDialog.dismiss();
        }
        ToastUtil.show("数据加载错误");
    }

    @Override
    public void onProgressUpdate(int progress, int total) {

    }

}

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
使用 PdfRenderer 类可以在 Android 应用中实现 PDF 文件预览。这个类是从 Android 5.0 (API 级别 21) 开始引入的。 以下是一个简单的示例,演示如何使用 PdfRenderer 在 ImageView 中显示 PDF 页面: 1. 首先,在你的布局文件中添加一个 ImageView 组件: ```xml <ImageView android:id="@+id/imageView" android:layout_width="match_parent" android:layout_height="match_parent"/> ``` 2. 在代码中加载和显示 PDF 文件: ```java import android.graphics.Bitmap; import android.graphics.pdf.PdfRenderer; import android.os.Bundle; import android.os.ParcelFileDescriptor; import android.widget.ImageView; import androidx.appcompat.app.AppCompatActivity; import java.io.File; import java.io.IOException; public class PdfPreviewActivity extends AppCompatActivity { private ImageView imageView; private PdfRenderer pdfRenderer; private PdfRenderer.Page currentPage; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_pdf_preview); imageView = findViewById(R.id.imageView); try { openPdfRenderer(); showPage(0); // 显示第一页 } catch (IOException e) { e.printStackTrace(); } } private void openPdfRenderer() throws IOException { File file = new File("path_to_your_pdf_file"); ParcelFileDescriptor fileDescriptor = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY); pdfRenderer = new PdfRenderer(fileDescriptor); } private void showPage(int index) { if (currentPage != null) { currentPage.close(); } currentPage = pdfRenderer.openPage(index); Bitmap bitmap = Bitmap.createBitmap(currentPage.getWidth(), currentPage.getHeight(), Bitmap.Config.ARGB_8888); currentPage.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY); imageView.setImageBitmap(bitmap); } @Override protected void onDestroy() { super.onDestroy(); if (currentPage != null) { currentPage.close(); } if (pdfRenderer != null) { pdfRenderer.close(); } } } ``` 请确保将 "path_to_your_pdf_file" 替换为你的 PDF 文件的实际路径。这个示例代码会加载 PDF 文件的第一页,并将其渲染到 ImageView 中显示。你可以根据需要实现翻页等功能。 请注意,PdfRenderer 需要在 Android 5.0 及以上的设备上运行,因此在使用之前请确保目标设备的最低 API 级别符合要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值