首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从QGraphicsScene生成带有可复制文本的pdf文件?

如何从QGraphicsScene生成带有可复制文本的pdf文件?
EN

Stack Overflow用户
提问于 2011-12-12 21:39:37
回答 1查看 2.3K关注 0票数 18

我的代码通过在正确初始化的QPrinter上呈现QGraphicsScene内容来生成pdf。当处理应用程序时,这样的文本可以被编辑,复制到剪贴板等。我如何从QGraphicsScene产生pdf,在那里我的文本字符串也可以被复制,或者它是不可能的,我需要为这样的任务创建QTextDocument?

代码语言:javascript
复制
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();
EN

回答 1

Stack Overflow用户

发布于 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可用于您的平台,您可以很容易地验证这一点。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8475200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档