Bunu bir Python dosyasına kaydetmek ve --code argümanında kullanmak, ihtiyacınız olanı yapmalıdır:
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()
Bu, tüm bestecileri döngüye sokar ve atlas etkinleştirilmişse her biri için tek bir PDF olarak yazdırır.
Not Bir proje dosyasını kullanarak bir QGIS oturumunda açabilirsiniz iface.addProject
. Böylece, birçok QGIS oturumu açmamak için bunu yapabilirsiniz.
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()