android pdfviewer/fragment

android pdfviewer/fragment,android,android-fragments,androidpdfviewer,Android,Android Fragments,Androidpdfviewer,417/5000 你好 我有一个pdfview,它可以完美地工作,因为我无法将它添加到我使用的片段中: 实现'com.github.barteksc:android pdf查看器:2.8.2' 实现'com.github.barteksc:android pdf查看器:3.1.0-beta 1' 这是我的pdfview和片段的代码 public class magasineFragment extends Fragment { public static magasineFrag

417/5000 你好

我有一个pdfview,它可以完美地工作,因为我无法将它添加到我使用的片段中:

  • 实现'com.github.barteksc:android pdf查看器:2.8.2'
  • 实现'com.github.barteksc:android pdf查看器:3.1.0-beta 1'
这是我的pdfview和片段的代码

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

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()
        }
    }
}
类pdf:AppCompatActivity(){ 内部lateinit变量pdfView:pdfView 重写创建时的乐趣(savedInstanceState:Bundle?){ super.onCreate(savedInstanceState) setContentView(R.layout.pdf) pdfView=findViewById(R.id.pdfView)作为pdfView RetrievePdfStream()。执行(“http://www.marseillemairie11-12.fr/fileadmin/Images/documents/kiosque/lemag-jan2019.pdf") } 内部类RetrievePdfStream:AsyncTask() { 重写fun doInBackground(vararg strings:String):InputStream{ 变量inputStream:inputStream?=null 试一试{ val url=url(字符串[0]) val urlConnection=url.openConnection()作为HttpURLConnection if(urlConnection.responseCode==200){ inputStream=BufferedInputStream(urlConnection.inputStream) } }捕获(e:IOException){ 返回空 } 返回输入流 } 重写onPostExecute(inputStream:inputStream){ pdfView.fromStream(inputStream.load()) } } }
  • 我希望这对你有帮助

  • Kotlin中的此代码从资产文件夹读取PDF文件

  • 并在片段中显示它

       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)
                  }
               }
              }
    
              }
    
    类PdfRendererBasicFragment:Fragment(),View.OnClickListener{
    private val FILENAME=“table.pdf”
    私有val状态\u当前页面\u索引=“当前页面\u索引”
    private val TAG=“PdfRendererBasicFragment”
    私有val初始页面索引=0
    私有lateinit var fileDescriptor:ParcelFileDescriptor
    私有lateinit var pdfRenderer:pdfRenderer
    私有lateinit var currentPage:PdfRenderer.Page
    私有lateinit var imageView:imageView
    私有lateinit var btnPrevious:按钮
    私有lateinit var btnNext:按钮
    私有变量pageIndex:Int=初始页面索引
    覆盖创建视图(
    充气机,
    容器:视图组?,
    savedInstanceState:捆绑?
    ):查看{
    返回充气器。充气(R.layout.fragment\u pdf\u renderer\u basic,container,false)
    }
    覆盖已创建的视图(视图:视图,保存状态:捆绑?){
    super.onViewCreated(视图,savedInstanceState)
    imageView=view.findViewById(R.id.image)
    btnPrevious=view.findviewbyd(R.id.previous)。还有{it.setOnClickListener(this)}
    btnNext=view.findviewbyd(R.id.next)。还{it.setOnClickListener(this)}
    如果(savedInstanceState!=null){
    pageIndex=savedInstanceState.getInt(状态\当前\页面\索引,初始\页面\索引)
    }否则{
    页面索引=初始页面索引
    }
    }
    @SuppressLint(“LongLogTag”)
    覆盖有趣的onStart(){
    super.onStart()
    试一试{
    openRenderer(活动)
    显示页面(页面索引)
    }捕获(e:IOException){
    Log.d(标记,例如toString())
    }
    }
    @SuppressLint(“LongLogTag”)
    覆盖桌面上的乐趣(){
    试一试{
    关闭渲染器()
    }捕获(e:IOException){
    Log.d(标记,例如toString())
    }
    super.onStop()
    }
    覆盖存储实例状态(超出状态:捆绑){
    outState.putInt(STATE\u CURRENT\u PAGE\u INDEX,currentPage.INDEX)
    super.onSaveInstanceState(超出状态)
    }
    @抛出(IOException::类)
    private fun openRenderer(上下文:上下文?){
    if(context==null)返回
    val file=file(context.cacheDir,文件名)
    如果(!file.exists()){
    val asset=context.assets.open(文件名)
    val output=FileOutputStream(文件)
    val缓冲区=字节数组(1024)
    变量大小=资产读取(缓冲区)
    while(大小!=-1){
    输出.写入(缓冲区,0,大小)
    大小=资产读取(缓冲区)
    }
    资产关闭()
    output.close()
    }
    fileDescriptor=ParcelFileDescriptor.open(文件,ParcelFileDescriptor.MODE\u只读)
    pdfRenderer=pdfRenderer(文件描述符)
    currentPage=pdfrender.openPage(页面索引)
    }
    @抛出(IOException::类)
    私人娱乐中心(){
    currentPage.close()
    pdfRenderer.close()
    fileDescriptor.close()
    }
    私人娱乐展示页(索引:Int){
    如果(pdfRenderer.pageCount{
    showPage(currentPage.index-1)
    }
    R.id.next->{
    showPage(currentPage.index+1)
    }
    }
    }
    }
    

这段代码有什么问题?为什么不能将其添加到片段中?您好,代码在活动中运行良好,但在我将其集成到片段中时没有显示任何内容。我必须犯一个错误,但我不知道从何处显示不起作用的片段代码pdfrenderer类作为查看器是非常糟糕的,大多数文档都没有显示在屏幕上相反,KSC pdf查看器非常有用