java+itextpdf+barcode128根据pdf模板填入数据,根据数据生成条形码放入pdf中的指定位置

本文介绍了如何使用iTextPDF库在Java中操作PDF,包括读取模板、填充数据、添加条形码,并保存生成的新PDF文件。
摘要由CSDN通过智能技术生成
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模板中设置

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用iText库可以很方便地生成PDF文件,并在其添加条形码。下面是一个使用iText生成PDF文件并添加条形码的示例代码: ```java import com.itextpdf.io.font.FontConstants; import com.itextpdf.kernel.colors.Color; import com.itextpdf.kernel.colors.DeviceRgb; import com.itextpdf.kernel.geom.Rectangle; import com.itextpdf.kernel.pdf.PdfDocument; import com.itextpdf.kernel.pdf.PdfWriter; import com.itextpdf.kernel.pdf.canvas.PdfCanvas; import com.itextpdf.kernel.pdf.xobject.PdfFormXObject; import com.itextpdf.layout.Document; import com.itextpdf.layout.element.Paragraph; import com.itextpdf.layout.property.TextAlignment; import com.itextpdf.text.pdf.Barcode128; import java.io.FileNotFoundException; public class BarcodeGenerator { public static void main(String[] args) { String outputFilePath = "path/to/output.pdf"; String barcodeText = "1234567890"; try { // 创建PDF文档 PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outputFilePath)); Document doc = new Document(pdfDoc); // 创建条形码对象 Barcode128 barcode = new Barcode128(pdfDoc); barcode.setCode(barcodeText); // 设置条形码的颜 Color barcodeColor = new DeviceRgb(0, 0, 0); // 黑 barcode.setColor(barcodeColor, null); // 将条形码绘制到PDF页面上 PdfFormXObject barcodeXObject = barcode.createFormXObject(pdfDoc); PdfCanvas canvas = new PdfCanvas(pdfDoc.addNewPage()); canvas.addXObject(barcodeXObject, 36, 36); // 添加条形码文本 Paragraph text = new Paragraph(barcodeText) .setFontFamily(FontConstants.COURIER) .setFontSize(12) .setTextAlignment(TextAlignment.CENTER); doc.add(text); // 关闭文档 doc.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } } } ``` 这段代码使用了iText库的`Barcode128`类来生成条形码,并使用`PdfCanvas`将条形码绘制到PDF页面上。同时,还添加了条形码的文本内容。你可以根据需要修改条形码的颜位置和文本样式等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值