2015-09-22 3 views
2

J'essaie d'utiliser QwtPlotRenderer pour enregistrer une image d'un QwtPlot en tant que fichier postscript. Cela semble pris en charge dans le documentation, cependant, chaque fois que je rends avec l'extension ".ps", rien ne se passe.Est-ce que Qt5 brise le support PostScript de QwtPlotRenderer?

Après quelques recherches, il apparaît que Qt5 removed postscript support from QPrinter. Cela signifie-t-il que Qwt 6.1.2 ne peut pas être rendu en post-scriptum lors de l'utilisation de Qt 5?

+0

Heureusement, PDF est le langage de description de page de defacto, et la plupart des imprimantes peuvent imprimer des PDF directement sans les convertir au PS d'abord. D'une manière générale, il n'y a guère besoin d'émettre du postscript ces jours-ci. –

+0

Je suis généralement d'accord, mais cela dépend de votre application. Si vous essayez de manipuler le fichier dans Adobe Illustrator, par exemple, il est beaucoup plus facile de travailler avec un fichier * .eps qu'avec un fichier * .pdf (c'est ce que me disent les personnes qui me paient pour cela). –

+1

Postscript peut être meilleur si vous avez l'intention de manipuler le résultat par d'autres moyens tels que l'injection de votre propre code (make rgb -> cmy par exemple) – joojaa

Répondre

2

Malheureusement, oui, c'est le cas. Si nous jetons un coup d'oeil dans le code source qwt_plot_renderer.cpp, nous pouvons voir que le support postscript ne s'étend pas à Qt version 5 et supérieure, presque certainement parce qu'il est construit sur le QPrinter::PostScriptFormat, qui a été retiré de Qt.

// Excerpt from qwt_plot_renderer.cpp (ln 257) 
else if (fmt == "ps") 
{ 
#if QT_VERSION < 0x050000 
#ifndef QT_NO_PRINTER 
     QPrinter printer; 
     printer.setOutputFormat(QPrinter::PostScriptFormat); 
     printer.setColorMode(QPrinter::Color); 
     printer.setFullPage(true); 
     printer.setPaperSize(sizeMM, QPrinter::Millimeter); 
     printer.setDocName(title); 
     printer.setOutputFileName(fileName); 
     printer.setResolution(resolution); 

     QPainter painter(&printer); 
     render(plot, &painter, documentRect); 
#endif 
#endif 
} 

Cela dit, Qwt prend en charge une variété de formats portables avec Qt 5, y compris PDF et SVG, qui sont les graphiques vectoriels, et dont un est probablement adapté à la plupart des applications.