- 浏览: 515821 次
- 性别:
- 来自: 惠州
文章分类
- 全部博客 (255)
- ant (1)
- springMVC (2)
- ajax (4)
- oracle (12)
- SSH (13)
- struts1 (2)
- Hibernate (14)
- spring (5)
- jstl (1)
- 连接池 (1)
- acegi (4)
- java (17)
- jquery (11)
- div+css (4)
- drupal (1)
- php (8)
- freemaker调模板生成静态页面 (1)
- xml (1)
- json (2)
- javascript (9)
- 正则表达式 (4)
- Ext (8)
- jdbc (1)
- sql server (2)
- perl (5)
- db4o (1)
- webservice (4)
- flex (13)
- it资讯 (1)
- joomla (0)
- 设计模式 (1)
- struts2 (4)
- s2sh (8)
- linux (3)
- ejb (2)
- android旅途 (24)
- android (36)
- C/C++ (16)
- mysql (1)
最新评论
-
fengyuxing168:
IBelyService bs = IBelyService. ...
为 Android 添加 Java 层服务也就是添加自定义的aidl服务到serviceManager 通过ServiceManager.getService取 -
dengzhangtao:
"由于ActivityManagerService是 ...
binder理解 -
yzyspy:
ActivityManagerService:startHom ...
Android的Launcher成为系统中第一个启动的,也是唯一的 -
Matchstick:
使用SELECT DISTINCT alias FROM Po ...
hibernate 一对多表查询时fetchMode.join 生成left outer join 出来数据重复问题 -
dlheart:
没看懂你什么意思啊,我遇到的问题是一对多,设了fetch = ...
hibernate 一对多表查询时fetchMode.join 生成left outer join 出来数据重复问题
最近用iText生成pdf文件供下载和当做附件email, 第一次使用,跨行和实现背景图片卡了n久,g了n久,都是提问的,没见给出的解答的,还得靠自己,倒腾了n久,总算解决了,贴出来!
iText的介绍参考http://www.china1024.com/bytesoft/info_show.jsp?news_id=968或者iText的官网,如果想做进一步的了解,到http://www.51leifeng.net/上下本<<iText in Action>>,英文的,耐心点就行了。下面直入主题。
1. iText的跨行
iText的API中Cell可以很容易实现跨行和跨列,但是没法设置列宽和列高(好像是,找了n久没有找到)。只能打PdfPCell的主意了(PdfPCell也是iText推荐的),但是PdfPCell中只有设置跨列的方法,没有提供跨行的方法。用table嵌套,在外层的table中嵌套table,应该可以实现跨列,html中有这样做过。表格是画出来,但是嵌套的表格之间的间隙没发去掉。其实table的嵌套思路是对的,但是应该把table放到cell(PdfPCell的对象)中,再将这个cell放到最外层的table中。总的思路:最外层的table中只addCell,嵌套的table放到被加入到外层table之中的cell中。有点拗口,看代码吧:
- package cn.chenkun.iText;
- import java.io.FileOutputStream;
- import com.lowagie.text.Document;
- import com.lowagie.text.PageSize;
- import com.lowagie.text.Paragraph;
- import com.lowagie.text.pdf.PdfPCell;
- import com.lowagie.text.pdf.PdfPTable;
- import com.lowagie.text.pdf.PdfWriter;
- public class Colspan {
- public static void main(String[] args) {
- colspan();
- }
- private static void colspan(){
- Document document = new Document(PageSize.A4, 36, 36, 36, 36);
- try {
- PdfWriter.getInstance(document, new FileOutputStream("d:\\coslpan.pdf"));
- document.open();
- PdfPTable table = new PdfPTable(4); // 最外层table
- float[] wid = {80f, 100f, 80f, 60f};
- table.setTotalWidth(wid);
- table.setLockedWidth(true);
- PdfPCell cell = null; // 最外层table的cell
- PdfPTable iTable = null; // 嵌套的table
- PdfPCell iCell = null; // 嵌套的table的cell
- iTable = new PdfPTable(3);
- float[] iWid = {80f, 100f, 80f};
- iTable.setTotalWidth(iWid);
- iTable.setLockedWidth(true);
- iCell = new PdfPCell(new Paragraph("column 1"));
- iCell.setFixedHeight(30);
- iTable.addCell(iCell);
- iCell.setColspan(2);
- iTable.addCell(iCell);
- iCell = new PdfPCell(new Paragraph("column 2"));
- iCell.setFixedHeight(30);
- iTable.addCell(iCell);
- iTable.addCell(iCell);
- iTable.addCell(iCell);
- iCell = new PdfPCell(new Paragraph("column 3"));
- iCell.setFixedHeight(30);
- iTable.addCell(iCell);
- iTable.addCell(iCell);
- iTable.addCell(iCell);
- cell = new PdfPCell(iTable); // 用这个table初始外层table的cell
- cell.setColspan(3); // 设置它跨3列
- cell.setFixedHeight(3*30); // 设置它的高度
- table.addCell(cell); // 将这个cell加入table中
- iTable = new PdfPTable(1);
- float[] iWid2 = {60f};
- iTable.setTotalWidth(iWid2);
- iTable.setLockedWidth(true);
- iCell = new PdfPCell(new Paragraph("i am here"));
- iTable.addCell(iCell);
- cell = new PdfPCell(iTable);
- cell.setFixedHeight(3*30); // 跨3列了
- table.addCell(cell);
- document.add(table);
- } catch (Exception de) {
- de.printStackTrace();
- }
- document.close();
- }
- }
2. iText的背景图片
iText中的PdfPCell都是有自己默认的布局的,要实现自己的布局,必须实现PdfPCellEvent接口,在方法cellLayout中定义自己的布局。更多信息见<<iText in Action>>中10.2 Working with iText’s direct content。Figure 10.6实际上已经实现了背景图片,这里将代码改写如下:
- package cn.chenkun.iText;
- import java.io.FileOutputStream;
- import com.lowagie.text.Document;
- import com.lowagie.text.Element;
- import com.lowagie.text.Image;
- import com.lowagie.text.PageSize;
- import com.lowagie.text.Rectangle;
- import com.lowagie.text.pdf.PdfContentByte;
- import com.lowagie.text.pdf.PdfPCell;
- import com.lowagie.text.pdf.PdfPCellEvent;
- import com.lowagie.text.pdf.PdfPTable;
- import com.lowagie.text.pdf.PdfWriter;
- public class PicBackGround {
- public static void main(String[] args) {
- picBg();
- }
- private static void picBg() {
- Document document = new Document(PageSize.A4, 36, 36, 36, 36);
- try {
- PdfWriter.getInstance(document, new FileOutputStream("d:\\testPicBG.pdf"));
- document.open();
- BGPic border = new BGPic();
- float wid = 80f;
- float hei = 100f;
- float[] widArr = { wid, wid };
- PdfPTable table = new PdfPTable(2);
- table.setTotalWidth(widArr);
- table.setLockedWidth(true);
- PdfPCell cell = null;
- for (int i = 1; i <= 4; i++) {
- Image img = Image.getInstance("d:/ma.jpg");
- cell = new PdfPCell(img, true);
- cell.setFixedHeight(hei);
- cell.setHorizontalAlignment(Element.ALIGN_CENTER);
- cell.setPadding(8);
- cell.setCellEvent(border); // 加入背景图片
- table.addCell(cell);
- }
- document.add(table);
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- document.close();
- }
- }
- }
- class BGPic implements PdfPCellEvent {
- public void cellLayout(PdfPCell cell, Rectangle rect, PdfContentByte[] canvas) {
- PdfContentByte cb = canvas[PdfPTable.BACKGROUNDCANVAS];
- Image img = null;
- try {
- img = Image.getInstance("d:/hai.jpg");
- img.scaleAbsolute(80, 100); // 设置背景图片的大小
- img.setAbsolutePosition(298, 606); // 设置第一个背景图片的绝对位置
- cb.addImage(img);
- img.setAbsolutePosition(217, 706); // 设置第二个背景图片的绝对位置
- cb.addImage(img);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
//---------------------------
百度里有搜到一种背景图设置法
Image jpgBack = Image.getInstance(xxxxx);
jpgBack.setAlignment(Image.UNDERLYING);
不过这种方法对表格不起作用
表格里加上图片后,文字怎么都写不到图片上去.
请有过经验的同志们,告知如何给表格加背景图
发表评论
-
关于JAVA多线程同步
2011-09-29 10:39 827因为需要,最近关注了一下JAVA多线程同步问题。JAVA多线程 ... -
java多线程之 wait(),notify(),notifyAll()
2011-05-27 17:25 1376wait(),notify(),notifyAll()不属 ... -
JAVA反射机制的学习
2010-11-15 22:54 899JAVA反射机制的学习2009-07-06 11:33JAVA ... -
Java线程:线程的交互
2010-07-21 09:26 946Java线程:线程的交互 ---------------- ... -
JSP数据导出到EXCEL超简便方法
2010-05-24 09:31 1675JSP数据导出到EXCEL简便方法(2008-11-19 15 ... -
iText经验总结
2010-05-04 21:49 2443iText经验总结 因为前些 ... -
org.apache.commons.lang.StringUtil 常用方法使用例子
2010-03-26 11:00 10741.空字符串检查使用函数: StringUtils.isBla ... -
java 多线程 实现
2010-03-10 15:20 992多线程是这样一种机制 ... -
java反射机制
2010-01-22 10:19 1013Reflection 是Java被视为动态(或准动态)语 ... -
利用iText写PDF心得
2009-08-11 09:56 1495利用iText写PDF心得 & ... -
使用itext生成pdf
2009-08-10 11:20 1450一、前言 在企业的信息系统中,报表处理一直占比较重要的作 ... -
java 生成excel
2009-05-15 11:24 16101.类文件makexls package com; impor ... -
jsp分页
2009-03-06 10:43 872public class PageHelper { //to ... -
JSP环境配置使用fckeditor
2009-02-18 09:59 1240JSP环境配置使用fckeditor 录入时间 2008-12 ... -
使用J2SE API读取Properties文件的六种方法
2008-10-07 19:27 801使用J2SE API读取Properties文件的六种方法 ... -
native2ascii转码
2008-10-07 17:22 14261,原理 Property 文件中 ...
相关推荐
图表分类ppt
资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立
BDE_Installer_for_RAD_Studio_10.2_Tokyo.7z
箭头指向中心PPT模板素材
永磁同步电机MTPA控制仿真模型和矢量控制仿真模型,模型全部自己搭建,控制策略采用离散模型仿真,仿照真实微控制器的控制,该模型采用固定的电机参数计算出电流参考值,后期会开发出电机磁饱和交叉耦合变参数的仿真模型,图一为idiq电流真实值随负载的变化的控制波形,图二为MTPA和矢量控制的电流幅值的波形对比,该模型真实度极高,电流环转速环带宽可调,响应快慢可以自己设计。
五项说明关联关系PPT素材
图表分类ppt
突出显示强调关系PPT模板素材
springboot项目基于Spring Boot的民宿租赁系统的设计与实现,含有完整的源码和报告文档
MATLAB代码:基于数据驱动的中央空调系统可控潜力评估 关键词:数据驱动 中央空调 需求响应 可控潜力评估 编程语言:matlab平台 内容简介: 代码主要做的是住宅空调负荷的可调度潜力评估,因为住宅空调负荷是一种具有一定灵活性和可控性的需求响应资源,本代码首先评估单一客户的空调可控潜力,进而发展为大规模地区的空调的需求响应潜力以及规模的评估。 采用静态和动态模型参数估计的分段分析方法,深入分析了ACLs的消费行为,并针对不同时间尺度的需求响应问题,以成本效益为目标,优化空调负荷的需求响应行为。 最后以实际的算例数据,验证了所提出方法的准确性和鲁棒性,代码出图效果极好,而且研究的问题比较全面,适合在此基础上稍加修改形成自己的成果
量产汽车VCU控制策略模型及文档+2份 两个vcu模型 第一个模型为量产项目模型,纯电动车VCU控制策略模型,包含纯电动汽车完整控制策略模块,按autosar价格建模,可以进行代码生成,详细见图片。 第二个模型:包含相关模型设计说明文档
偏移容忍度谐振补偿网络方设计方法研究 simulink仿真实现。 磁耦合谐振式无线电能传输中,相控电容式补偿方法研究 simulink仿真实现
这个饮料销售数据集是研究饮料行业的宝贵资源,它模拟了真实的销售场景,涵盖了众多关键信息。数据集包含10个主要字段,分别是订单ID、客户ID、客户类型(B2B或B2C)、产品名称、产品类别、单价、购买数量、产品折扣、折扣后的总价、客户所在地区以及订单日期。这些字段共同构成了一个全面的销售数据框架,为多维度的分析提供了可能。 从客户类型来看,B2C客户占比64%,而B2B客户占36%,且B2B客户通常能获得折扣,这一特点为分析不同客户群体的销售策略和利润贡献提供了重要依据。 在价格方面,单价和总价的分布范围相当广泛,单价从0.32到超过100不等,总价的分布也呈现出类似的广泛性,这为探究价格与销售量之间的复杂关系、定价策略的有效性等关键问题提供了丰富的数据样本。 总体而言,这个数据集为饮料行业的市场分析、销售策略制定、客户细分研究、产品定价优化以及区域市场拓展等多方面研究提供了极具价值的数据基础。它能够帮助相关企业和研究人员深入洞察饮料销售的各个环节,从而做出更加科学、合理的决策,推动饮料行业的发展。
springboot项目基于Web的课程设计选题管理系统,含有完整的源码和报告文档
TMS WEB Cor0820(中文版).docx
电力系统调度 源荷不确定性matlab 程序语言:matlab+yalmip(可适用cplex或者gurobi作为求解器) 关键词:优化调度 源荷不确定性 模糊机会约束 碳交易 内容:参照考虑源荷两侧不确定性的含风电的低碳调度,引入模糊机会约束,程序包括储能、风光、火电机组及水电机组,解决了目标函数含有分类特征的约束问题、非线性约束 目标的线性转化问题,且考虑了机组的启停时间约束,目标函数考虑运行成本、弃风弃光和碳成本。 优势:有详细的资料,程序完整性好、模块化编程、注释逻辑分明、方便学习
springboot项目基于springboot的招聘系统的设计与实现,含有完整的源码和报告文档
几行简单判断闰年平年的代码
基于微信小程序的校园疫情防控管理平台设计与实现.docx
股票因子数据,包括了13411个研究分析股票的因子