package pdfprint;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Font;
import com.itextpdf.text.pdf.AcroFields;
import com.itextpdf.text.pdf.Barcode128;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
/**
* itext编辑pdf
*/
public class MyItext {
public static void main(String[] args) throws IOException, DocumentException {
Map<String, String> data = new HashMap<String, String>();//要插入的数据
data.put("tagno", "AL0001(FW1111)");
data.put("dept", "9A68 L/P");
data.put("inventorydate", "20231227");
data.put("location", "R0001");
data.put("itenno", "K50-82-8080C1-1");
data.put("itenname", "CARRIERFILM/CM-TI040-0035");
data.put("qty", "60 pcs");
data.put("countby", "SHA24062何旭原");
data.put("checkby", "何旭原");
data.put("printdate", "20231227 12:19:45");
//生成条码
try {
// pdf模板所在路径,就是网站制作好后下载的pdf模板路径
String fileName = "H:\\DC马达部\\模板\\pdf-java.pdf";
PdfReader reader = new PdfReader(fileName);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
PdfStamper ps = new PdfStamper(reader, bos);
// 使用中文字体
BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.EMBEDDED);
// 接下来,你可以将这个字体应用到你的表单字段上
ArrayList<BaseFont> fontList = new ArrayList<BaseFont>();
fontList.add(bf);
AcroFields fields = ps.getAcroFields();
fields.setSubstitutionFonts(fontList);
for (String key : data.keySet()) {
String value = data.get(key);
fields.setField(key, value);
}
Barcode128 barcode128 = new Barcode128();
//条形码字号
String text = "R0001";
barcode128.setCode(text);
barcode128.setFont(null);
barcode128.setSize(15); //条形码高度
barcode128.setBarHeight(30);
barcode128.setBaseline(15);
barcode128.setStartStopText(false);
barcode128.setExtended(false);
//绘制条形码在第一页
PdfContentByte cb = ps.getOverContent(1);
//生成条形码图片
com.itextpdf.text.Image image128 = barcode128.createImageWithBarcode(cb, null, null);
//条形码位置
image128.setAbsolutePosition(96,233);
//加入条形码
cb.addImage(image128);
//必须要调用这个,否则文档不会生成的
ps.setFormFlattening(true);
//条码生成
Barcode128 barcode1289 = new Barcode128();
//条形码字号
barcode1289.setCode("K50-82-8080C1-1");
barcode1289.setFont(null);
barcode1289.setSize(15); //条形码高度
barcode1289.setBarHeight(30);
barcode1289.setBaseline(15);
barcode1289.setStartStopText(false);
barcode1289.setExtended(false);
//绘制条形码在第一页
//生成条形码图片
com.itextpdf.text.Image image1289 = barcode1289.createImageWithBarcode(cb, null, null);
//条形码位置
image1289.setAbsolutePosition(84,160);
//加入条形码
cb.addImage(image1289);
//必须要调用这个,否则文档不会生成的
ps.setFormFlattening(true);
//条码生成
ps.close();
//生成pdf路径存放的路径
OutputStream fos = new FileOutputStream("H:\\\\DC马达部\\\\模板\\\\pdf-java2.pdf");
fos.write(bos.toByteArray());
fos.flush();
fos.close();
bos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
导出的字体的颜色大小是否加粗在pdf模板中设置