Java后台生成條形碼(linux)生成條形碼BarcodePDF417


生成條形碼BarcodePDF417

import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import javax.imageio.ImageIO;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import java.io.*;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import java.awt.Color;  
import java.awt.Font;  
import java.awt.Graphics;  
import java.awt.Graphics2D;  
import java.awt.Image;  
import java.awt.font.FontRenderContext;  
import java.awt.font.TextAttribute;  
import java.awt.image.BufferedImage;  
import java.io.BufferedOutputStream;  
import java.io.FileOutputStream;  
import java.io.IOException;  
import java.io.OutputStream;  
 
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;

import com.itextpdf.text.BadElementException;  
import com.itextpdf.text.pdf.BarcodePDF417; 
public static void createPdf417()throws IOException{ BarcodePDF417 pdf = new BarcodePDF417(); /*String str = new String(codeString.getBytes(),"GBK");*/ /* pdf.setText(codeString.getBytes("GBK")); pdf.setYHeight(4);*/ pdf.setText(codeString.getBytes("GBK")); Image pdfImg = pdf.createAwtImage(Color.black, Color.white); BufferedImage img = new BufferedImage((int)pdfImg.getWidth(null), (int)pdfImg.getHeight(null), BufferedImage.TYPE_INT_RGB); Graphics g = img.getGraphics(); g.drawImage(pdfImg, 0, 0, Color.white, null); OutputStream os = new BufferedOutputStream(new FileOutputStream("C:\\Users\\Lenovo\\Desktop\\111.png")); ImageIO.write(img, "PNG", os); }
  private static final String codeString =
              "XXXXXXXXX^123XXXXXXXXXX3XXX3^XX^自XXXXXXXXXXXXXXXX料^2020-12-08 17:56:34.0^XXXXXX單位^2020-12-08 17-56-44^XXXXXXXXXX機構^|";  
    public static void main(String[] args) throws IOException {
        
         createPdf417();
      
        
    }

完美生成pdf條形碼,但是如果改變圖片邊大小來顯示可以用下面的方法實現(下面方法可能會導致圖片過小或者過大掃碼槍不能識別

本人當時生成條形碼的圖片沒改變大小,但是放到PDF文件上的時候通過方法控制了一下大小

(PS詳情:https://www.cnblogs.com/sjzxs/p/14068392.html)

/**
     * 改變圖片的大小
     * @return boolean
     */
    public static boolean readImage(  ) {
    //設定要生成的新圖片的寬高和圖片格式    
    BufferedImage newbi = new BufferedImage(300, 50, BufferedImage.TYPE_INT_BGR);
        boolean val = false;
        try {
            //從硬盤讀取一張圖片
            BufferedImage oldbi = ImageIO.read(new File("C:\\Users\\Lenovo\\Desktop\\111.png"));
            //把讀過的來的圖片畫到設定好的新圖片上
            newbi.getGraphics().drawImage(oldbi, 0, 0, 300, 50, null);
            //通過ImageIO寫到硬盤上去
            val = ImageIO.write(newbi, "png", new File("C:\\Users\\Lenovo\\Desktop\\11133.png"));
            return val;
        }catch(IOException e) {
            e.printStackTrace();
        }
        return val;
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM