我的代码通过在正确初始化的QPrinter上呈现QGraphicsScene内容来生成pdf。当处理应用程序时,这样的文本可以被编辑,复制到剪贴板等。我如何从QGraphicsScene产生pdf,在那里我的文本字符串也可以被复制,或者它是不可能的,我需要为这样的任务创建QTextDocument?
QGraphicsTextItem* textItem = new QGraphicsTextItem ( text );
textItem->setPlainText ( text );
textItem->setTextInteractionFlags ( Qt::TextEditorInteraction );
textItem->setFlags( QGraphicsItem::ItemIsSelectable | textItem->flags() );
scene->addItem( textItem );
QPrinter pdfPrinter;
pdfPrinter.setOutputFormat( QPrinter::PdfFormat );
pdfPrinter.setPaperSize( QSize(scene->width(), scene->height()), QPrinter::Point );
pdfPrinter.setFullPage(true);
pdfPrinter.setOutputFileName( path );
QPainter pdfPainter;
pdfPainter.begin( &pdfPrinter);
scene->render( &pdfPainter );
pdfPainter.end();
发布于 2011-12-29 02:36:39
似乎您必须使用QTextDocument并将内容编写为HTML。查看我对这个问题的回答和评论:Qt4: Print a SQL table to PDF
编辑:我做了一个调试会话(在Windows7中使用Visual Studio ),并进入了scene->render。在某个步骤QGraphicsTextItem::paint(...)在文件qgraphicsitem.cpp ( Qt 4.8.0中的第10067行)被调用时,您可以看到文本项存储在QTextDocument中。
我的结论(来自引用的问题):文本作为文本打印到pdf文档,这意味着您无法选择或复制文本只是您的pdf查看器的一个伪像。如果包含pdftotext的xpdf可用于您的平台,您可以很容易地验证这一点。
https://stackoverflow.com/questions/8475200
复制相似问题