使用barcode4j+itextpdf把条形码写入PDF文件

原创 2015年07月07日 14:41:05

项目中需要在打印文件时生成一个条形码,并把条形码加在文件第一页的左上角一同打印出来,在此分享一下,具体代码如下:

首先使用了barcode4j生成条形码

/**
     * 生成条形码
     * @param code 生成条码码的编号
     * @throws Exception
     */
private static byte[] genBarCodeJpg(String barCode) throws Exception{
        Code128Bean bean = new Code128Bean();
        final int dpi = 250;
        //样式
        bean.setModuleWidth(0.21);
        bean.setBarHeight(7);
        bean.doQuietZone(false);
        bean.setQuietZone(2);

        //两边空白区        
        bean.setFontName("Helvetica");
        bean.setFontSize(3);
        bean.setMsgPosition(HumanReadablePlacement.HRP_BOTTOM);

        ByteArrayOutputStream out = null;
        try {
            out = new ByteArrayOutputStream();
            BitmapCanvasProvider canvas = new BitmapCanvasProvider(out,
                    "image/png", dpi, BufferedImage.TYPE_BYTE_BINARY
                    , true, 0);

            bean.generateBarcode(canvas, barCode);
            canvas.finish();
            return out.toByteArray();

        } catch (Exception e) {
            LOG.error(e.getMessage(), e);
            e.printStackTrace();
        } finally {
            try {
                if (out != null)
                    out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

然后通过itextpdf把条形码写入文件

 /**
     * 将条形码写入PDF文件
     * @param pdfFile PDF类型的文件(word等需要转换为PDF)
     * @param barcode 生成条形码的code
     * @return
     * @throws Exception
     */
    private File pdfAddControlCode(File pdfFile, String barCode)throws Exception {
        if(StingUtils.isBlank(barCode)){
            return pdfFile;
        }
        com.itextpdf.text.Font wf = new com.itextpdf.text.Font(DocumentPlugin.FONT_SIMHEI, 19);
        wf.setColor(BaseColor.BLUE);

        InputStream is = new FileInputStream(pdfFile);
        PdfReader reader = new PdfReader(is);

        File file = File.createTempFile(String.valueOf(System.nanoTime()), ".pdf");
        PdfStamper stamp = new PdfStamper(reader, new FileOutputStream(file));

        //设置文件为只读
        //stamp.setEncryption(null, OWNER_PASSWORD.getBytes(), 0, PdfWriter.ENCRYPTION_AES_128);

        //PDF文件的总页数
        //int number_of_pages = reader.getNumberOfPages();
        //取得第一页
        com.itextpdf.text.Rectangle rectangle = reader.getPageSize(0);
        float width = rectangle.getWidth();
        float height = rectangle.getHeight();

        //是否竖版
        //boolean direction = height >= width;

        //取得PDF文件的第一页
        // getOverContent 水印会把正文盖住    getUnderContent 水印会被正文的图片盖住        
        PdfContentByte contentByte = stamp.getOverContent(0);

        PdfGState gs = new PdfGState();
        gs.setFillOpacity(0.7f);// 设置透明度
        gs.setStrokeOpacity(0.7f);
        contentByte.setGState(gs);

        //在第一页加上条形码
        com.itextpdf.text.Image img = com.itextpdf.text.Image.getInstance(genBarCodeJpg(barCode));
        img.setAlignment(1);//居中显示

        //显示位置,根据需要调整
        img.setAbsolutePosition(100, height - 40);

        //显示为原条形码图片大小的比例,百分比
        img.scalePercent(30);

        contentByte.addImage(img);

        stamp.close();
        IOUtils.closeQuietly(is);

        return file;
    }
{CSDN:CODE:738333}
版权声明:本文为原创文章,转载请注明出处。

iText生成条形码与二维码

生成barcode的代码主要都是源于iText官网上提供的样例代码,不过使用中文标签的时候就会出现中文部分为空白的情况。 结合其他在iText中使用中文的情况,首先需要下载itext-asian.j...
  • njchenyi
  • njchenyi
  • 2013年07月19日 15:47
  • 8731

Java 生成条码 保存在pdf上例子(亲测)

  • 2018年01月04日 18:01
  • 3.35MB
  • 下载

iText7 itextpdf/barcodes

  • 2017年10月18日 13:00
  • 142KB
  • 下载

iText官方教程

如果要导出PDF文件,首选当然是iText,从网上也找了些资料,有很多,也有些乱。 自己做了个例子,感觉还是很浅,深入的内容还是研究不透。下载了官方的jar包,本来想看看 里面的Demo,结果只有...
  • lushuaiyin
  • lushuaiyin
  • 2012年10月27日 14:52
  • 4609

java操作pdf生成条形码与图片水印

所需jar包 : import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.F...
  • u012102536
  • u012102536
  • 2017年04月23日 18:07
  • 607

【教程】将Java条形码添加到PDF文档的两种方法

jPDFProcess是用于PDF文件的Java库,可用作向用户传递自定义PDF内容或者对引入的PDF内容进行处理和操作。本教程演示了使用jPDFProcess将Java条形码添加到PDF文档的两种方...
  • cocacola456
  • cocacola456
  • 2017年05月23日 17:47
  • 477

java使pdf做成条形码和图片水印

  • 2017年05月18日 11:07
  • 6KB
  • 下载

iReport条形码

  • 2014年01月05日 12:39
  • 924B
  • 下载

C#写PDF文件类库PDF File Writer介绍

.NET平台开源项目速览(16)C#写PDF文件类库PDF File Writer介绍 阅读目录 1.PDF File Writer基本介绍2.一个简单的使用案...
  • lenovouser
  • lenovouser
  • 2016年06月22日 08:25
  • 669

qt+zint实现打印一维条形码

通过zint实现打印条形码
  • zhang_ruiqiang
  • zhang_ruiqiang
  • 2015年10月09日 09:42
  • 2329
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用barcode4j+itextpdf把条形码写入PDF文件
举报原因:
原因补充:

(最多只允许输入30个字)