admin管理员组文章数量:1648915
itext7的出现使得生成个性化的pdf变得相当容易,但是itext7不能支持jdk1.6,如果要在jdk1.6上使用itext,那就只得使用itext5了。
下面是个人项目中使用过的,进行简单的陈列,如果有不妥的地方还望多多指教:
1、使用itext5,实现文本的的定位和字体加粗,文本格式化为中文。
导入jar包:itextpdf-5.5.13.jar。
代码如下:
private static final String fontPath = "simsun.ttf";
private static Document document;
public static void main(String[] args) throws DocumentException, IOException {
BaseFont bf = BaseFont.createFont(fontPath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
document = new Document(PageSize.A4);
PdfWriter pdfWriter = PdfWriter.getInstance(document, new FileOutputStream("a.pdf"));
pdfWriter.setPdfVersion(PdfWriter.PDF_VERSION_1_7);
document.open();
PdfContentByte cd = pdfWriter.getDirectContent();
//加载文本
cd.beginText();
//文字加粗
//设置文本描边宽度
cd.setLineWidth(0.5);
//设置文本为描边模式
cd.setTextRenderingMode(PdfContentByte.TEXT_RENDER_MODE_FILL_STROKE);
//设置文本为中文、和字体大小
cd.setFontAndSize(bf, 18);
//设置文本绝对坐标
cd.setTextMatrix(200,200);
//设置文本
cd.showText("你好 我来自未来1...");
//设置文本为描边模式,这样下面的文本就不会加粗了
cd.setTextRenderingMode(0);
cd.setFontAndSize(bf, 18);
cd.setTextMatrix(300,300);
cd.showText("你好 我来自未来2...");
//结束加载文本
cd.endText();
document.close();
}
结果截图:
2、使用itext5,实现画线条。
jar包同上。
代码如下:
//接着上面代码写的,初始化的一些加载同上。
PdfContentByte cd = pdfWriter.getDirectContent();
//设置线宽
cd.setLineWidth(2);
//设置线条起点的坐标
cd.moveTo(100, 200);
//设置线条终点的坐标
cd.lineTo(600, 200);
//设置线条颜色
cd.setColorStroke(new BaseColor(80, 80, 80));
//使用画笔画线条
cd.stroke();
//注意:如果上面不使用cd.stroke()方法,还是会画出两条线条,只是上面set方法会被下面同样的set覆盖。
cd.setLineWidth(1);
cd.moveTo(100, 200);
cd.lineTo(100, 800);
//注意:该方法会将整个PdfContentByte所控制的页面颜色全部设置,所以建议在设置文本之后使用。
cd.setColorStroke(new BaseColor(255, 0, 0));
cd.stroke();
结果展示:
3、使用itext5,实现加载图片。
jar包同上。
代码如下:
//接着上面代码写的,初始化的一些加载同上。
//加载图片
Image image = Image.getInstance("C:/Users/lenovo/Desktop/搜狗截图20181016162056.png");
//设置图片大小
image.scaleAbsolute(220, 60);
//设置图片绝对位置
image.setAbsolutePosition(50,150);
document.add(image);
结果展示:
4、使用itext5,实现下一页。
jar包同上。
代码如下:
//接着上面代码写的,初始化的一些加载同上。
PdfContentByte cd = pdfWriter.getDirectContent();
//新建一页
boolean newPage = document.newPage();
//加入文本
cd.beginText();
cd.setFontAndSize(bf, 18);
cd.setTextMatrix(200,800);
cd.showText("你好 我来自未来3...");
cd.endText();
结果展示:
注意点:尽管一个demo中使用的是同一个PdfContentByte,但是新建的下一页不会遗传上一页的字体加粗、设置颜色等功能的。
版权声明:本文标题:使用itextpdf5的PdfContentByte 进行文本的绝对定位和字体的加粗、导入图片、画指定位置线条、创建下一页。 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1729505639a1203595.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论