これをPythonファイルに保存して--code引数で使用すると、必要な処理が実行されます。
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import os
from qgis.core import *
from qgis.gui import *
from qgis.utils import iface
for comp in iface.activeComposers():
print comp
folder = r"C:\temp"
title = "testing"
printer = QPrinter()
painter = QPainter()
comp.composition().setUseAdvancedEffects(False)
myAtlas = comp.composition().atlasComposition()
if myAtlas.enabled():
myAtlas.beginRender()
comp.composition().setAtlasMode(QgsComposition.ExportAtlas)
myAtlas.setFilenamePattern(u"'{}_'||$feature".format(title))
for i in range(0, myAtlas.numFeatures()):
myAtlas.prepareForFeature(i)
filename = os.path.join(folder, title + '.pdf')
print filename
comp.composition().beginPrintAsPDF(printer, filename)
comp.composition().beginPrint(printer)
printReady = painter.begin(printer)
if i > 0:
printer.newPage()
comp.composition().doPrint(printer, painter)
myAtlas.endRender()
painter.end()
これにより、すべてのコンポーザーがループされ、アトラスが有効になっている場合は、それぞれの単一のPDFに印刷されます。
注:を使用して、QGISセッションでプロジェクトファイルを開くことができますiface.addProject
。したがって、これを行うことで、多くのQGISセッションを開かないようにすることができます。
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import os
from qgis.core import *
from qgis.gui import *
from qgis.utils import iface
def print_it():
for comp in iface.activeComposers():
print comp
folder = r"C:\temp"
title = "testing"
printer = QPrinter()
painter = QPainter()
comp.composition().setUseAdvancedEffects(False)
myAtlas = comp.composition().atlasComposition()
if myAtlas.enabled():
myAtlas.beginRender()
comp.composition().setAtlasMode(QgsComposition.ExportAtlas)
myAtlas.setFilenamePattern(u"'{}_'||$feature".format(title))
for i in range(0, myAtlas.numFeatures()):
myAtlas.prepareForFeature(i)
filename = os.path.join(folder, title + '.pdf')
print filename
comp.composition().beginPrintAsPDF(printer, filename)
comp.composition().beginPrint(printer)
printReady = painter.begin(printer)
if i > 0:
printer.newPage()
comp.composition().doPrint(printer, painter)
myAtlas.endRender()
painter.end()
for project in projectlist:
iface.addProject(project)
print_it()