使用itextpdf5的PdfContentByte 进行文本的绝对定位和字体的加粗、导入图片、画指定位置线条、创建下一页。

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();
    }

结果截图:

使用itextpdf5的PdfContentByte 进行文本的绝对定位和字体的加粗、导入图片、画指定位置线条、创建下一页。_第1张图片

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();

结果展示:

使用itextpdf5的PdfContentByte 进行文本的绝对定位和字体的加粗、导入图片、画指定位置线条、创建下一页。_第2张图片

3、使用itext5,实现加载图片。

  jar包同上。

  代码如下:

//接着上面代码写的,初始化的一些加载同上。
//加载图片
Image image = Image.getInstance("C:/Users/lenovo/Desktop/搜狗截图20181016162056.png");
//设置图片大小
image.scaleAbsolute(220, 60);
//设置图片绝对位置
image.setAbsolutePosition(50,150);

document.add(image);

结果展示:

使用itextpdf5的PdfContentByte 进行文本的绝对定位和字体的加粗、导入图片、画指定位置线条、创建下一页。_第3张图片

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();

结果展示:

使用itextpdf5的PdfContentByte 进行文本的绝对定位和字体的加粗、导入图片、画指定位置线条、创建下一页。_第4张图片

 

注意点:尽管一个demo中使用的是同一个PdfContentByte,但是新建的下一页不会遗传上一页的字体加粗、设置颜色等功能的。

你可能感兴趣的:(使用itextpdf5的PdfContentByte 进行文本的绝对定位和字体的加粗、导入图片、画指定位置线条、创建下一页。)