打印编辑器
专有软件,未获得授权的情况下,禁止对该代码进行反编译、分发等行为,否则将承担相应的法律后果。
该仓库存档不再更新,请查看功能更丰富的通用设计器:https://github.com/xinglie/report-designer
页面最左侧显示可编辑元素的区域即为工具箱
- 工具箱中的元素,可通过2种方式添加到编辑区
- 在元素上点击击鼠标,则添加到编辑区可视区域左上角位置。
- 在元素上按下鼠标拖动元素到编辑区松开鼠标,则元素添加到当前鼠标所在的位置
编辑区域上方,带”新建“,”xml代码“的通栏即为工具栏
- 可在工具栏缩放编辑区,修改编辑区大小、及设置是否分页
- 工具栏有隐藏的对齐功能,只有编辑区选中2个以上的元素时才会显示
页面最右侧是显示当前编辑区域内的元素组件树及编辑某个元素时的详情面板
- 当编辑区未选择元素或选择的元素超过2个时详情面板显示组件树
- 编辑区的元素存在z轴关系(即重叠时谁在谁的上面),当最右侧显示组件树时,组件树中显示的元素列表即编辑区中元素的z轴关系,z轴最大的在上面,最小的在下面。元素的z轴顺序可通过拖动组件树面板中的元素调整。
- 当最右侧显示组件树时,鼠标可移到列表中的元素上,当鼠标
hover
到某个列表中的元素上时,该元素会在编辑区高亮显示,同时列表中右侧会显示删除按钮,点击删除按钮则从编辑区删除元素
页面正中即为编辑工作区
- 编辑区中的标尺,鼠标在标尺上
hover
时,会显示坐标辅助线,用来更方便的定位元素的位置 - 要选中编辑区中的元素,使用鼠标点击即可选中
- 要选中多个编辑区中的元素,可使用鼠标拉框选中(鼠标拉框选择的前提是鼠标按下的区域要在编辑区里,不能点在元素上),如果元素较多不方便拉框选中,则可以使用键盘操作:按下shift键,然后再使用鼠标去点击要选择的元素即可完成多选,
- 多选的元素目前仅支持对齐,当多选后,工具栏会显示对齐按钮
- 如果要全选整个编辑区的元素,使用键盘
ctrl+a
、mac
使用cmd+a
即可,也可在编辑区右键,选择全选功能 - 也可使用
tab
键选择元素,tab
键的选择跟z
轴有关,如编辑区内有1,2,3
个元素,选中2
时,按下tab
键将是2-3-1
的顺序进行选中。按tab
键的同时按下shift
键则进行反向顺序选择。该功能在多个元素重叠进行选中操作时有用。tab
键只在编辑区中有1
个或0
个元素选中时有效,当有2
个以上元素选中时,tab
键将不起作用(已修改为当有2
个以上元素选中时,取消多选,后同0
个元素的选中逻辑) - 如果要调整元素的z轴,除了在组件树中拖动调整外,也支持在编辑区内,在要调整的元素上点击右键,使用右键菜单中的功能来调整z轴
- 如果要删除元素,则可以在该元素上使用鼠标右键里面的删除功能,也可以先选中元素,按键盘
delete
键 - 如果要批量删除,首先进行元素的多选择,然后在任意选中的元素上点击右键,选择删除,也可以选择完后按键盘
delete
键 - 如果要复制元素,则首先要选中元素,元素选择完成后,可在任意选中的元素上点击右键,选择复制功能,也可以使用键盘
ctrl+c
进行粘贴,复制只能复制处于选中状态的元素,所以复制支持同时复制多个元素。 - 如果要粘贴元素,可使用
ctrl+v
或在编辑区内右键,选择粘贴功能 - 鼠标与键盘相同的操作,只在处理坐标上不同,即鼠标操作时,会在鼠标所在的位置进行处理元素,键盘则使用一种默认的方式进行。
- 要移动元素,可在待移动的元素上按下鼠标拖动即可,也可以按键盘的方向键来移动,如果用键盘的方向键移动时,同时按下shift按键则可以增大移动步幅
- 要移动多个元素时,先进行多元素选中,然后移动同单个元素的移动
- 元素编辑时,在右侧属性面板最底部有编辑锁定功能,当编辑锁定打开时,将不能编辑、移动、多选该元素,可对编辑好的元素进行锁定,防止误操作
- 元素编辑时,在右侧属性面板最底部有命名组件树中名称功能,方便右侧显示组件树时对元素的快速识别
- 当使用键盘时,编辑区域要处于激活状态,当编辑区激活与非激活时,编辑区边框会有相应的提示,来告诉使用人员编辑区是否处于激活状态
- 元素处于编辑锁定状态时,当元素选中状态时,会用红色边框显示来提示使用人员
- 菜鸟使用按
ctrl
和鼠标点击来进行多选,当前系统默认按shift
和鼠标点击多选,为了兼容菜鸟,也实现了按ctrl
多选,所以当前可以使用ctrl
或shift
按下加鼠标单击进行多选 - 编辑器拥有实时保存功能,即刷新页面后依然可以还原到刷新前的状态,但历史记录会丢失
xml
内容首先是合法的内容,允许有<% %>
这样的代码块- 解析
xml
时采用白名单的形式,不允许的属性会被丢弃 - 嵌套需要符合规则,比如
<rect/>
外面一定会有<layout>
标签,多层嵌套的<layout>
外层的会被丢弃 - 表格在
xml
状态下行里面的单元格,与列里面对应的单元格从cainiao
导入时有可能高或宽不一致,导致后续编辑时可能宽度不对,但编辑后会是正确的尺寸 - 不支持类似
<layout>
下有多个<text>
元素,即使像类似<%if%> <%else%>
来控制也不行,因为导入时静态分析整个xml
内容,而<%if%>
是运行时的控制语句。可以用<%if%>
来控制多个<layout><text></text></layout>
- 不支持
<header>
或<footer>
中嵌套其它元素,初始做的时候未被告知有<header>
及<footer>
元素,后期添加,添加时也未被告诉有嵌套,修改难度大,故不支持。
- 表格在合并单元格时支持较差,请使用源码形式进行操作
- 表格可以嵌套
- 表格内包含的元素可以跨表格进行选中操作,如选中
A
表格中的二维码和B
表格当中的文字进行对齐操作 - 表格也可以选中和移动,表格要使用左上角的
icon
进行,因为表格是容器,无法直接选中操作 - 当表格内的元素有选中时,此时再去选择该表格,则表格处于选中状态,表格内的元素变成普通状态
- 当复制表格内的元素粘贴到外部时,跨单元格选择的元素粘贴时可能会挤到一起,因为各元素是以单元格为相对坐标的
- 当外部元素粘贴到单元格内部时,因为相对坐标及尽可能的显示到单元格内部,会做一个坐标修正的动作,如果单元格比较小,也会导致元素挤到一起
- 表格单元格的选中支持键盘
W
,A
,S
,D
切换到相邻的其它单元格上 - 当界面中只有一个元素选中,且选中的元素在表格的某个单元格内,则按下
F
键,可选中元素所在的单元格,该功能在单元格内元素较多,不方便使用鼠标选中时有用