Qt之热敏打印机设置

1、生成PDF文件

void MainWindow::createPdf()
{
    QString fileName = QFileDialog::getSaveFileName(this, tr("导出PDF文件"), QString(), "*.pdf");
    if (!fileName.isEmpty()) {
        // 如果文件后缀为空,则默认使用.pdf
        if (QFileInfo(fileName).suffix().isEmpty())
            fileName.append(".pdf");
        QPrinter printer;
        // 指定输出格式为pdf
        printer.setOutputFormat(QPrinter::PdfFormat);
        printer.setOutputFileName(fileName);
        ui->textEdit->print(&printer);
    }
}
 

2、页面设置

void MainWindow::setUpPage()
{
    QPrinter printer;
    QPageSetupDialog pageSetUpdlg(&printer, this);
    if (pageSetUpdlg.exec() == QDialog::Accepted)
    {
        printer.setOrientation(QPrinter::Landscape);
    }
    else
    {
        printer.setOrientation(QPrinter::Portrait);
    }
}
 

3、打印预览

void MainWindow::doPrintPreview()
{
    QPrinter printer;
 
    // 创建打印预览对话框
    QPrintPreviewDialog preview(&printer, this);
    // 当要生成预览页面时,发射paintRequested()信号
    connect(&preview, SIGNAL(paintRequested(QPrinter*)),
                  this,SLOT(printPreview(QPrinter*)));
    preview.exec();
}
 

4、设置打印

void MainWindow::doPrint()
{
    // 创建打印机对象
    QPrinter printer;
    // 创建打印对话框
    QString printerName = printer.printerName();
    if( printerName.size() == 0)
        return;
    QPrintDialog dlg(&printer, this);
    //如果编辑器中有选中区域,则打印选中区域
    if (ui->textEdit->textCursor().hasSelection())
        dlg.addEnabledOption(QAbstractPrintDialog::PrintSelection);
    // 如果在对话框中按下了打印按钮,则执行打印操作
    if (dlg.exec() == QDialog::Accepted)
    {
       //ui->textEdit->print(&printer);
       // print the existing document by absoult path
        //printFile("D:/1.doc");
 
        QTextDocument doc;
        //doc.setHtml(htmlString);
        QFont font = doc.defaultFont();
        font.setBold(true);
        font.setPointSize(10);
        doc.setDefaultFont(font);
        QSizeF s = QSizeF(printer.logicalDpiX() * (58 / 25.4), printer.logicalDpiY() * (297 / 25.4));
        //doc.setPageSize(s);
//        printer.setPageSize(s);
        printer.setOutputFormat(QPrinter::NativeFormat);
 
        doc.setHtml("店联");
        doc.print(&printer);
    }
}
 

5、设置打印字体大小,内容

void MainWindow::PrintBtn()
{
    QPrinter printer;
    QTextDocument doc;
 
    QFont font = doc.defaultFont();
    font.setBold(true);
    font.setPointSize(5);   //设置字体大小
    doc.setDefaultFont(font);
 
    QSizeF s = QSizeF(printer.logicalDpiX() * (80/70),  //58 / 25.4
                      printer.logicalDpiY() * (200/2));
    doc.setPageSize(s);
//    printer.setPageSize(s);
    printer.setOutputFormat(QPrinter::NativeFormat);
    doc.setPlainText(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"));
    doc.print(&printer);
    doc.setPlainText("yuiftyi\n打印测试\n\n打印结束!");
    doc.print(&printer);
}
 



  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
热敏打印机是一种使用热敏纸张进行打印的设备,可以用于打印超市小票等短暂使用的文档。关于在Python中使用热敏打印机,您提到了几种方法和问题。 引用中提到了使用Qt5中的QPrinter来打印超市热敏小票的过程。这是一种使用QWebChannel和内嵌网页进行JavaScript交互的方法,其根本目标在于使用Qt5调起打印机服务。 引用中提到了将所有代码封装成一个独立的可执行程序(exe),并放置一个Excel文件的不便之处。这可能是因为热敏打印机的内容不是固定长度的,所以难以通过Excel文件来进行打印。 引用中提到了一个解决方法,即将要打印的内容转为图片再进行打印。这种方法可以避免打印时出现边距的问题。 综上所述,您可以考虑使用Qt5中的QPrinter来调起热敏打印机服务,并将要打印的内容转为图片再进行打印。这种方法可以避免固定长度和边距的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [PyQt5中使用Qprinter打印热敏小票](https://blog.csdn.net/weixin_39559486/article/details/110556663)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值