??xml version="1.0" encoding="utf-8" standalone="yes"?>
Barcode4J is a flexible generator for barcodes written in Java and available under the Apache License v2.0. Features: Extensions for Apache FOP, Xalan-J and SAXON, Servlet, command-line interface, output to SVG, EPS, Java2D/AWT and bitmaps.
相关文章: http://www.javaresearch.org/article/71081.htm Barcode功能说明 条Ş码barcode4j的?/a>
2007-06-18
前几天老大说要我弄下条形码Q然后我׃|google了一下,用的比较多的是barbecue和barcode4j?
我先使用的是barbecueQ条形码是可以显C出来,可是下面的对应数字却不能昄Q当然可以自己手动加上去Q不q那׃是一张图片里面的了,排版也不是很好看。因此我p了一下barcode4jQ效果挺好的Q所以把使用Ҏ贴上来,l刚接触java的朋友们一点借鉴?
1?google或者摆渡一下barcode4j要用的东东,下蝲压羃包barcode4j-2.0alpha2-bin.zip和barcode4j-2.0alpha2-src.zip?
2?解压barcode4j-2.0alpha2-bin.zipq个包,在build目录下有barcode4j.jarQ在lib目录下有avalon-framework-4.2.0.jarQ?barcode4j.jar和avalon-framework-4.2.0.jard到项目的lib中,h工程Q然后在目配置中将q两个jar包添加到classpath里面厅R?
3?解压barcode4j-2.0alpha2-src.zipQ将src\java\org\krysalis\barcode4j\servlet目录下的BarcodeServlet.javacȝ代码拷出来,修改默认的图片显C方式,BarcodeServlet.javaW?68行的默认囄昄格式ҎjpegQ因Z是所有的览器都支持svg格式Q也不是所有的览者都愿意l自q览器加一个这L插gQ?
4?以下这Dservlet配置在web.xml?
<servlet>
<servlet-name>BarcodeServlet</servlet-name>
<servlet-class>com.yourname.BarcodeServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>BarcodeServlet</servlet-name>
<url-pattern>/barcode</url-pattern>
</servlet-mapping>
4?在页面中d<img src="<%=request.getContextPath() %>/barcode?msg=12345678" height="50px" width=130px/>
5?查看该页面就可以发现条Ş码ؓ?2345678”的囄了,当然了图片大就自己讄了?
呵呵Q虽然是很简单的东西Q但是希望能寚w要的朋友有所帮助?
Barcode功能说明
FengShen_Xia 整理 更新Q?007-05-31 13:45:48 版本: 1.0
Barcode1.0功能说明
一、Barcode目说明Q?br> 利用Barcode4j开源项目开发面向java bs的条形码打印功能?br>二、Barcode目功能Q?br> 1、利用Barcode4j目实现8U类型条形码?br> 2、通过url调用实现web面昄条Ş码?br> 3、通过xml文g配置实现预定义条码类型?br> 4、实现所见所得的条Ş码调试、配|功能?br>三、Barcode实现步骤
1、将barcode4j.jar、barcode.jar复制到\webRoot\WEB-INF\lib目录下?br> 2、在\webRoot\WEB-INF\web.xml中添加BarCodeServlet
<servlet>
<servlet-name>barcode-invoker</servlet-name>
<servlet-class>barcode.servlet.BarCodeServlet</servlet-class>
<init-param>
<param-name>conf</param-name>
<param-value>/conf/barcode_conf.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>barcode-invoker</servlet-name>
<url-pattern>*.barcode</url-pattern>
</servlet-mapping>
BarCodeServlet说明Q?br>1、conf参数用来讄预定义条码类型,不设|没有预定义cd?br>2?conf/barcode_conf.xml为预定义条码cd配置文g。文件放在\webRoot\WEB-INF\classes\conf\目录下?br>3?.barcode昄条码的url识别?br>3、在web面中调用url?br>案例:
1?lt;img src=?CODE39.barcode?code=123456789?gt;
2?lt;img src=?_a1.barcode?code=123456789?gt;
URL说明Q?br>[cd*]. barcode?code**=...&其他参数***
*Q类型分固定cdQ?0U)和预定义cdQ类型前加_Q?br>**Qcode是必要参数?br>***Q其他参数用来丰富条码显C效果?br>四、参数说明:
名称 cd 默认?nbsp; 说明
解析? dpi int 150 D大条码越长,分L率越高?br>留空?nbsp; quietZone boolean false 条码两端是否加空?br>取反 antiAlias boolean false 条码内取反,具体功能不详
囄反{ orientation int 0 旋{条码,可选ؓ[0, 90, 180, 270, -90, -180 ,-270]
高度 barHeight double 15 条码昄高度Qؓ比例?br>字体昄 hrp int 2 字体昄位置Qؓ0时候屏蔽fontName、fontSize参数?br>0=HRP_NONE
1=HRP_TOP
2=HRP_BOTTOM
字体名称 fontName String Helvetica 跟随条码的字体类型,比如Q宋体、黑体等{?br>字体大小 fontSize double 2.8 跟随条码的字体大,为比例数
五、xml文g说明Q?br><?xml version="1.0" encoding="GBK"?>
<barcode_conf>
<a3 fontSize="4" fontName="黑体" hrp="0" barHeight="23" orientation="0" antiAlias="false" quietZone="false" dpi="200" type="CODE39"/>
<a2 type="CODE39"/>
<a1 type="CODE39"/>
</barcode_conf>
案例中定义了a1、a2、a3三个预定义类型。可以设|?U参敎ͼ其中
type是必要参数ƈ对应10U基本条码类型?br>注意URL、参数和xml文gnode属性的大小?
六、条码调试程序功能说明:
1、显C图片:Ҏ填写?0个参数动态显C条码。打C码和cd为必选条件?br>2、保存设|:对调试的条码样式比较满意后,赐予~号后保存在下面列表里供以后调用昄或生成配|。注意编号不能重复?br>3、列表显C:可以保存的配置重新昄?br>4、列表删除:删除该行配置?br>5、显C全部:保存的所有条码配|显C出来,以供打印校验使用?br>6、显C配|:保存的所有条码配|显CZؓ预定义xml格式?br>7、资源下载:为bs目集成barcode提供资源样例下蝲?br>8、复制URLQ将当前昄条码的url路径复制的系l粘贴板上(only IEQ?br>9、原始比例:条码图形羃放比例恢复到100%Qonly IEQ?br>10、条码羃放:在选中条码~放框的情况下,点击条码囄后可以用鼠标滚轮实现20%-500%囄~放功能Qonly IEQ?br>以上功能在IE、firefox下调试成功?br>七、图?br>cd Barcode type PNG graphic
CODE39 Code 39
CODE128 Code 128
INT2OF5 Interleaved 2 of 5
CODABAR Codabar
UPCA UPC-A
UPCE UPC-E
EAN13 EAN-13
EAN8 EAN-8
PDF417 PDF417
DATAMATRIX DataMatrix
不过, 又有人指?CGLIB 复制 Bean 速度更快, 效率更高(目前未做相x?!
static BeanCopier copy = BeanCopier.create(Bean.class, Bean2.class, false);
void beanCopies(Object source , Object target)?
copy.copy(source, target, null);
}
先说一下搭建测试FTP服务? 一般Windows下用的多的有Server-U(收费){? 开源的有FileZilla FTP Server(l测试貌似无法上传超q?00MB的文? 不知道哪里有讄, 最后否定了), 目前使用的是一Ƒօ费绿色小巧的FTP服务器来做测? TYPSoft FTP Server. 下蝲后直接解压羃卛_q行, 不过如果要显CZ文界面的? 请修改config.ini:
LangFile=chineses
之后建立用户q行试可以了. 界面如下所C?
一般的客户端连接中文Windows下的FTP服务? 默认~码是GB2312, 因此不加讄的话很容易无法上传和下蝲中文附g. |上有一些代码片D讨论Jakarta Commons Net, 但是看v来正的解决此问题的代码不多. 其实FtpClientcdl提供了讄的方? 调用:
ftpClient.setControlEncoding("gb2312");
卛_, q样在打开Socket的时候都会才用正的reader和writer? 相关的源码片D如?
/** * Sets the character encoding used by the FTP control connection. * Some FTP servers require that commands be issued in a non-ASCII * encoding like UTF-8 so that filenames with multi-byte character * representations (e.g, Big 8) can be specified. * * @param encoding The new character encoding for the control connection. */ public void setControlEncoding(String encoding) { _controlEncoding = encoding; } /** * @return The character encoding used to communicate over the * control connection. */ public String getControlEncoding() { return _controlEncoding; }
下面要说的是edtftpj, d官方|站下蝲得到ZIP, 解压~后卛_q行其自带的例子, 不过默认清空下不支持汉字. 例子及压~包内容如下图所C?
可见支持的功能还是挺全面? 要看的例子就是upload_download_and_delete_a_file, 现在新徏一个Java目, 把lib\edtftpj.jar加入目卛_,然后例子复制进来编译运? 如下所C?
import com.enterprisedt.net.ftp.FileTransferClient; import com.enterprisedt.util.debug.Level; import com.enterprisedt.util.debug.Logger; import java.io.File; public class UploadDownloadFiles { public static void main(String[] args) { // we want remote host, user name and password if (args.length < 3) { System.out .println("Usage: run remote-host username password"); System.exit(1); } // extract command-line arguments String host = args[0]; String username = args[1]; String password = args[2]; String filename = "UploadDownloadFiles.java"; // set up logger so that we get some output Logger log = Logger.getLogger(UploadDownloadFiles.class); Logger.setLevel(Level.INFO); FileTransferClient ftp = null; try { // create client log.info("Creating FTP client"); ftp = new FileTransferClient(); // set remote host ftp.setRemoteHost(host); ftp.setUserName(username); ftp.setPassword(password); // connect to the server log.info("Connecting to server " + host); ftp.connect(); log.info("Connected and logged in to server " + host); log.info("Uploading file"); ftp.uploadFile(filename, filename); log.info("File uploaded"); log.info("Downloading file"); ftp.downloadFile(filename + ".copy", filename); log.info("File downloaded"); log.info("Deleting remote file"); ftp.deleteFile(filename); log.info("Deleted remote file"); File file = new File(filename + ".copy"); file.delete(); log.info("Deleted local file copy"); // Shut down client log.info("Quitting client"); ftp.disconnect(); log.info("Example complete"); } catch (Exception e) { e.printStackTrace(); } } }
import com.enterprisedt.net.ftp.FileTransferClient; /** * 可以讄q接时的字符集的FTP客户? * @author BeanSoft * 2008-11 */ public class SetEncodingFileTransferClient extends FileTransferClient { /** * 讄q接时的字符? 默认值是US-ASCII. * @param controlEncoding 字符集名, 如GB2312{?/span> */ public synchronized void setControlEncoding(String controlEncoding) { super.masterContext.setControlEncoding(controlEncoding); } }
相应的测试代码是:
import java.io.File; import com.enterprisedt.util.debug.Level; import com.enterprisedt.util.debug.Logger; public class UploadDownloadFiles { public static void main(String[] args) { // extract command-line arguments String host = "localhost"; String username = "test"; String password = "test"; String filename = "囄输出.gif"; // set up logger so that we get some output Logger log = Logger.getLogger(UploadDownloadFiles.class); Logger.setLevel(Level.INFO); SetEncodingFileTransferClient ftp = null; try { // create client log.info("Creating FTP client"); ftp = new SetEncodingFileTransferClient(); // set remote host ftp.setRemoteHost(host); ftp.setUserName(username); ftp.setPassword(password); ftp.setControlEncoding("GB2312"); // connect to the server log.info("Connecting to server " + host); ftp.connect(); log.info("Connected and logged in to server " + host); log.info("Uploading file"); ftp.uploadFile(filename, filename); log.info("File uploaded"); log.info("Downloading file"); ftp.downloadFile(filename + ".copy", filename); log.info("File downloaded"); log.info("Deleting remote file"); //ftp.deleteFile(filename); log.info("Deleted remote file"); File file = new File(filename + ".copy"); // file.delete(); log.info("Deleted local file copy"); // Shut down client log.info("Quitting client"); ftp.disconnect(); log.info("Example complete"); } catch (Exception e) { e.printStackTrace(); } } }
q行后服务器可看到正的文g? 而本机则可以下蝲到正的文g副本.
输出日志?
INFO [ftp.UploadDownloadFiles] 26 十一?2008 21:02:48.203 : Creating FTP client
INFO [ftp.UploadDownloadFiles] 26 十一?2008 21:02:48.359 : Connecting to server localhost
INFO [ftp.UploadDownloadFiles] 26 十一?2008 21:02:48.546 : Connected and logged in to server localhost
INFO [ftp.UploadDownloadFiles] 26 十一?2008 21:02:48.546 : Uploading file
INFO [ftp.UploadDownloadFiles] 26 十一?2008 21:02:48.703 : File uploaded
INFO [ftp.UploadDownloadFiles] 26 十一?2008 21:02:48.703 : Downloading file
INFO [ftp.UploadDownloadFiles] 26 十一?2008 21:02:48.734 : File downloaded
INFO [ftp.UploadDownloadFiles] 26 十一?2008 21:02:48.734 : Deleting remote file
INFO [ftp.UploadDownloadFiles] 26 十一?2008 21:02:48.734 : Deleted remote file
INFO [ftp.UploadDownloadFiles] 26 十一?2008 21:02:48.734 : Deleted local file copy
INFO [ftp.UploadDownloadFiles] 26 十一?2008 21:02:48.734 : Quitting client
INFO [ftp.UploadDownloadFiles] 26 十一?2008 21:02:48.734 : Example complete
q行后一切正? 非常? 而此软g包的付费版本可支持目录批量上传和下蝲(Apache Commons Net 貌似不支?, 当然? 许可证就要自己想办法Crack?
import com.enterprisedt.net.ftp.FTPClient; import com.enterprisedt.net.ftp.pro.ProFTPClient; import com.enterprisedt.util.debug.Level; import com.enterprisedt.util.debug.Logger; import java.io.File; public class TransferMultipleFilesDirectories { public static void main(String[] args) { // we want remote host, user name and password if (args.length < 5) { System.out .println("Usage: run remote-host username password localdir remotedir"); System.exit(1); } // extract command-line arguments String host = args[0]; String username = args[1]; String password = args[2]; String localDir = args[3]; String remoteDir = args[4]; // set up logger so that we get some output Logger log = Logger.getLogger(TransferMultipleFilesDirectories.class); Logger.setLevel(Level.DEBUG); ProFTPClient ftp = null; try { // create client log.info("Creating FTP client"); ftp = new ProFTPClient(); // set remote host log.info("Setting remote host"); ftp.setRemoteHost(host); // connect to the server log.info("Connecting to server " + host); ftp.connect(); log.info("Connected to server " + host); // log in log.info("Logging in with username=" + username + " and password=" + password); ftp.login(username, password); log.info("Logged in"); log.info("Uploading directory"); ftp.mput(localDir, remoteDir, "*.html", true); log.info("Directory uploaded"); log.info("Downloading directory"); ftp.mget(localDir + ".copy", remoteDir, "*.html", true); log.info("Directory downloaded"); log.info("Deleting remote directory"); ftp.rmdir(remoteDir, true); log.info("Remote directory deleted"); // Shut down client log.info("Quitting client"); ftp.quit(); log.info("Example complete"); } catch (Exception e) { e.printStackTrace(); } } }
x, 我们的Q务已l完? 可以加上定时器之cȝ软g或者类库实现定时同?备䆾文g{功? 惌取本目源代? L?http://cid-519b3f7aa2172030.skydrive.live.com/self.aspx/java/opensource/javaftp.zip 138KB 下蝲(单线E下? 请不要用下蝲软g如迅?.
dQ?/p>
下图昄了两个窗口,一个是Web的Flash客户端,一个是UJava的客L?/p>
最后是官方|站的截图:
q期,不知道何?技术h员钟q开源Y件大本营sf.net(是www.sourceforge.net),上面的Y件无法下载了,包括JBoss, Spring, Hibernate {一pd软g都无法更C, q怎么?
{案?
ftp://download.sourceforge.net/pub/sourceforge/
试试? 很方便的, 可以下蝲大部分的软g(不是100%可打开).
例如 Spring 的下载地址?
ftp://download.sourceforge.net/pub/sourceforge/s/sp/springframework/