该项目基于 AndroidPdfViewer 二次开发
pdf坐标系
dispay坐标系
view坐标系
pdf实际坐标系
#### pdf坐标系
以pdf每个页面的左上角为原点,单位为pdf像素点,该坐标由pdf文件于设备分辨率生成
#### pdf 实际坐标系
该坐标系于pdf坐标系比例相同,单位比例为 实际pdf:pdf = 1:设备DPI/72
所有pdf页面排成一排或一列(控件的SwipeVertical决定)所组合成的一个长图。坐标原地左上角
注意如果存在宽高不同的页面。以最大页面为准
即当前pdfview的坐标系
当前view坐标系原点相对于display坐标系原点的位置*view的缩放系数
如上图,缩放比例如果为1.5,currentXOffset = -300X1.5=-450,currentYOffset= -200X1.5=-300
按宽度适配时如果pdf的高度不足view的高度。把pdf页面居中,上下加入空间。按高度适配相同原理
注意这个自动添加的spacing是加入到display坐标系中的
pdf页面排列的间距,独立于autoSpacing,并计入display坐标系
关键参数:
pdfPageWidth,pdfPageHeight,DisplayPageWidth,DispalyPageHeight
viewWidth,viewHeight,viewZoom,currentXOffset,currentYOffset
autoSpacing ,spacingPx,swipeVertical
详细转换见 CoordinateUtils
AnnotationManage
负责管理所有的注释的保存于生成,兼保存橡皮擦对象
AnnotationDrawManage
负责绘制注释管理器中的所有注释,橡皮擦
BaseAnnotation
定义了注释所在页码和画笔
Pen
具体实现如何绘制注释
pdf呈现参考原项目 AndroidPdfViewer
PDFView.setPenMode(Pen)
PDFView.setMarkMode(Pen)
PDFView.setEraserMode(Eraser)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。