android pdfviewer/fragment
417/5000 你好 我有一个pdfview,它可以完美地工作,因为我无法将它添加到我使用的片段中: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
实现'com.github.barteksc:android pdf查看器:2.8.2'
实现'com.github.barteksc:android pdf查看器:3.1.0-beta 1'
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) } } } }