问题描述
我不擅长 JAVA
我从这里开始使用 QRToad https://github.com/boltz/QRToad
ColdFusion 2016 - MS Server 2016:我重启了 cf 服务器几次。
我在第 5 行出现错误 未找到类:com.itextpdf.text.pdf.BarcodeQRCode
错误发生在
C:/upcloud/_live_websites/_silkea/test/QR/com/timcunningham/QRToad/QRCode.cfc: line 5
Called from C:/upcloud/_live_websites/_silkea/test/qr/getqrtest.cfm: line 2
Called from C:/upcloud/_live_websites/_silkea/test/QR/com/timcunningham/QRToad/QRCode.cfc: line 5
Called from C:/upcloud/_live_websites/_silkea/test/qr/getqrtest.cfm: line 2
3 : put the itext JAR in your ColdFusion class path.
4 : Restart ColdFusion service">
5 : <cfset QR = createObject("java","com.itextpdf.text.pdf.BarcodeQRCode")>
这是 JAR 文件:itext-pdfa-5.5.13.2.jar
我已经把它放在:C:\ColdFusion2016\jre\lib 还有 C:\ColdFusion2016\cfusion\lib
我是不是放错地方了?或者我需要改变这个吗?
"java","com.itextpdf.text.pdf.BarcodeQRCode"
解决方法
我将此函数与 Google 二维码应用程序(包括 chart.apis.google.com
)使用的 zxing 结合使用。您需要下载 core-3.4.0.jar
和 javase-3.4.0.jar
并将它们放入 C:\ColdFusion2016\cfusion\lib
<cfscript>
public string function createQRCode(
required string data,integer width=180,integer height=180,integer margin=4,){
local.filePath = getTempDirectory() & application.fwUtilService.generateUUID() & '.png';
local.objQRCodeWriter = CreateObject('java','com.google.zxing.qrcode.QRCodeWriter');
local.objBarcodeFormat = CreateObject('java','com.google.zxing.BarcodeFormat');
local.objEncodeHintType = CreateObject('java','com.google.zxing.EncodeHintType');
local.objHashMap = CreateObject('java','java.util.HashMap');
local.objFileSystems = CreateObject('java','java.nio.file.FileSystems');
local.objMatrixToImageWriter = CreateObject('java','com.google.zxing.client.j2se.MatrixToImageWriter');
local.qrCodeWriter = local.objQRCodeWriter.init();
local.objHashMap.put(local.objEncodeHintType.MARGIN,javacast('int',arguments.margin));
local.objHashMap.put(local.objEncodeHintType.CHARACTER_SET,"UTF-8");
local.objEnumMap = CreateObject('java','java.util.EnumMap').init(local.objHashMap);
local.bitMatrix = local.qrCodeWriter.encode(data,local.objBarcodeFormat.QR_CODE,arguments.width,arguments.height,local.objEnumMap);
local.path = local.objFileSystems.getDefault().getPath(local.filePath,[]);
local.objMatrixToImageWriter.writeToPath(local.bitMatrix,"PNG",local.path);
return local.filePath;
}
</cfscript>
,
这可能更简单。
<cfhttp url="http://chart.apis.google.com/chart?chs=250x250&cht=qr&chl=http://www.website.com" result="qrcode" getasbinary="yes">
<cfimage action="writeToBrowser" source="#qrcode.filecontent#" style="height:250px;width:250px">
所以我会玩一会儿,然后尝试保存 Google Pull。 其他二维码比较老。
是的,方法更简单。嗅探 qrimg 是否完成,如果没有创建。
<cfif qrimg is "">
<cfhttp url="http://chart.apis.google.com/chart?chs=250x250&cht=qr&chl=http://webaddress?vid=#vid#&src=p" result="qrcode" getasbinary="yes">
<cfimage action="writeToBrowser" source="#qrcode.filecontent#" style="height:250px;width:250px">
<cfimage action="write" source="#qrcode.filecontent#" destination="#expandPath( 'QR_#vid#.jpg' )#" overwrite="true">
#vnumber# : #vname#<br>
<cfquery name="nm" datasource="#fds#">
update fv
set qrimg = 'QR_#vid#.jpg'
where vid = '#vid#'
</cfquery>
<cfelse>
<img src="QR_#vid#.jpg">
<br>
#vnumber# : #vname#<br>
</cfif>