mainwindow.h如下:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>namespace Ui {class MainWindow;
}class MainWindow : public QMainWindow {Q_OBJECT
public:explicit MainWindow ( QWidget *parent = 0 );~MainWindow();
private slots:void doPrint();void doPrintPreview();void printPreview ( QPrinter *printer );void createPdf();
private:Ui::MainWindow *ui;
};#endif // MAINWINDOW_H

  mainwindow.cpp如下:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPrinter>
#include <QPrintDialog>
#include <QPrintPreviewDialog>
#include <QFileDialog>
#include <QFileInfo>MainWindow::MainWindow ( QWidget *parent ) : QMainWindow ( parent ), ui ( new Ui::MainWindow ) {ui->setupUi ( this );QAction *action_print = new QAction ( tr ( "打印" ), this );QAction *action_printPreview = new QAction ( tr ( "打印预览" ), this );QAction *action_pdf = new QAction ( tr ( "生成pdf" ), this );connect ( action_print, SIGNAL ( triggered() ), this, SLOT ( doPrint() ) );connect ( action_printPreview, SIGNAL ( triggered() ), this, SLOT ( doPrintPreview() ) );connect ( action_pdf, SIGNAL ( triggered() ), this, SLOT ( createPdf() ) );ui->mainToolBar->addAction ( action_print );ui->mainToolBar->addAction ( action_printPreview );ui->mainToolBar->addAction ( action_pdf );
}MainWindow::~MainWindow() {delete ui;
}void MainWindow::doPrint() { /* 打印文档 */QPrinter printer; /* 创建打印机对象 */QPrintDialog dlg ( &printer, this ); /* 创建打印对话框 */if ( ui->textEdit->textCursor().hasSelection() ) { /* 如果编辑器中有选中区域,则打印选中区域 */dlg.addEnabledOption ( QAbstractPrintDialog::PrintSelection );}if ( dlg.exec() == QDialog::Accepted ) { /* 如果在对话框中按下了打印按钮,则执行打印操作 */ui->textEdit->print ( &printer );}
}void MainWindow::doPrintPreview() { /* 打印预览 */QPrinter printer;QPrintPreviewDialog preview ( &printer, this ); /* 创建打印预览对话框 *//* 当要生成预览页面时,发射paintRequested信号 */connect ( &preview, SIGNAL ( paintRequested ( QPrinter * ) ), \this, SLOT ( printPreview ( QPrinter * ) ) );preview.exec();
}void MainWindow::printPreview ( QPrinter *printer ) {ui->textEdit->print ( printer );
}void MainWindow::createPdf() { /* 生成PDF文件 */QString fileName = QFileDialog::getSaveFileName ( this, tr ( "导出PDF文件" ), QString(), "*.pdf" );if ( !fileName.isEmpty() ) {if ( QFileInfo ( fileName ).suffix().isEmpty() ) { /* 如果文件后缀为空,则默认使用“.pdf” */fileName.append ( ".pdf" );}QPrinter printer;printer.setOutputFormat ( QPrinter::PdfFormat ); /* 指定输出格式为pdf */printer.setOutputFileName ( fileName );ui->textEdit->print ( &printer );}
}

Qt之打印pdf文档相关推荐

  1. java pdf打印_Java 打印PDF文档

    本文将介绍如何在Java应用程序中打印PDF文档.一般有以下三种常见打印方式:静默打印 显示打印对话框打印 打印PDF时自定义纸张大小 使用工具:Free Spire.PDF for Java 创建运 ...

  2. C# 打印PDF文档的10种方法

    操作PDF文档时,打印是常见的需求之一.针对不同的打印需求,可分多种情况来进行,如设置静默打印.指定打印页码范围和打印纸张大小.双面打印.黑白打印等等.经过测试,下面将对常见的几种PDF打印需求做一些 ...

  3. javascript利用iframe打印pdf文档失败的问题

    pdf文档不能在QQ浏览器(或者谷歌浏览器)直接打开 利用iframe打印pdf文档可能遇到的问题 利用$("#"+iframe的id)[0].contentWindow.prin ...

  4. Java调用打印机打印PDF文档的两种方法

    最近,由于项目需求,需要增加系统调用打印机打印PDF文档功能.以前在Asp.Net项目中做过套打,但是现在的需求直接文档打印,下面是实现代码调用打印机的两种方法. 1.Java Print Servi ...

  5. java jar 打印_三种Java打印PDF文档的实例代码

    以下内容归纳了通过Java程序打印PDF文档时的3种情形.即: 1 静默打印 2 显示打印对话框打印 3 打印PDF时自定义纸张大小 使用工具:Spire.PDF for Java Jar文件获取及导 ...

  6. C# 六种方案打印PDF文档

    打印PDF文档是开发人员经久不变的话题,常见的打印需求大致有以下六种: 用默认打印机打印PDF文档 用虚拟打印机打印PDF文档 指定打印机及PDF文档的打印页码范围 静默打印PDF文档 双面打印PDF ...

  7. 使用PDF处理控件Aspose.PDF以编程方式打印PDF文档完整攻略

    许多公司在很大程度上减少了纸张的使用.但是,在某些情况下打印很重要.例如,系统可能包含PDF格式的在线订单的详细信息.他们需要在分发在线订单进行交付时打印PDF.他们大规模处理项目,因此手动打印每个文 ...

  8. Java 打印PDF文档 - 指定打印机、自定义纸张大小、设置打印参数、显示打印对话框等

    这篇文章介绍如何在Java应用程序中打印PDF文档以及进行一些打印设置,包括指定打印机.自定义纸张大小.设置打印参数.以及显示打印对话框等. 导入jar文件 本文所使用的PDF类库是Spire.PDF ...

  9. 利用Aspose.PDF以编程方式打印PDF文档

    使用C#打印PDF文件 可以使用C#或VB.net在.NET应用程序中自动打印PDF文件.您可以按照以下简单步骤打印PDF文件: 创建一个PdfViewer类的对象 加载输入的PDF文档 打印PDF文 ...

  10. html 打印预览 兼容,vue下使用 pdf.js 预览 和 打印 PDF文档 兼容React

    我使用前端开发框架是vue,有一个打印PDF文档的需求. 这个需求最开始是交给后台,但是明显不切实际, 因为后台服务器,根本就无法连接打印机. 所以这个预览加打印文档的需求就交到了前端, 开始我有想过 ...

最新文章

  1. 简述Linux目录结构和系统结构
  2. mysql的or能去重吗_mysql条件查询中AND与OR联合使用的注意事项!
  3. 在Android工程中加入AIDL文件时,gen目录生成的文件报错-问题解决
  4. 2019年4月最新勒索病毒样本分析及数据恢复
  5. Maven简单的配置Junit测试及使用简单的mock
  6. 沉淀2017,勇闯2018
  7. Mybatis中连接池介绍
  8. OpenGL画简单图形
  9. 接口批量同步数据_千手接口平台+电商ERP,助德嵘大药房征战拼多多
  10. Ubuntu 中将Python3 置为默认版本
  11. python之IO多路复用
  12. 一文详解python的类方法,普通方法和静态方法
  13. Excel图表4——平均线图
  14. Linux源码安装Mysql5.7
  15. 关掉EMOS的反病毒及反垃圾服务。
  16. 大牛深入讲解!6年老Android面经总结,系列教学
  17. 使用html语言替换字符串中的特殊标点符号
  18. springboot笔记整理(超详细,手把手教程!)
  19. strlen函数题目
  20. 先吃奶油还是先吃蛋糕--推迟满足感

热门文章

  1. 计算机和信息系统安全保密管理规定,信息系统安全和保密管理制度
  2. 2016网吧服务器系统,原版系统一键优化精简方案(Win10/Server2016/Server2019)
  3. win11电脑快捷键
  4. 关联性——组内相关系数
  5. 【华为机试题 HJ91】走方格的方案数
  6. IT之路,从迷茫“愤青”到团队项目经理,他是如何一步步走出来的?
  7. 建筑专业规范大全 2020版_房屋建筑工程现行规范标准目录汇编(2020版)—防水工程...
  8. 谈谈Java项目经验
  9. 做了三年Java,java简历包装项目经验
  10. 数字化转型实践:世界级 2B 数字化营销的方法框架