我尝试使用barcode4j
lib创建条形码。这就是我所得到的:它看起来很流畅。这就是我的方式:
BitmapCanvasProvider provider = null;
Interleaved2Of5Bean bean = new Interleaved2Of5Bean();
int dpi = 100;
// Configure the barcode generator
bean.setModuleWidth(UnitConv.in2mm(1.0f /
dpi)); // makes the narrow
// bar
// width exactly
// one
// pixel
bean.doQuietZone(false);
provider =
new BitmapCanvasProvider(100, BufferedImage.TYPE_BYTE_GRAY,
true, 0);
bean.generateBarcode(provider, request.getParameter("barcode"));
provider.finish();
BufferedImage barcodeImage = provider.getBufferedImage();
response.setContentType("image/gif");
OutputStream outputStream = response.getOutputStream();
ImageIO.write(barcodeImage, "gif", outputStream);
outputStream.close();
如何增加其定义?
答案 0 :(得分:7)
好的,我找到了解决方案。这就是我的方式:
Interleaved2Of5Bean bean = new Interleaved2Of5Bean();
bean.setHeight(10d);
bean.doQuietZone(false);
OutputStream out =
new java.io.FileOutputStream(new File("output.png"));
BitmapCanvasProvider provider =
new BitmapCanvasProvider(out, "image/x-png", 110,
BufferedImage.TYPE_BYTE_GRAY, false,
0);
bean.generateBarcode(provider, request.getParameter("barcode"));
provider.finish();
BufferedImage barcodeImage = provider.getBufferedImage();
response.setContentType("image/x-png");
OutputStream outputStream = response.getOutputStream();
ImageIO.write(barcodeImage, "png", outputStream);
outputStream.close();
答案 1 :(得分:0)
我在jar文件中找到了一个示例(在示例目录中)。如果其他人正在寻找它我在这里发布。 此处还有list所有支持的条形码。
/*
* Copyright 2004 Jeremias Maerki.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import org.krysalis.barcode4j.impl.code39.Code39Bean;
import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;
import org.krysalis.barcode4j.tools.UnitConv;
/**
* This example demonstrates creating a bitmap barcode using the bean API.
*
* @author Jeremias Maerki
* @version $Id: SampleBitmapBarcodeWithBean.java,v 1.2 2006/11/07 16:45:28 jmaerki Exp $
*/
public class SampleBitmapBarcodeWithBean {
public static void main(String[] args) {
try {
//Create the barcode bean
Code39Bean bean = new Code39Bean();
final int dpi = 150;
//Configure the barcode generator
bean.setModuleWidth(UnitConv.in2mm(1.0f / dpi)); //makes the narrow bar
//width exactly one pixel
bean.setWideFactor(3);
bean.doQuietZone(false);
//Open output file
File outputFile = new File("out.jpg");
OutputStream out = new FileOutputStream(outputFile);
try {
//Set up the canvas provider for monochrome JPEG output
BitmapCanvasProvider canvas = new BitmapCanvasProvider(
out, "image/jpeg", dpi, BufferedImage.TYPE_BYTE_BINARY, false, 0);
//Generate the barcode
bean.generateBarcode(canvas, "123456");
//Signal end of generation
canvas.finish();
} finally {
out.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
还有一个更高级的示例,它将自定义元素添加到条形码
/*
* Copyright 2010 Jeremias Maerki
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* $Id: SampleBarcodeEnhanced.java,v 1.1 2010/10/05 08:56:04 jmaerki Exp $ */
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.font.FontRenderContext;
import java.awt.geom.AffineTransform;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import org.krysalis.barcode4j.impl.datamatrix.DataMatrixBean;
import org.krysalis.barcode4j.impl.datamatrix.SymbolShapeHint;
import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;
import org.krysalis.barcode4j.output.bitmap.BitmapEncoder;
import org.krysalis.barcode4j.output.bitmap.BitmapEncoderRegistry;
import org.krysalis.barcode4j.tools.UnitConv;
/**
* This class demonstrates how to create a barcode bitmap that is enhanced by custom elements.
*
* @version $Id: SampleBarcodeEnhanced.java,v 1.1 2010/10/05 08:56:04 jmaerki Exp $
*/
public class SampleBarcodeEnhanced {
private void generate(File outputFile) throws IOException {
String msg = "Sample Message";
String[] paramArr = new String[] {"Information 1", "Information 2", "Barcode4J is cool!"};
//Create the barcode bean
DataMatrixBean bean = new DataMatrixBean();
final int dpi = 200;
//Configure the barcode generator
bean.setModuleWidth(UnitConv.in2mm(8.0f / dpi)); //makes a dot/module exactly eight pixels
bean.doQuietZone(false);
bean.setShape(SymbolShapeHint.FORCE_RECTANGLE);
boolean antiAlias = false;
int orientation = 0;
//Set up the canvas provider to create a monochrome bitmap
BitmapCanvasProvider canvas = new BitmapCanvasProvider(
dpi, BufferedImage.TYPE_BYTE_BINARY, antiAlias, orientation);
//Generate the barcode
bean.generateBarcode(canvas, msg);
//Signal end of generation
canvas.finish();
//Get generated bitmap
BufferedImage symbol = canvas.getBufferedImage();
int fontSize = 32; //pixels
int lineHeight = (int)(fontSize * 1.2);
Font font = new Font("Arial", Font.PLAIN, fontSize);
int width = symbol.getWidth();
int height = symbol.getHeight();
FontRenderContext frc = new FontRenderContext(new AffineTransform(), antiAlias, true);
for (int i = 0; i < paramArr.length; i++) {
String line = paramArr[i];
Rectangle2D bounds = font.getStringBounds(line, frc);
width = (int)Math.ceil(Math.max(width, bounds.getWidth()));
height += lineHeight;
}
//Add padding
int padding = 2;
width += 2 * padding;
height += 3 * padding;
BufferedImage bitmap = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_BINARY);
Graphics2D g2d = (Graphics2D)bitmap.getGraphics();
g2d.setBackground(Color.white);
g2d.setColor(Color.black);
g2d.clearRect(0, 0, bitmap.getWidth(), bitmap.getHeight());
g2d.setFont(font);
//Place the barcode symbol
AffineTransform symbolPlacement = new AffineTransform();
symbolPlacement.translate(padding, padding);
g2d.drawRenderedImage(symbol, symbolPlacement);
//Add text lines (or anything else you might want to add)
int y = padding + symbol.getHeight() + padding;
for (int i = 0; i < paramArr.length; i++) {
String line = paramArr[i];
y += lineHeight;
g2d.drawString(line, padding, y);
}
g2d.dispose();
//Encode bitmap as file
String mime = "image/png";
OutputStream out = new FileOutputStream(outputFile);
try {
final BitmapEncoder encoder = BitmapEncoderRegistry.getInstance(mime);
encoder.encode(bitmap, out, mime, dpi);
} finally {
out.close();
}
}
/**
* Command-line program.
* @param args the command-line arguments
*/
public static void main(String[] args) {
try {
SampleBarcodeEnhanced app = new SampleBarcodeEnhanced();
File outputFile = new File("out.png");
app.generate(outputFile);
} catch (Exception e) {
e.printStackTrace();
System.exit(-1);
}
}
}
答案 2 :(得分:0)
使用以下链接下载jar文件: // http://www.onbarcode.com/tutorial/java-barcode-generation.html#1
/*
// Select a barcode type to create a Java barcode object
Code128 barcode = new Code128();
// Set barcode data text to encode
barcode.setData("Barcode-in-Java");
// Set barcode data text to encode
barcode.setX(2);
// Generate barcode & encode into GIF format
barcode.drawBarcode("C://barcode-code128.gif");
// Generate barcode & encode into JPEG format
barcode.drawBarcode("C://barcode-code128.jpg");
// Generate barcode & encode into EPS format
barcode.drawBarcode2EPS("C://barcode-code128.eps");
// Generate barcode & print into Graphics2D object
barcode.drawBarcode("Java Graphics2D object");
*/
String path=System.getProperty("user.home") "/Desktop";
String val = "val here"
Code39 barcode = new Code39();
barcode.setData(val);
barcode.setX(2);
barcode.drawBarcode(path "/" NIC ".png");