android pdfviewer/片段 [英] android pdfviewer / fragment

查看:173
本文介绍了android pdfviewer/片段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

417/5000你好

417/5000 Hello

我有一个效果很好的pdfview,因为我不能将其添加到我使用的片段中:

I have a pdfview that works perfectly, for against it I can not add it to a fragment I use:

  • 实现'com.github.barteksc:android-pdf-viewer:2.8.2'
  • 实现'com.github.barteksc:android-pdf-viewer:3.1.0-beta 1'

这是我的pdfview和片段的代码

Here is the code of my pdfview and my fragment

public class magasineFragment extends Fragment  {

    public static magasineFragment newInstance() {
        magasineFragment fragment = new magasineFragment();
        return fragment;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.pdf_fragment, container, false);


        return view;
    }
}

下一个pdf.class

next pdf.class

class pdf : AppCompatActivity() {

    internal lateinit var pdfView:PDFView
    override fun onCreate(savedInstanceState: Bundle?) {

        super.onCreate(savedInstanceState)
        setContentView(R.layout.pdf)

        pdfView = findViewById(R.id.pdfView) as PDFView
        RetrivePdfStream().execute("http://www.marseillemairie11-12.fr/fileadmin/Images/documents/kiosque/lemag-jan2019.pdf")


    }

    internal inner class RetrivePdfStream : AsyncTask<String, Void, InputStream>() 
    {
        override fun doInBackground(vararg strings: String): InputStream? {

            var inputStream: InputStream? = null
            try {
                val url = URL(strings[0])
                val urlConnection = url.openConnection() as HttpURLConnection
                if (urlConnection.responseCode == 200) {
                    inputStream = BufferedInputStream(urlConnection.inputStream)

                }

            } catch (e: IOException) {
                return null
            }

            return inputStream
        }

        override fun onPostExecute(inputStream: InputStream) {
            pdfView.fromStream(inputStream).load()
        }
    }
}

推荐答案

  • 我希望这对您有帮助

    • I hope this help you

      Kotlin中的此代码从Assets文件夹中读取PDF文件

      this code in Kotlin read PDF file from Assets folder

      并显示在片段中

         class PdfRendererBasicFragment : Fragment(), View.OnClickListener {
      
      
             private val FILENAME = "table.pdf"
             private val STATE_CURRENT_PAGE_INDEX = "current_page_index"
             private val TAG = "PdfRendererBasicFragment"
             private val INITIAL_PAGE_INDEX = 0   
             private lateinit var fileDescriptor: ParcelFileDescriptor
             private lateinit var pdfRenderer: PdfRenderer    
             private lateinit var currentPage: PdfRenderer.Page    
             private lateinit var imageView: ImageView   
             private lateinit var btnPrevious: Button
             private lateinit var btnNext: Button
             private var pageIndex: Int = INITIAL_PAGE_INDEX
             override fun onCreateView(
                 inflater: LayoutInflater,
                      container: ViewGroup?,
                            savedInstanceState: Bundle?
               ): View {
             return inflater.inflate(R.layout.fragment_pdf_renderer_basic, container, false)
               }
      
                override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
                super.onViewCreated(view, savedInstanceState)
                imageView = view.findViewById(R.id.image)
                btnPrevious = view.findViewById<Button>(R.id.previous).also {   it.setOnClickListener(this) }
                btnNext = view.findViewById<Button>(R.id.next).also {  it.setOnClickListener(this)}
      
              if (savedInstanceState != null) {
               pageIndex = savedInstanceState.getInt(STATE_CURRENT_PAGE_INDEX,   INITIAL_PAGE_INDEX)
               } else {
              pageIndex = INITIAL_PAGE_INDEX
               }
                  }
      
              @SuppressLint("LongLogTag")
               override fun onStart() {
                  super.onStart()
                       try {
                           openRenderer(activity)
                                  showPage(pageIndex)
                          } catch (e: IOException) {
                              Log.d(TAG, e.toString())
                        }
                          }
      
                      @SuppressLint("LongLogTag")
                     override fun onStop() {
                        try {
                          closeRenderer()
                       } catch (e: IOException) {
                          Log.d(TAG, e.toString())
                            }
                        super.onStop()
                              }
      
                    override fun onSaveInstanceState(outState: Bundle) {
                        outState.putInt(STATE_CURRENT_PAGE_INDEX, currentPage.index)
                        super.onSaveInstanceState(outState)
                           }
      
      
                        @Throws(IOException::class)
                       private fun openRenderer(context: Context?) {
                        if (context == null) return
      
                       val file = File(context.cacheDir, FILENAME)
                      if (!file.exists()) {
                      val asset = context.assets.open(FILENAME)
                      val output = FileOutputStream(file)
                      val buffer = ByteArray(1024)
                      var size = asset.read(buffer)
                      while (size != -1) {
                      output.write(buffer, 0, size)
                     size = asset.read(buffer)
                     }
                     asset.close()
                        output.close()
                       }
                  fileDescriptor = ParcelFileDescriptor.open(file,        ParcelFileDescriptor.MODE_READ_ONLY)
      
                       pdfRenderer = PdfRenderer(fileDescriptor)
                        currentPage = pdfRenderer.openPage(pageIndex)
                         }
      
                         @Throws(IOException::class)
                         private fun closeRenderer() {
                         currentPage.close()
                         pdfRenderer.close()
                          fileDescriptor.close()
                         }
      
                       private fun showPage(index: Int) {
                      if (pdfRenderer.pageCount <= index) return
      
      
                   currentPage.close()
      
                  currentPage = pdfRenderer.openPage(index)
      
                  val bitmap = createBitmap(currentPage.width, currentPage.height,           Bitmap.Config.ARGB_8888)
      
      
                  currentPage.render(bitmap, null, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY)
                 imageView.setImageBitmap(bitmap)
                updateUi()
                    }
                    private fun updateUi() {
                    val index = currentPage.index
                    val pageCount = pdfRenderer.pageCount
                   btnPrevious.isEnabled = (0 != index)
                  btnNext.isEnabled = (index + 1 < pageCount)
      
                  }
      
      
                   fun getPageCount() = pdfRenderer.pageCount
      
                   override fun onClick(view: View) {
                  when (view.id) {
                  R.id.previous -> {
      
                 showPage(currentPage.index - 1)
                 }
                  R.id.next -> {
                             showPage(currentPage.index + 1)
                    }
                 }
                }
      
                }
      

    • 这篇关于android pdfviewer/片段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆