# android-pdf-view **Repository Path**: iamace/android-pdf-view ## Basic Information - **Project Name**: android-pdf-view - **Description**: 一个用于再android设备上显示pdf的控件 支持手写,选中 - **Primary Language**: Android - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2022-08-26 - **Last Updated**: 2022-08-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PDF控件 该项目基于 [AndroidPdfViewer]( https://github.com/barteksc/AndroidPdfViewer) 二次开发 ## 坐标系 1. pdf坐标系 2. dispay坐标系 3. view坐标系 4. pdf实际坐标系 ### pdf坐标系 于pdf实际坐标系 #### pdf坐标系 以pdf每个页面的左上角为原点,单位为pdf像素点,该坐标由pdf文件于设备分辨率生成 ![pdf坐标系](README.assets/pdf坐标系.JPG) #### pdf 实际坐标系 ​ ![pdf实际坐标系](README.assets/pdf实际坐标系.JPG) 该坐标系于pdf坐标系比例相同,单位比例为 实际pdf:pdf = 1:设备DPI/72 ### display坐标系 ​ 所有pdf页面排成一排或一列(控件的SwipeVertical决定)所组合成的一个长图。坐标原地左上角 ![pdsplay坐标系1](README.assets/pdsplay坐标系1.JPG) ​ 注意如果存在宽高不同的页面。以最大页面为准 ![pdsplay坐标系2](README.assets/pdsplay坐标系2.JPG) ### view坐标系 ​ 即当前pdfview的坐标系 ### 有关坐标计算的重要参数 #### currentXOffset & currentYOffset ​ 当前view坐标系原点相对于display坐标系原点的位置*view的缩放系数 ![Offset](README.assets/Offset.JPG) ​ 如上图,缩放比例如果为1.5,currentXOffset = -300X1.5=-450,currentYOffset= -200X1.5=-300 ​ #### autoSpacing ​ 按宽度适配时如果pdf的高度不足view的高度。把pdf页面居中,上下加入空间。按高度适配相同原理 ​ 注意这个自动添加的spacing是加入到display坐标系中的 ​ ![autoSpacing](README.assets/Offset.JPG) ​ #### spacingPx ​ pdf页面排列的间距,独立于autoSpacing,并计入display坐标系 ## 坐标转换 关键参数: pdfPageWidth,pdfPageHeight,DisplayPageWidth,DispalyPageHeight viewWidth,viewHeight,viewZoom,currentXOffset,currentYOffset autoSpacing ,spacingPx,swipeVertical 详细转换见 CoordinateUtils ## 注释管理器 AnnotationManage 负责管理所有的注释的保存于生成,兼保存橡皮擦对象 ## 注释绘画管理器 AnnotationDrawManage 负责绘制注释管理器中的所有注释,橡皮擦 ## 注释类 BaseAnnotation 定义了注释所在页码和画笔 ## 画笔 Pen 具体实现如何绘制注释 # 使用 pdf呈现参考原项目 [AndroidPdfViewer]( https://github.com/barteksc/AndroidPdfViewer) ``` PDFView.setPenMode(Pen) PDFView.setMarkMode(Pen) PDFView.setEraserMode(Eraser) ```