Ureport二开和源码启动

**

  1. Ureport二开和源码启动升级版本如何升级

**
一、基于UReport 2 V2.2.9
二、增加不依附于单元格的浮动图片
三、增加不依附于单元格的浮动(直)线段【新增】

  1. 运行后图片

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
四、代码修改截图
java修改部分

public class PdfProducer implements Producer {
	@Override
	public void produce(Report report,OutputStream outputStream) {
		Paper paper=report.getPaper();
		int width=paper.getWidth();
		int height=paper.getHeight();
		Rectangle pageSize=new RectangleReadOnly(width,height);
		if(paper.getOrientation().equals(Orientation.landscape)){
			pageSize=pageSize.rotate();
		}
		int leftMargin=paper.getLeftMargin();
		int rightMargin=paper.getRightMargin();
		int topMargin=paper.getTopMargin();
		int bottomMargin=paper.getBottomMargin();
		Document document=new Document(pageSize,leftMargin,rightMargin,topMargin,bottomMargin);
		try{
			PdfWriter writer=PdfWriter.getInstance(document,outputStream);
			PageHeaderFooterEvent headerFooterEvent=new PageHeaderFooterEvent(report);
			writer.setPageEvent(headerFooterEvent);
			document.open();
			List<Column> columns=report.getColumns();
			List<Integer> columnsWidthList=new ArrayList<Integer>();
			int[] intArr=buildColumnSizeAndTotalWidth(columns,columnsWidthList);
			int colSize=intArr[0],totalWidth=intArr[1];
			int[] columnsWidth=new int[columnsWidthList.size()];
			for(int i=0;i<columnsWidthList.size();i++){
				columnsWidth[i]=columnsWidthList.get(i);
			}
			FullPageData pageData=PageBuilder.buildFullPageData(report);
			List<List<Page>> list=pageData.getPageList();
			if(list.size()>0){
				int columnCount=paper.getColumnCount();
				int w=columnCount*totalWidth+(columnCount-1)*paper.getColumnMargin();
				int size=columnCount+(columnCount-1);
				int[] widths=new int[size];
				for(int i=0;i<size;i++){
					int mode=(i+1)%2;
					if(mode==0){
						widths[i]=paper.getColumnMargin();
					}else{
						widths[i]=totalWidth;
					}
				}

JavaScript修改部分

export function confirm(msg,callback){
    const dialog=buildDialog('确认提示',msg,[{
        name:'确认',
        click:function(){
            callback.call(this);
        }
    }]);
    dialog.modal('show');
};

export function dialog(title,content,callback){
    const dialog=buildDialog(title,content,[{
        name:'确认',
        click:function(){
            callback.call(this);
        }
    }]);
    dialog.modal('show');
};

export function showDialog(title,dialogContent,buttons,events,large){
    const dialog=buildDialog(title,dialogContent,buttons,large);
    dialog.modal('show');
    if(events){
        for(let event of events){
            dialog.on(event.name,event.callback);
        }
    }
};

function buildDialog(title,dialogContent,buttons,large){
    const className='modal-dialog'+ (large ? ' modal-lg' : '');
    let modal=$(`<div class="modal fade" tabindex="-1" role="dialog" aria-hidden="true"></div>`);
    let dialog=$(`<div class="${className}"></div>`);
    modal.append(dialog);
    let content=$(`<div class="modal-content">
         <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">
               &times;
            </button>
            <h4 class="modal-title">
               ${title}
            </h4>
         </div>
         <div class="modal-body">
            ${typeof(dialogContent)==='string' ? dialogContent : ''}
         </div>`);
    if(typeof(dialogContent)==='object'){
        content.find('.modal-body').append(dialogContent);
    }
    dialog.append(content);
    let footer=$(`<div class="modal-footer"></div>`);
    content.append(footer);
    if(buttons){
        buttons.forEach((btn,index)=>{
            let button=$(`<button type="button" class="btn btn-default">${btn.name}</button>`);
            button.click(function(e){
                btn.click.call(this);
                if(!btn.holdDialog){
                    modal.modal('hide');
                }
            }.bind(this));
            footer.append(button);
        });
    }else{
        let okBtn=$(`<button type="button" class="btn btn-default" data-dismiss="modal">确定</button>`);
        footer.append(okBtn);
    }

    modal.on("show.bs.modal", function() {
        var index=1050;
        $(document).find('.modal').each(function (i,d) {
            var zIndex=$(d).css('z-index');
            if(zIndex && zIndex!=='' && !isNaN(zIndex)){
                zIndex=parseInt(zIndex);
                if(zIndex>index){
                    index=zIndex;
                }
            }
        });
        index++;
        modal.css({'z-index':index});
    });
    return modal;
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

csdn210333430

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值