打印设置
QPrinter类是打印设置的类。
1.1 OutputFormat
说明:
QPrinter输出文件的格式,QPrinter::PdfFormat会输入pdf文件格式,QPrinter::PostScriptFormat输入ps文件格式.中执行print()后生成的文件类型就是根据这个来的。
相关函数:
OutputFormat QPrinter::outputFormat () //当前格式
void QPrinter::setOutputFormat ( OutputFormat format )//设置格式
void QPrinter::setOutputFileName ( const QString & fileName )//文件名后缀设为ps即为ps格式,后缀为pdf即为pdf格式
1.2 其他部分参数
Orientation:纸张方向,有QPrinter::Portrait(纵向)和QPrinter::Landscape(横向)
void QPrinter::setOrientation ( Orientation orientation )
Orientation QPrinter::orientation ()
PaperSize: 纸张大小,有A4等
void QPrinter::setPaperSize ( PaperSize newPaperSize )
PaperSize QPrinter::paperSize ()
其他类型可参考帮助文档
输出为文件
可以作为输入的控件有以下几个:
(1) QWebView,QWebFrame,作为html文件格式的载体;
(2) QPlainTextEdit,QTextEdit, 单行/多行文本编辑区域;
(3) QPainter,用于绘图的类,可处理图片格式的文件;
(4) QPrintPreviewWidget,专门用于打印预览的控件;
(5) QTextDocument,文档类型的文件处理;
以上控件都有一个共同点,都有print()函数,将设置好的QPrinter传入即可,输出对应的文件。
2.1 QWebView和QWebFrame
用途:
作为html文件格式的载体
处理函数:
void QWebView::print ( QPrinter * printer )
void QTextDocument::print ( QPrinter * printer )
示例:
//全局的变量
QWebView *webview=0;
QPrinter *printer=0;
void printWebView(void)
{
If(webview!=0)
{
webview = new QWebView();
}
If(webview!=0)
{
printer = new QPrinter(QPrinter::PrinterResolution);
}
webview->load(QUrl(“file:///home/root/test.html”));
//因为加载会花费时间,等加载完成才能处理打印
connect(webview,SIGNAL(loadFinished(bool)),this,SLOT(loadend (bool)));
}
void loadend(bool ok)
{
webview->print(printer);//输出打印文件
}
2.2 QPlainTextEdit和QTextEdit
用途:
用于界面文本输入的控件
处理函数:
void QPlainTextEdit::print ( QPrinter * printer )
void QTextEdit::print ( QPrinter * printer )
示例:
void prinTextEdit(void)
{
QTextEdit *edt = new QTextEdit();
QPrinter *printer = new QPrinter(QPrinter::PrinterResolution);
edt->setText(“This is an text!”);
edt->print(printer);
delete printer;
delete edt;
}
2.3 QPainter
用途:
用于绘图的类
处理函数:
QPainter ( QPaintDevice * device )
示例:
void prinTextEdit(void)
{
QImage image(“/home/root/test.jpg”);
QPainter painter(printer);
QRect rect = painter.viewport();
QSize size = image.size();
size.scale(rect.size(), Qt::KeepAspectRatio);
painter.setViewport(rect.x(), rect.y(),size.width(), size.height());
painter.setWindow(image.rect());
painter.drawImage(0, 0, image);
painter.drawText(10,10, ”this is image”);
}
2.4 QPrintPreviewWidget
用途:
专门用于打印预览的控件
处理函数:
QPrintPreviewWidget::QPrintPreviewWidget ( QPrinter * printer, QWidget * parent = 0, Qt::WindowFlags flags = 0 )
void QPrintPreviewWidget::print ()
示例:
QTextEdit edt;
void prinTextEdit(void)
{
QPrinter *printer = new QPrinter(QPrinter::PrinterResolution);
QPrintPreviewWidget *preview = new QPrintPreviewWidget (printer);
connect(previewWidget, SIGNAL(paintRequested(QPrinter*)),this,SLOT(printPreview(QPrinter *)));//关联打印预览的内容
preview ->print();
delete printer;
delete preview;
}
void printPreview(QPrinter *printer)
{
edt.setText(“This is an text!”);
edt.print(printer);
}
2.5 QTextDocument
用途:
文档类型的文件处理
处理函数:
void QTextDocument::print ( QPrinter * printer )
输出到设备
输出ps的文件格式可以作为打印机驱动的输入文件。
在qt中可以使用以下命令:
QString cmd;//cmd设置为打印的命令,需要驱动支持。
system(cmd);
下面是一个工参考的的命令:
gs -q -dNOPAUSE -dSAFER -sOutputFile=xxx.prn -sDEVICE=stcolor –sPAPERSIZE=a4 -r360x360 -dBitsPerPixel=1 -sDithering=gsmono -dnoWeave -sOutputCode=plain @stcany.upp xxx.ps quit.ps
相关控件
Qt提供了一些标准的控件。
QPrintDialog,打印对话框
QPrintPreviewDialog,打印预览对话框
看到的一篇博客对Qt打印机,打印类函数的总结特别全,我就引用了!
感谢这位博主的总结,地址为:https://blog.csdn.net/qqbitqqbit/article/details/17722507