初学Itext 生成PDF 表格,条形码(一维),图片

package com.itext.pdf.barcode;

import java.io.FileOutputStream;

import com.itextpdf.text.Document;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.Image;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.Barcode128;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;

public class Test {

public static void main(String[] args) throws Exception{

Document document = new Document(PageSize.A4,0,0,0,0);
PdfWriter writer=null;
try{

//支持中文
BaseFont bfChinese = BaseFont.createFont("STSong-Light","UniGB-UCS2-H",false);

//设置字体
Font fontsize4 = new Font(bfChinese,4,Font.NORMAL);
Font fontsize5 = new Font(bfChinese,5,Font.BOLD);
Font fontsize6 = new Font(bfChinese,6,Font.BOLD);
Font fontsize10 = new Font(bfChinese,10,Font.BOLD);
Font fontsize8 = new Font(bfChinese,8,Font.BOLD);


writer = PdfWriter.getInstance(document, new FileOutputStream("H:/Projece_demo/test1.pdf"));

document.open();

//主表格
PdfPTable mainTable = new PdfPTable(2);    
mainTable.setTotalWidth(320);
mainTable.setLockedWidth(true);

//默认无边框
mainTable.getDefaultCell().setBorder(PdfPCell.NO_BORDER);



//表格靠左对齐
mainTable.setHorizontalAlignment(Element.ALIGN_LEFT);

//****************左表格begin*********************S
PdfPTable leftTable = new PdfPTable(1);

leftTable.getDefaultCell().setBorder(PdfPCell.NO_BORDER);

leftTable.setHorizontalAlignment(Element.ALIGN_LEFT);


//==================左表格上部分 begin=================

PdfPTable topTable = new PdfPTable(2);
topTable.getDefaultCell().setBorder(PdfPCell.NO_BORDER);

topTable.getDefaultCell().setBorder(PdfPCell.NO_BORDER);

topTable.setHorizontalAlignment(Element.ALIGN_LEFT);

//设置表格宽度
topTable.setTotalWidth(130);

//锁定表格宽度
topTable.setLockedWidth(true);

topTable.addCell(new Paragraph("Return Mail Address : \nMAIL RETURNS PO BOX\n694 HAYES UB3 9PB\n\nUNITED KINGDOM",fontsize4));

//===========左上角字符end=================


//===============image begin===============

Image img = Image.getInstance("H:/Projece_demo/logo.gif");

//自动调整图片适应单元格
topTable.addCell(new PdfPCell(img,true));

//===============image end===============

leftTable.addCell(topTable);
//==================左表格上部分end=================



//===========中间表格begin============
PdfPTable amongTable = new PdfPTable(1);
amongTable.getDefaultCell().setBorder(PdfPCell.NO_BORDER);

amongTable.addCell(new Paragraph("Airmail",fontsize8));
amongTable.addCell(new Paragraph("Attn:Reinhard Scheffler            DE",fontsize10));
amongTable.addCell(new Paragraph("Adds:Hoiminger Str.4",fontsize8));
amongTable.addCell(new Paragraph("Havetoft",fontsize8));
amongTable.addCell(new Paragraph("24873",fontsize8));
amongTable.addCell(new Paragraph("GERMANY"));

//将中间部分添加到左表格中
leftTable.addCell(amongTable);

//==========中间部分end ============



//===== 下部分begin=================

//下部分的表格
PdfPTable underTable = new PdfPTable(2);
underTable.getDefaultCell().setBorder(PdfPCell.NO_BORDER);

//=========添加条形码begin===================
PdfContentByte cd = writer.getDirectContent();

Barcode128 code128 = new Barcode128();

code128.setCode("SHA201204A7073");

Image image128 = code128.createImageWithBarcode(cd, null, null);

//新建列
PdfPCell barcodeCell = new PdfPCell(image128);
barcodeCell.setColspan(2); //垮2列
barcodeCell.setHorizontalAlignment(Element.ALIGN_CENTER);
barcodeCell.setBorder(PdfPCell.NO_BORDER);

underTable.addCell(barcodeCell);
//=========添加条形码end===================

underTable.addCell(new Paragraph("LYTPY",fontsize4));
underTable.addCell(new Paragraph("DC065653]  RefNo:SHA201204A7073",fontsize4));
underTable.addCell(new Paragraph("CS:S0283  ",fontsize4));

PdfPCell dateCell = new PdfPCell(new Paragraph("07/19 17:34:26",fontsize4));
dateCell.setHorizontalAlignment(Element.ALIGN_RIGHT);
dateCell.setBorder(PdfPCell.NO_BORDER);

underTable.addCell(dateCell);

//将下部分添加到左表格
leftTable.addCell(underTable);

//=====下部分end====================

//****************左表格end****************



//****************右表格begin****************
PdfPTable rightTale =new PdfPTable(3);

rightTale.getDefaultCell().setBorder(PdfPCell.NO_BORDER);

rightTale.setHorizontalAlignment(Element.ALIGN_LEFT);


PdfPCell cell1 = new PdfPCell(new Paragraph("配货单  (贴到包装外,邮政必扣件)",fontsize8));
cell1.setColspan(3);
cell1.setHorizontalAlignment(Element.ALIGN_CENTER);
cell1.setBorder(PdfPCell.NO_BORDER);

PdfPCell cell2 = new PdfPCell(new Paragraph("4PX联邮通平邮",fontsize5));
cell2.setColspan(3);
cell2.setHorizontalAlignment(Element.ALIGN_CENTER);
cell2.setBorder(PdfPCell.NO_BORDER);

PdfPCell cell3= new PdfPCell(image128);
cell3.setColspan(3);
cell3.setHorizontalAlignment(Element.ALIGN_CENTER);
cell3.setBorder(PdfPCell.NO_BORDER);



rightTale.addCell(cell1);
rightTale.addCell(cell2);
rightTale.addCell(cell3);

//============配货信息begin=========================
rightTale.addCell(new Paragraph("序号",fontsize6));
rightTale.addCell(new Paragraph("配货信息",fontsize6));
rightTale.addCell(new Paragraph("数量",fontsize6));


rightTale.addCell(new Paragraph("1",fontsize6));
rightTale.addCell(new Paragraph("Computer Parts",fontsize6));
rightTale.addCell(new Paragraph("1",fontsize6));

//============配货信息end=========================


//****************右表格end****************

//组装表格
mainTable.addCell(leftTable);
mainTable.addCell(rightTale);

//将表格写入PDF中

document.add(mainTable);
System.out.println("SUCCESS");

}catch (Exception e) {
e.printStackTrace();
}
document.close();


}
}

猜你喜欢

转载自lucifer-li6.iteye.com/blog/1637687