使用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...

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

所需jar包 : import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.F...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

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

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

【教程】如何在C#中创建PDF417条码

Spire.Barcode是一款专业的条形码工具,教程主要讲述了如何在C#中创建PDF417条码。...

Itext 使用入门 之 创建pdf 文档 附中文解决方案

Itext.jar 的版本是 5.0.5 往 c:/test.pdf 文件写入中文 [java] view plaincopy Documen...

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

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

Freemaker 模板生成html文件带barcode4j条形码并转PDF

前面野了三篇博客,现在直接结合在一起做一个实例首先生成条形码并且放入html转换成pdf下载下来,将所有功能集合在一起 1.条形码String barcode=BarCodeUtil.create3...

barcode4j 条形码使用

用java生成条形码,barcode4j得应用    1.去http://barcode4j.sourceforge.net/下载文件,(源代码和生成好的都要下载)     2.解压barcode4j...

用java生成条形码,barcode4j得应用

最近一个oa系统用到了条形码,刚开始打电话给卖条形码打印机的那个公司(因为客户在他那里买的),看能不能提供一些接口规范什么的,结果说要提供接口可以,但必须交钱,心想算了,还是自己网上找找自己想办法解决...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用barcode4j+itextpdf把条形码写入PDF文件
举报原因:
原因补充:

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