精华内容
下载资源
问答
  • FreeDatawindow二维码打印,版本PB12.5,生成的二维码中间包含图片
  • Android蓝牙小票打印机,支持格式控制,图片打印,二维码打印
  • ndroid蓝牙小票打印机,支持格式控制,图片打印,二维码打印.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
  • Qt 二维码打印

    2018-02-10 16:44:25
    基于的Qt 实现的二维码 打印软件,可实现 以毫米为单位的 位置调整
  • 蓝牙二维码打印,工厂物料条码,绝对好用 资源下载地址:点击下载 扫描,显示蓝牙列表 public class DeviceListActivity extends AppCompatActivity { private static final String TAG = "DeviceListActivity"; ...

    蓝牙二维码打印,工厂物料条码,绝对好用

    资源下载地址:点击下载

    扫描,显示蓝牙列表

    public class DeviceListActivity extends AppCompatActivity {
        private static final String TAG = "DeviceListActivity";
        private static final boolean D = true;
    
        public static String EXTRA_DEVICE_ADDRESS = "device_address";
    
        private BluetoothAdapter mBtAdapter;
        private ArrayAdapter<String> mPairedDevicesArrayAdapter;
        private ArrayAdapter<String> mNewDevicesArrayAdapter;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
            setContentView(R.layout.device_list);
            setResult(Activity.RESULT_CANCELED);
    
            Button scanButton = (Button) findViewById(R.id.button_scan);
            scanButton.setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                    doDiscovery();
                    v.setVisibility(View.GONE);
                }
            });
    
            mPairedDevicesArrayAdapter = new ArrayAdapter<String>(this,
                    R.layout.device_name);
            mNewDevicesArrayAdapter = new ArrayAdapter<String>(this,
                    R.layout.device_name);
    
            ListView pairedListView = (ListView) findViewById(R.id.paired_devices);
            pairedListView.setAdapter(mPairedDevicesArrayAdapter);
            pairedListView.setOnItemClickListener(mDeviceClickListener);
    
            ListView newDevicesListView = (ListView) findViewById(R.id.new_devices);
            newDevicesListView.setAdapter(mNewDevicesArrayAdapter);
            newDevicesListView.setOnItemClickListener(mDeviceClickListener);
    
            IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
            this.registerReceiver(mReceiver, filter);
    
            filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
            this.registerReceiver(mReceiver, filter);
    
            mBtAdapter = BluetoothAdapter.getDefaultAdapter();
            Set<BluetoothDevice> pairedDevices = mBtAdapter.getBondedDevices();
    
            // If there are paired devices, add each one to the ArrayAdapter
            if (pairedDevices.size() > 0) {
                findViewById(R.id.title_paired_devices).setVisibility(View.VISIBLE);
                for (BluetoothDevice device : pairedDevices) {
                    // if (device.getName().contains("K319")) {  不过滤
                    mPairedDevicesArrayAdapter.add(device.getName() + "\n"
                            + device.getAddress());
                    // }
                }
            } else {
                mPairedDevicesArrayAdapter.add("没有匹配的设备");
            }
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
    
            if (mBtAdapter != null) {
                mBtAdapter.cancelDiscovery();
            }
    
            this.unregisterReceiver(mReceiver);
        }
    
        private void doDiscovery() {
            if (D)
                Log.d(TAG, "doDiscovery()");
    
            setProgressBarIndeterminateVisibility(true);
            setTitle("扫描设备...");
            findViewById(R.id.title_new_devices).setVisibility(View.VISIBLE);
            if (mBtAdapter.isDiscovering()) {
                mBtAdapter.cancelDiscovery();
            }
    
            mBtAdapter.startDiscovery();
        }
    
        private OnItemClickListener mDeviceClickListener = new OnItemClickListener() {
            public void onItemClick(AdapterView<?> av, View v, int arg2, long arg3) {
                mBtAdapter.cancelDiscovery();
    
                // View
                String info = ((TextView) v).getText().toString();
                String address = info.substring(info.length() - 17);
    
                Intent intent = new Intent();
                intent.putExtra(EXTRA_DEVICE_ADDRESS, address);
    
                setResult(Activity.RESULT_OK, intent);
                finish();
            }
        };
    
        private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
            @SuppressLint("MissingPermission")
            @Override
            public void onReceive(Context context, Intent intent) {
                String action = intent.getAction();
    
                if (BluetoothDevice.ACTION_FOUND.equals(action)) {
                    BluetoothDevice device = intent
                            .getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
                    if (device.getBondState() != BluetoothDevice.BOND_BONDED) {
                        if (device == null) {
                            return;
                        }
                        if (!TextUtils.isEmpty(device.getName())) {
                            mNewDevicesArrayAdapter.add(device.getName() + "\n"
                                    + device.getAddress());
                        }
                        //不过滤
                       /* if (!TextUtils.isEmpty(device.getName())) {
                            if (device.getName().contains("K319")) {
    
                            }
                        }*/
                    }
                    // When discovery is finished, change the Activity title
                } else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED
                        .equals(action)) {
                    setProgressBarIndeterminateVisibility(false);
                    setTitle("选择连接的设备");
                    if (mNewDevicesArrayAdapter.getCount() == 0) {
                        mNewDevicesArrayAdapter.add("没有匹配的设备");
                    }
                }
            }
        };
    
    }

    蓝牙连接

    package com.pad.untek.mes.mespda.printqrcode.ble;
    
    import android.app.Activity;
    import android.bluetooth.BluetoothAdapter;
    import android.bluetooth.BluetoothDevice;
    import android.content.Intent;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.support.v7.app.AppCompatActivity;
    import android.widget.Button;
    import android.widget.TextView;
    import android.widget.Toast;
    
    
    import com.pad.untek.mes.mespda.printqrcode.R;
    
    import butterknife.BindView;
    import butterknife.ButterKnife;
    import butterknife.OnClick;
    
    public class ConnectBleActivity extends AppCompatActivity {
        // 来自蓝牙服务处理程序的消息类型
        public static final int MESSAGE_STATE_CHANGE = 1;
        public static final int MESSAGE_READ = 2;
        public static final int MESSAGE_WRITE = 3;
        public static final int MESSAGE_DEVICE_NAME = 4;
        public static final int MESSAGE_TOAST = 5;
    
        // 来自蓝牙服务处理程序的关键名称。
        public static final String DEVICE_NAME = "device_name";
        public static final String TOAST = "toast";
    
        // 意图请求代码
        private static final int REQUEST_CONNECT_DEVICE = 1;
        private static final int REQUEST_ENABLE_BT = 2;
        @BindView(R.id.tv_conn_name)
        TextView tvConnName;
        @BindView(R.id.btn_add_print)
        Button btnAddPrint;
    
    
        // 连接设备的名称
        private String mConnectedDeviceName = null;
        //本地蓝牙适配器
        private BluetoothAdapter mBluetoothAdapter = null;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_connect_ble);
            ButterKnife.bind(this);
            initView();
        }
    
        private void initView() {
            mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
            if (mBluetoothAdapter == null) {
                Toast.makeText(this, "您的设备不支持蓝牙", Toast.LENGTH_LONG).show();
                return;
            }
            if (BluetoothUtis.getInstances().device != null) {
                btnAddPrint.setText("断开连接");
                tvConnName.setText("已连接" + BluetoothUtis.getInstances().device.getName());
            }
        }
    
        // 从蓝牙服务中获取信息的处理程序。
        private Handler mHandler = new Handler(new Handler.Callback() {
            @Override
            public boolean handleMessage(Message msg) {
                switch (msg.what) {
                    case MESSAGE_STATE_CHANGE:
                        switch (msg.arg1) {
                            case BluetoothService.STATE_CONNECTED:
                                btnAddPrint.setText("断开连接");
                                tvConnName.setText("已连接:");
                                tvConnName.append(mConnectedDeviceName);
                                break;
                            case BluetoothService.STATE_CONNECTING:
                                tvConnName.setText("正在连接...");
                                break;
                            case BluetoothService.STATE_LISTEN://异常
                                tvConnName.setText("连接失败");
                                BluetoothUtis.getInstances().device = null;
                                btnAddPrint.setText("扫描连接");
                                break;
                            case BluetoothService.STATE_NONE:
                                tvConnName.setText("未连接蓝牙");
                                btnAddPrint.setText("扫描连接");
                                break;
                        }
                        break;
                    case MESSAGE_WRITE:
                        break;
                    case MESSAGE_READ:
                        break;
                    case MESSAGE_DEVICE_NAME:
                        // save the connected device's name
                        mConnectedDeviceName = msg.getData().getString(DEVICE_NAME);
                        tvConnName.setText(mConnectedDeviceName);
                        Toast.makeText(getApplicationContext(), "连接至" + mConnectedDeviceName, Toast.LENGTH_SHORT)
                                .show();
                        break;
                    case MESSAGE_TOAST:
                        Toast.makeText(getApplicationContext(),
                                msg.getData().getString(TOAST), Toast.LENGTH_SHORT)
                                .show();
                        break;
                }
    
                return false;
            }
        });
    
    
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
            switch (requestCode) {
                case REQUEST_CONNECT_DEVICE:
                    if (resultCode == Activity.RESULT_OK) {
                        String address = data.getExtras().getString(DeviceListActivity.EXTRA_DEVICE_ADDRESS);
                        BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address);
                        BluetoothUtis.getInstances().mService.connect(device);
                        BluetoothUtis.getInstances().device = device;
                    }
                    break;
                case REQUEST_ENABLE_BT:
                    // When the request to enable Bluetooth returns
                    if (resultCode == Activity.RESULT_OK) {
                        Toast.makeText(this, "蓝牙已打开", Toast.LENGTH_LONG);
                    } else {
                        Toast.makeText(this, "蓝牙没有打开", Toast.LENGTH_LONG);
                        finish();
                    }
            }
        }
    
        @Override
        public void onStart() {
            super.onStart();
            if (!mBluetoothAdapter.isEnabled()) {
                // 打开蓝牙
                Intent enableIntent = new Intent(
                        BluetoothAdapter.ACTION_REQUEST_ENABLE);
                startActivityForResult(enableIntent, REQUEST_ENABLE_BT);
            }
            if (BluetoothUtis.getInstances().mService == null) {
                BluetoothUtis.getInstances().mService = new BluetoothService(this, mHandler);
                BluetoothUtis.getInstances().mService.printLeft();//居中
            }
        }
    
        //连接设备
        @OnClick(R.id.btn_add_print)
        public void onClick() {
            if (BluetoothUtis.getInstances().device == null) {
                Intent serverIntent = new Intent(this, DeviceListActivity.class);
                startActivityForResult(serverIntent, REQUEST_CONNECT_DEVICE);
            } else {
                BluetoothUtis.getInstances().mService.stop();
                BluetoothUtis.getInstances().device = null;
            }
        }
    }
    

    蓝牙工具,连接和打印

    package com.pad.untek.mes.mespda.printqrcode.ble;
    
    import android.bluetooth.BluetoothDevice;
    import android.content.Context;
    import android.graphics.Bitmap;
    import android.widget.Toast;
    
    /**
     * 淑全 on 2018/5/24.
     */
    
    public class BluetoothUtis {
    
    
        public BluetoothService mService = null;
        private static BluetoothUtis instance = null;
        public BluetoothDevice device = null;
    
        private BluetoothUtis() {
        }
    
        public static BluetoothUtis getInstances() {
            if (null == instance) {
                instance = new BluetoothUtis();
            }
            return instance;
        }
    
        public boolean isService(Context context) {
            if (mService == null || mService.getState() != BluetoothService.STATE_CONNECTED) {
                Toast.makeText(context, "蓝牙没有连接", Toast.LENGTH_SHORT).show();
                return false;
            }
            return true;
        }
    
        public boolean sendMessage(Context context, Bitmap bitmap) {
            if (mService == null || mService.getState() != BluetoothService.STATE_CONNECTED) {
                Toast.makeText(context, "蓝牙没有连接", Toast.LENGTH_SHORT).show();
                return false;
            } else {
                // 发送打印图片前导指令
                byte[] start = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x40, 0x1B, 0x33, 0x00};
                mService.write(start);
                mService.printLeft();
                byte[] draw2PxPoint = PicFromPrintUtils.draw2PxPoint(bitmap);
                mService.write(draw2PxPoint);
                byte[] end = {0x1D, 0x0C};//走纸
                BluetoothUtis.getInstances().mService.write(end);
                // 发送结束指令
                byte[] ends = {0x1B, 0x40};
                BluetoothUtis.getInstances().mService.write(ends);
                return true;
            }
        }
    
    }
    

    发送打印

     boolean flag = BluetoothUtis.getInstances().isService(this);//判断蓝牙是否连接
            if (flag) {
                //打印
                boolean b = BluetoothUtis.getInstances().sendMessage(MainActivity.this, bbb);
                Toast.makeText(this, b ? "打印成功" : "打印失败", Toast.LENGTH_LONG).show();
            } else {
                startActivity(new Intent(this, ConnectBleActivity.class));
            }

    资源下载地址:点击下载

     

     

     

    展开全文
  • JS打印二维码图片

    2018-09-06 16:44:30
    使用JS页面打印图片,只需要修改制定的图片路径即可。路径可以使用参数定义获取
  • js生成二维码图片打印

    热门讨论 2016-02-24 09:22:13
    技术:js ,jquery ,jquery.jqprint-0.3.js来打印图片,jquery.qrcode.min.js生成二维码,另参杂多项前端小技术,例如:CANVAS转换图片,IMG添加id,js定时器,新窗口弹出....所有一应插件均已完善,不用多余下载和...
  • 网上转了一圈发现都是识别二维码保存到本地,比较少直接打印在终端上,看了下qrcode-terminal虽然可以,但是发现它也是使用qrcode这个库,而qrcode已经有了输出到终端的方法了,所以就不用多下载qrcode-terminal了. ...

    网上转了一圈发现都是识别二维码保存到本地,比较少直接打印在终端上,看了下qrcode-terminal虽然可以,但是发现它也是使用qrcode这个库,而qrcode已经有了输出到终端的方法了,所以就不用多下载qrcode-terminal了.

    安装环境

    pip install Pillow
    pip install pyzbar
    pip install qrcode
    
    • pyzbar依赖的zbar可能会安装失败,不过网上都有很多资料了,具体错误具体查吧.

    首先还是需要pyzbar识别出二维码的URL,再通过qrcode生成一个二维码,然后QRCode自带方法输出到终端.

    from pyzbar.pyzbar import decode
    from PIL import Image
    import qrcode
    
    barcode_url = ''
    barcodes = decode(Image.open('./qrcode.png'))
    for barcode in barcodes:
        barcode_url = barcode.data.decode("utf-8")
    print(barcode_url)
    
    qr = qrcode.QRCode()
    qr.add_data(barcode_url)
    #invert=True白底黑块,有些app不识别黑底白块.
    qr.print_ascii(invert=True)
    

    参考链接:
    https://www.programcreek.com/python/example/105640/pyqrcode.QRCode

    展开全文
  • web前端二维码打印模板编辑

    千次阅读 2019-09-07 15:56:01
    工作需要,为了实现类似二维码打印软件的功能,尽力了。 基于hiprint开源插件修改而来,实现了二维码模板在线编辑、保存、预览、打印,批量打印、自动分页 官网地址:http://www.hinnn.com/ 话不多说 直接从官网...

    工作需要,为了实现类似二维码打印软件的功能,尽力了。

    基于hiprint开源插件修改而来,实现了二维码模板在线编辑、保存、预览、打印,批量打印、自动分页

    官网地址:http://www.hinnn.com/

    话不多说

    直接从官网拿下来基本没问题(有问题也没办法,像我这直接把官网例子页面拿下来改造后才能正常实现各种功能)>_<

    我的修改完成大概是这个样子,下面开始讲解具体实现方式和功能实现思路

    首先保证所有js、css正常加载,插件初始化完成,初始化模板可自定义(默认A4),paperType值在核心js中有定义,后面说在哪里新增修改

    hiprintTemplate = new hiprint.PrintTemplate({
                    template: { "panels": [{ "index": 0, "paperType": "B5", "height": 176, "width": 250, "paperHeader": 0, /*"paperFooter": 400,*/ "printElements": [], "paperNumberLeft": 134, "paperNumberTop": 119 }] },
                    settingContainer: '#PrintElementOptionSetting',
                    paginationContainer: '.hiprint-printPagination'
    });

    图片控件需要到hiprint.bundle.js的

    这个地方把本地存放图片的url用base64转码后放进来,不然加载不到

    保存模板

    首先操作方式不介绍了,添加好具体模块后使用hiprintTemplate.getJson()可以将页面自定义控件转化为json格式存到数据库,建议建一个模板表我的表结构(indexs是因为index敏感字符)

    转化为json后是这种数据

    模板当然是没有数据的,只保存格式,ajax传递到后台遍历将title值清空即可。这里只需要注意textType类型,不同类型属性字段不同,遍历解析大家都会,就不写出来了

    如果想在编辑的时候画布按默认值展现,保存时以实际应用大小保存则在页面初始化的时候设定好所需要的画布大小

    这里新增自己想要的大小,然后到hiprint.bundle.js中1784行新增自己自定义的大小,否则会无法识别

    点击保存时弹出窗口输入模板名称然后转为json,ajax传到后台后,heiget和width还是初始化时的大小,paperType已经为你点击设置的参数了,判断paperType例如为B9将heiget和width分别设置为你想要的大小,再存入数据库即可

    这里有个细节,如果有需要批量打印,则在初始化时把页眉线为0,页脚线为空,页脚线会自动为默认纸张最大长度

    编辑模板

    打开编辑模板页面时把id传过来,js初始化时判断id存在ajax请求根据id查询到模板,把height和width设置为自定义大小

    ,ajax接收到结果使用

    hiprintTemplate = new hiprint.PrintTemplate({
    	template: data,
    	settingContainer: '#PrintElementOptionSetting',
    	paginationContainer: '.hiprint-printPagination'
    });
    $('#hiprint-printTemplate').html('');
    hiprintTemplate.design('#hiprint-printTemplate');

    解析到页面,这个地方官方封装的js很友好,就算是多了一些其他字段也能正常解析出来(别问我怎么知道的),但是如果符号错误json解析会报错

    一定要注意这两个地方,如果出现双引号就会解析失败,编辑保存跟保存一样,就不多说了

    批量打印

    bootstrap table表格批量选中,获取选中列的id后layer.open跳转到选择模板页面选择模板获取选中列id跳转编辑模板页面展示

    注意:

    选择模板后跳转到编辑模板页面前需要将两个选中列的值都传递到编辑模板页面,在编辑模板页面js初始化中判断不为空ajax传递到后台,先根据模板id查询模板取出遍历模板,将需要生成二维码的id存入模板中,最终返回到前端解析展现

    然后选中打印或者导出pdf都可以

    这里打印分页是个坑,我一直以为每个"options"存放控件后会自动分页,最终被折磨的遍体鳞伤,后来发现每一个"panels"是一个页面,插件会根据panels自动分页,下面是我的一个最终分页数据

    {"panels":[{"index":0,"height":24,"width":48,"paperHeader":0,"paperFooter":68,"printElements":[{"options":{"left":9,"top":7.5,"height":37.5,"width":37.5,"title":"99930","textType":"qrcode"},"printElementType":{"type":"text"}},{"options":{"left":55.5,"top":19.5,"height":15,"width":66,"title":"06号楼3层UPS室1排1列-Blokset"},"printElementType":{"type":"text"}}]},{"index":0,"height":24,"width":48,"paperHeader":0,"paperFooter":68,"printElements":[{"options":{"left":9,"top":7.5,"height":37.5,"width":37.5,"title":"99931","textType":"qrcode"},"printElementType":{"type":"text"}},{"options":{"left":55.5,"top":19.5,"height":15,"width":66,"title":"06号楼3层UPS室1排2列-Blokset"},"printElementType":{"type":"text"}}]},{"index":0,"height":24,"width":48,"paperHeader":0,"paperFooter":68,"printElements":[{"options":{"left":9,"top":7.5,"height":37.5,"width":37.5,"title":"99932","textType":"qrcode"},"printElementType":{"type":"text"}},{"options":{"left":55.5,"top":19.5,"height":15,"width":66,"title":"06号楼3层UPS室1排3列-Blokset"},"printElementType":{"type":"text"}}]},{"index":0,"height":24,"width":48,"paperHeader":0,"paperFooter":68,"printElements":[{"options":{"left":9,"top":7.5,"height":37.5,"width":37.5,"title":"99933","textType":"qrcode"},"printElementType":{"type":"text"}},{"options":{"left":55.5,"top":19.5,"height":15,"width":66,"title":"06号楼3层UPS室1排4列-Blokset"},"printElementType":{"type":"text"}}]}]}

    以后发现未提到后续再补充....

    展开全文
  • Qt实现 二维码打印功能

    千次阅读 2018-02-10 16:24:09
    1,利用 qrencode 第三方库 生成二维码,并通过Qt printer调用打印机 打印条码 或者二维码。 2,经过和同事几天的研究,浪费了一筐 条码之后。终于实现了基本功能,一些关键细节分享出来。 (1),打印机设置,...

    1,利用 qrencode 第三方库 生成二维码,并通过Qt  printer调用打印机 打印条码 或者二维码。

    2,经过和同事几天的研究,浪费了一筐 条码之后。终于实现了基本功能,一些关键细节分享出来。

    (1),打印机设置,颜色模式,纸张单位,大小,分辨率,边距,水平还是垂直。

    此处 分辨率为 打印机固有属性,可通过windows驱动查看。

     

     mPrinter->setColorMode(QPrinter::GrayScale);
        mPrinter->setPageSizeMM(QSizeF(49.8,35.0)); //大小
        mPrinter->setPaperSize(QSizeF(49.8,35), QPrinter::Millimeter);
        mPrinter->setResolution(300);//分辨率 203
        mPrinter->setPageMargins(0,0,0,0, QPrinter::Millimeter);
        mPrinter->setOrientation(QPrinter::Portrait);
        mPrinter->setFullPage(true);

     

    (2),二维码设置

    开始模式,纠错等级,版本。二维码相关属性可 百度搜索。

     

     mode =  MODE_8;
        level = LEVEL_L;//LEVEL_Q;//纠错
        foreground = QColor("black");
        background = QColor("white");
        casesen=true;
        mPrinter = new QPrinter(QPrinter::PrinterResolution);

     

    (3),打印文字

    此处 double MmToDot =12  为上述 分辨率 也即是300/24.5 得出的结果,表示 没英寸多少个点。我们在计算文字位置的时候 最好用毫米,而

    QRect 内所需的参数为像素点,换算成毫米 就要乘以一个系数。

     

    double MmToDot =12 ;//分辨率/24.5MM  每毫米多少像素点 。
        QPainter painter(mPrinter);
     
        //文字 x:3mm   y:27mm   宽:28mm  高:4mm
        double codeTextX=0*MmToDot;
        double codeTextY=24*MmToDot;
        double codeTextW=28*MmToDot;
        double codeTextH=4*MmToDot;
        QRect codeTextRect = QRect(codeTextX,codeTextY,codeTextW,codeTextH);
        painter.setFont(QFont("Microsoft YaHei", 8, QFont::Normal));
        painter.drawText(codeTextRect, Qt::AlignCenter, codeText);

     

    (4),打印 二维码

     

    //二维码图片 x:42mm  y:17mm 宽::14MM  高:14mm
        double qrcodeX =35*MmToDot;
        double qrcodeY =17*MmToDot;
        double qrcodeW =10*MmToDot;
        double qrcodeH =10*MmToDot;
        //ver 1  版本越高,意味着存储的内容越多,纠错能力也越强
        QRcode *qrcode = QRcode_encodeString(codeText.toStdString().c_str(), 1, (QRecLevel)level, (QRencodeMode)mode, casesen ? 1 : 0);
        int margin=0;
        if(0 != qrcode)
        {
            unsigned char *point = qrcode->data;
            painter.setPen(Qt::NoPen);
            painter.setBrush(this->background);
     
            painter.drawRect(qrcodeX,qrcodeY, qrcodeW, qrcodeH);
            double scale = (qrcodeW - 2.0 * margin) / qrcode->width;
            painter.setBrush(this->foreground);
            for (int y = 0; y < qrcode->width; y ++) {
                for (int x = 0; x < qrcode->width; x ++) {
                    if (*point & 1) {
                        QRectF r(margin + x * scale+qrcodeX, margin + y * scale+qrcodeY, scale, scale);
                        painter.drawRects(&r, 1);
                    }
                    point ++;
                }
            }
            point = NULL;
            QRcode_free(qrcode);
        }
        qrcode = NULL;

     

    (5),打印条码

     

        QFont barcodefont = QFont("Code 128", 46, QFont::Normal);
         barcodefont.setLetterSpacing(QFont::AbsoluteSpacing,0.0);
         painter.setFont(barcodefont);
         QString arr = encodeBarcode(codeText);
         painter.drawText(barcodeRect, Qt::AlignCenter, arr);

     

    (6),上述 实现之后,可实现 条码 或二维码 与文字的打印,并可以毫米为单位 进行位置的调整。但是打印出来的效果特别模糊,经过又一筐条码的浪费,终于找到了问题所在。打印机的 浓度 和速度。将速度调低、将浓度 增大

     

    控制面板-》打印机-》右键 -》打印机首选项

     

    代码:  http://download.csdn.net/download/weixin_38416696/10248658

    展开全文
  • RDLC报表实现二维码打印功能

    千次阅读 2017-03-15 13:57:29
    因工作需要,需要开发一个二维码报表打印功能,报表需要使用RDLC报表,用户可以选择每页显示多少个二维码进行打印
  • 单据打印二维码的功能, 用法如下: 1.复制附件中的那2个DLL到使用的文件夹下面。 qrdecode.dll qrencode.dll 2.导入对象 n_qrcode_prtobj.sru 3.调用: n_qrcode_prtobj luo_qrcode_prtobj luo_qrcode_prtobj = ...
  • Jquery 生成二维码图片 并且局部打印

    千次阅读 2016-02-20 14:28:17
    利用jquery插件生成二维码,并且打印图片,,,适应火狐,谷歌,IE还么有测试.......
  • 1、C# 斑马(Zebra)Zpl条码、二维码打印测试代码源码; 2、实例采用打印图片方式打印二维码(包含中文文字)。 2、包含web端采用WebSocket调用本地服务zpl打印(含Web端与服务端源码); 3、此源码已经测试,请使用...
  • DW 二维码打印

    2016-03-10 18:07:20
    现在要在DW 中打印二维码 我看现在有2种做法 1就是 生成图片然后加载图片图片窗体 2就是调用 ole 控件, 请问那种要好点呢, 然后在请教一下我DW 中图片控件 加载图片 怎么加载不起呢 dw_1.object.p_1....
  • 二维码中,放入图片,遮挡一部分是被允许的。 二维码在少许损伤的情况下还可以读取出来,图片可以放置的位置如图的黄色区域。(具体可以放多大要看二维码生成时的纠错能力)二维码的纠错级别:纠错级别越高,生成...
  • js单独打印二维码图片和批量打印二维码图片,大纲: 1. 打印机设置 (以使用的热敏打印机为例) 2. js实现打印功能 3. 遇坑记录
  • 热敏打印机打印二维码图片

    千次阅读 2017-04-19 13:11:09
    最近研究热敏打印机打印二维码,用到了北洋OPOS二次开发包DLL,借鉴该代码:http://www.cnblogs.com/datacool/archive/2012/11/27/2014666.html ,下面是扩展的一个打印图片的方法 /// /// 打印图片 /// /// ...
  • testposdll.exe 本测试程序 调用北洋通用接口 打印机打印二维码图片,生成二维码 并将产生的二维码图片转换成打印机可以打印的单色位图
  • 通过java生成二维码图片,可以添加文字内容,非常方便实现打印。 import java.awt.Color; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.Graphics2D; import ...
  • JS 实现打印二维码图片

    千次阅读 2019-01-04 09:18:16
    (0)" class="easyui-linkbutton ezui-btn-blue" iconCls="fa fa-print" onclick="PrintEvm()">打印 (0)" class="easyui-linkbutton ezui-btn-red" iconCls="fa fa-close" onclick="javascript:closeDlg('dlg-...
  • js生成二维码打印

    2016-02-22 18:56:41
    技术:js ,jquery ,jquery.jqprint-0.3.js来打印图片,jquery.qrcode.min.js生成二维码,另参杂多项前端小技术,例如:CANVAS转换图片,IMG添加id,js定时器,新窗口弹出....所有一应插件均已完善,不用多余下载和...
  • [c#]二维码打印

    千次阅读 2014-12-11 16:12:46
    // 3 直接根据生成的二维码打印 Image image = ProduceQRcode("司吉峰"); //在指定区域打印二维码 Rectangle destRect = new Rectangle(left, top, width, height); e.Graphics.DrawImage(image, destRect, 0, ...
  • 使用jquery qrcode生成二维码图片分享到朋友圈打印二维码   一、依赖js 1、jquery-3.3.1.min.js : jQuery 2、jquery.qrcode.min.js :生成二维码插件 3、jquery.jqprint-0.3.js:打印插件   二、html 部分...
  • 批量打印二维码.rar

    2021-06-18 13:39:09
    EXCEL 实现固定表格图片打印、EXCLE图片批量自动更新引用,送货单,学生证,参会证等等图片自动根据数据源更新实现批量打印图片批量导入EXCEL ,二维码批量导入EXCEL。office excel
  • 量具管理-量具生成和二维码打印 只要选择量具分类,按下"生成新量具"按钮可以自动生成量具并能打印二维码 建立文件createclass.py # -*- coding: utf-8 -*- import re import qrcode import os import sqlite3 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,671
精华内容 3,868
关键字:

二维码打印是打印图片