OAF页面集成条形码

OAF生成条形码

OAF页面集成二维码跟这个类似,生成二维码需要以下jar包,zxing-core.jar, zxing-javase.jar,可自行去maven下载。

代码如下:

import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.*; import java.util.HashMap;
import java.util.Map; import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; public class QRCodeServlet extends HttpServlet
{ /**
*
*/
private static final long serialVersionUID = 1L; private String data = "NONE";
private String level = "M";
private int width = 200; public QRCodeServlet()
{
} public void init()
throws ServletException
{
} private void getParameter(HttpServletRequest httpservletrequest)
{
try
{
//httpservletrequest.setCharacterEncoding("iso-8859-1");
String val = httpservletrequest.getParameter("data");
val = new String(val.getBytes("iso-8859-1"), "utf-8");
setParameter("data", val); if(httpservletrequest.getParameter("width") != null)
{
setParameter("width", httpservletrequest.getParameter("width"));
}
if(httpservletrequest.getParameter("level") != null)
{
setParameter("level", httpservletrequest.getParameter("level"));
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
} public void setParameter(String name, String value)
{
if(value != null)
if(name.equals("data"))
data = value;
else
if(name.equals("width"))
width = (new Integer(value)).intValue();
else
if(name.equals("level"))
level = value.toUpperCase();
} public void doGet(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse)
throws ServletException, IOException
{
getParameter(httpservletrequest); // httpservletrequest.setCharacterEncoding("UTF-8");
// httpservletresponse.setCharacterEncoding("UTF-8");
httpservletresponse.setContentType("image/png");
httpservletresponse.setHeader("Pragma", "no-cache");
httpservletresponse.setHeader("Cache-Control", "no-cache");
httpservletresponse.setDateHeader("Expires", 0L); try {
Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>(); if ("L".equals(level)) {
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);
}
else if ("M".equals(level)) {
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);
}
else if ("Q".equals(level)) {
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.Q);
}
else if ("H".equals(level)) {
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
}
else {
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.Q);
} hints.put(EncodeHintType.CHARACTER_SET, "iso-8859-1"); BitMatrix bitMatrix = new MultiFormatWriter().encode(new String(data
.getBytes("GBK"), "iso-8859-1"), BarcodeFormat.QR_CODE, width, width, hints);
MatrixToImageWriter.writeToStream(bitMatrix, "png", httpservletresponse.getOutputStream());
httpservletresponse.getOutputStream().flush();
httpservletresponse.getOutputStream().close(); } catch (WriterException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
} public void doPost(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse)
throws ServletException
{
try
{
doGet(httpservletrequest, httpservletresponse);
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}

配置servlet
下载
$ORA_CONFIG_HOME/10.1.3/j2ee/oacore/application-deployments/oacore/html/orion-web.xml
添加如下内容:

<!-- QRCode Servlet -->

  <servlet>
<servlet-name>QRCode</servlet-name>
<display-name>QRCode</display-name>
<servlet-class>oracle.apps.fnd.test.QRCodeServlet</servlet-class>
</servlet> <!-- QRCodeServlet mapping --> <servlet-mapping>
<servlet-name>QRCode</servlet-name>
<url-pattern>/QRCode</url-pattern>
</servlet-mapping>

调用
http://xxx.xxx.com.cn:8000/OA_HTML/QRCode?data=123567890&width=300&level=H
也可以参考前文中调用条形码的方式将其集成至OAF页面。

附:带logo展示二维码

import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.IOException; import javax.imageio.ImageIO;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.swing.ImageIcon; import java.util.HashMap;
import java.util.Map; import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; public class QRCodeServlet extends HttpServlet
{ /**
*
*/
private static final long serialVersionUID = 1L; private String data = "NONE";
private String level = "M";
private int width = 200;
private String charset = "GB2312"; private String logoflag = "N";
private String logopath = "//u02//prod14//appprod14//apps//apps_st//comn//java//classes//oracle//apps//media//logo.png";
private int logowidth = 40; private String removeborder = "N"; public QRCodeServlet()
{
} public void init()
throws ServletException
{
} private void getParameter(HttpServletRequest httpservletrequest)
{
try
{
httpservletrequest.setCharacterEncoding(charset);
String val = httpservletrequest.getParameter("data");
//val = new String(val.getBytes("gb2312"), "UTF-8");
setParameter("data", val); if(httpservletrequest.getParameter("width") != null)
{
setParameter("width", httpservletrequest.getParameter("width"));
}
if(httpservletrequest.getParameter("level") != null)
{
setParameter("level", httpservletrequest.getParameter("level"));
}
if(httpservletrequest.getParameter("logowidth") != null)
{
setParameter("logowidth", httpservletrequest.getParameter("logowidth"));
}
if(httpservletrequest.getParameter("logopath") != null)
{
setParameter("logopath", httpservletrequest.getParameter("logopath"));
}
if(httpservletrequest.getParameter("logoflag") != null)
{
setParameter("logoflag", httpservletrequest.getParameter("logoflag"));
} }
catch(Exception ex)
{
ex.printStackTrace();
}
} public void setParameter(String name, String value)
{
if(value != null)
if(name.equals("data"))
data = value;
else
if(name.equals("width"))
width = (new Integer(value)).intValue();
else
if(name.equals("level"))
level = value.toUpperCase();
else
if(name.equals("logowidth"))
logowidth = (new Integer(value)).intValue();
else
if(name.equals("logopath"))
logopath = value;
else
if(name.equals("logoflag"))
logoflag = value.toUpperCase();
else
if(name.equals("removeborder"))
removeborder = value.toUpperCase();
} public void doGet(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse)
throws ServletException, IOException
{
getParameter(httpservletrequest); httpservletresponse.setContentType("image/png");
// javax.servlet.ServletOutputStream servletoutputstream = httpservletresponse.getOutputStream();
httpservletresponse.setHeader("Pragma", "no-cache");
httpservletresponse.setHeader("Cache-Control", "no-cache");
httpservletresponse.setDateHeader("Expires", 0L); try {
Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>(); if ("L".equals(level)) {
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);
}
else if ("M".equals(level)) {
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);
}
else if ("Q".equals(level)) {
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.Q);
}
else if ("H".equals(level)) {
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
}
else {
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);
} hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); BitMatrix bitMatrix = new MultiFormatWriter().encode(data, BarcodeFormat.QR_CODE, width, width, hints);
if ("N".equals(logoflag)) // don't display logo
{
MatrixToImageWriter.writeToStream(bitMatrix, "png", httpservletresponse.getOutputStream());
}
else // need display logo
{
ImageIcon icon = new ImageIcon(logopath); BufferedImage barcodeBI = MatrixToImageWriter.toBufferedImage(bitMatrix);
Image scaledImage = barcodeBI.getScaledInstance(256, 256, Image.SCALE_DEFAULT); BufferedImage bimage = new BufferedImage(width, width, BufferedImage.TYPE_INT_RGB);
Graphics2D g = bimage.createGraphics(); g.drawImage(scaledImage, 0, 0, width, width, null);
g.drawImage(icon.getImage(), width/2-logowidth/2, width/2-logowidth/2, logowidth, logowidth, null);
g.dispose(); try {
ImageIO.write(bimage, "png", httpservletresponse.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
finally
{
barcodeBI.flush();
bimage.flush();
}
}
// MatrixToImageWriter.writeToStream(bitMatrix, "png", httpservletresponse.getOutputStream());
httpservletresponse.getOutputStream().flush();
httpservletresponse.getOutputStream().close(); } catch (WriterException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
} public void doPost(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse)
throws ServletException
{
try
{
doGet(httpservletrequest, httpservletresponse);
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}

参考:Oracle中生成二维码图片_V1.1_WEB资料

 

OAF页面集成条形码或者二维码的更多相关文章

  1. C#利用Zxing.net生成条形码和二维码并实现打印的功能

        开篇:zxing.net是.net平台下编解条形码和二维码的工具. 下载地址:http://pan.baidu.com/s/1kTr3Vuf Step1:使用VS2010新建一个窗体程序项目: ...

  2. Android之条形码、二维码扫描框架(非原创)

    文章大纲 一.条形码.二维码扫描框架介绍二.条形码.二维码的区别和组成结构介绍三.条形码.二维码扫描框架应用场景四.BGAQRCode-Android框架实战五.项目源码下载六.参考文章 一.条形码. ...

  3. (整理).net实现条形码与二维码

    本文由来源网络的知识点组合而成,感谢分享的作者,文章结尾处给出查询资料连接. 条形码(barcode)是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符.常见的条形码是 ...

  4. 实例源码--ZXing识别条形码和二维码识别源码

      下载源码 技术要点: 1.ZXing库的 使用 2.识别条形码和二 维码 3.自定义视图 4.源码带有非常详 细的中文注释 ...... 详细介绍: 1.ZXing库 ZXing是个很经典的条码/ ...

  5. [转]用C#实现的条形码和二维码编码解码器

    条形码的标准: 条形码的标准有ENA条形码.UPC条形码.二五条形码.交叉二五条形码.库德巴条形码.三九条形码和128条形码等,而商品上最常使用的就是EAN商品条形码.EAN商品条形码亦称通用商品条形 ...

  6. 用C#实现的条形码和二维码编码解码器

    本文主要介绍可以在C#中使用的1D/2D编码解码器.条形码的应用已经非常普遍,几乎所有超市里面的商品上面都印有条形码:二维码也开始应用到很多场合,如火车票有二维码识别.网易的首页有二维码图标,用户只需 ...

  7. asp.net 生成、解析条形码和二维码

    原文 asp.net 生成.解析条形码和二维码 一.条形码 一维码,俗称条形码,广泛的用于电子工业等行业.比如我们常见的书籍背面就会有条形码,通过扫描枪等设备扫描就可以获得书籍的ISBN(Intern ...

  8. 基于opencv3.0和下的条形码与二维码识别

    其中对条码与二维码的识别分为以下4个步骤 1. 利用opencv和Zbar(或者Zxing)对标准的条形码图片(即没有多余背景干扰,且图片没有倾斜)进行解码,将解码信息显示出来,并与原始信息对比. 2 ...

  9. C# 利用ZXing.Net来生成条形码和二维码

    本文是利用ZXing.Net在WinForm中生成条形码,二维码的小例子,仅供学习分享使用,如有不足之处,还请指正. 什么是ZXing.Net? ZXing是一个开放源码的,用Java实现的多种格式的 ...

随机推荐

  1. Python入门之logging模块

    本章目录: 一.logging模块简介 二.logging模块的使用 三.通过JSON或者YMAL文件配置logging模块 ===================================== ...

  2. Python Web学习笔记之Python多线程基础

    多线程理解 多线程是多个任务同时运行的一种方式.比如一个循环中,每个循环看做一个任务,我们希望第一次循环运行还没结束时,就可以开始第二次循环,用这种方式来节省时间. python中这种同时运行的目的是 ...

  3. 08: 查看Linux系统基本信息和硬盘CPU等

    目录: 1.1 查看Linux系统基本信息 1.2 查看三秒内的平均CPU 1.3 查看内存使用情况 1.4 查看当前系统负载 1.1 查看Linux系统基本信息返回顶部 1.查看Linux系统uui ...

  4. js 变量提升(JavaScript Scoping and Hoisting)

    原文网址:http://www.cnblogs.com/betarabbit/archive/2012/01/28/2330446.html 这是一篇作者翻译过来的文章,未翻译的原文网址在这里:htt ...

  5. 20145333茹翔 Exp7 网络欺诈技术防范

    20145333茹翔 Exp7 网络欺诈技术防范 1.实验后回答问题 (1)通常在什么场景下容易受到DNS spoof攻击 局域网内的攻击,arp入侵攻击和DNS欺骗攻击 公共wifi点上的攻击. ( ...

  6. Maximum GCD (stringstream)题解

    Given the N integers, you have to find the maximum GCD (greatest common divisor) of every possiblepa ...

  7. BZOJ4401: 块的计数 思维题

    Description 小Y最近从同学那里听说了一个十分牛B的高级数据结构——块状树.听说这种数据结构能在sqrt(N)的时间内维护树上的各种信息,十分的高效.当然,无聊的小Y对这种事情毫无兴趣,只是 ...

  8. [JavaScript] - form表单转json的插件

    jquery.serializejson.js 之前好像记录过,做项目又用到了再记下 在页面中引入js后就可以使用了 示例: //点击设置微信信息的form表单提交按钮后,执行wxConfig的con ...

  9. SSH公钥登录且禁止密码登录及更改默认端口

    1.ssh生成公私钥 ssh-keygen -t rsa -C "zhangsan@qq.com" 生成密钥的位置如下,id_rsa是私钥.id_rsa.pub是公钥: ➜ .ss ...

  10. BeautifulSoup中的find,find_all

    1.一般来说,为了找到BeautifulSoup对象内任何第一个标签入口,使用find()方法. 以上代码是一个生态金字塔的简单展示,为了找到第一生产者,第一消费者或第二消费者,可以使用Beautif ...