<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-GB" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">Hi,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I’ve found the python code to export a layout from a QGIS project directly from the command line which is great but the database overlays are missing from the resulting PDF.
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The layers use the authentication manager so I suspect it is something to do with initialising the password manager correctly but the example I’ve found so far is for an older version. Is anyone able to point me at an example that uses
 overlays from a database?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">This is what I have so far:<o:p></o:p></p>
<p class="MsoNormal">#!/usr/bin/env python3<o:p></o:p></p>
<p class="MsoNormal">import os, time<o:p></o:p></p>
<p class="MsoNormal">from qgis.core import (QgsProject, QgsLayoutExporter, QgsApplication, QgsAuthManager)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">QgsApplication.setPrefixPath("/usr", True)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">gui_flag = False<o:p></o:p></p>
<p class="MsoNormal">app = QgsApplication([], gui_flag)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">app.initQgis()<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">project_path = os.getcwd() + '/project.qgs'<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">project_instance = QgsProject.instance()<o:p></o:p></p>
<p class="MsoNormal">project_instance.setFileName(project_path)<o:p></o:p></p>
<p class="MsoNormal">project_instance.read()<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">authMgr = QgsApplication.authManager()<o:p></o:p></p>
<p class="MsoNormal">if authMgr.authenticationDatabasePath():<o:p></o:p></p>
<p class="MsoNormal">   # already initilised => we are inside a QGIS app.<o:p></o:p></p>
<p class="MsoNormal">   msg = 'Inside QGIS'<o:p></o:p></p>
<p class="MsoNormal">else:<o:p></o:p></p>
<p class="MsoNormal">   # outside qgis, e.g. in a testing environment => setup env var before<o:p></o:p></p>
<p class="MsoNormal">   # db init<o:p></o:p></p>
<p class="MsoNormal">   os.environ['QGIS_AUTH_DB_DIR_PATH'] = "Path/qgis-auth.db"<o:p></o:p></p>
<p class="MsoNormal">   msg = 'Master password could not be set'<o:p></o:p></p>
<p class="MsoNormal">   assert authMgr.setMasterPassword(“password”, True), msg<o:p></o:p></p>
<p class="MsoNormal">   authMgr.init( " Path /qgis-auth.db" )<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">manager = QgsProject.instance().layoutManager()<o:p></o:p></p>
<p class="MsoNormal">timestr = time.strftime("%Y%m%d-%H%M%S")<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">layout = manager.layoutByName("layout ") # name of the layout<o:p></o:p></p>
<p class="MsoNormal"># or layout = manager.layouts()[0] # first layout<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">exporter = QgsLayoutExporter(layout)<o:p></o:p></p>
<p class="MsoNormal">exporter.exportToPdf(project_instance.absolutePath() + "/layout-" + timestr + ".pdf",<o:p></o:p></p>
<p class="MsoNormal">                     QgsLayoutExporter.PdfExportSettings())<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">app.exitQgis()<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<table class="MsoNormalTable" border="0" cellpadding="0">
<tbody>
<tr>
<td style="padding:.75pt 15.0pt .75pt .75pt">
<p class="MsoNormal"><b><span style="font-size:11.5pt;font-family:"Arial",sans-serif;mso-fareast-language:EN-GB">Paul Wittle
</span></b><span style="font-size:11.5pt;font-family:"Arial",sans-serif;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
</td>
<td rowspan="6" style="border:none;border-left:solid #2F5597 1.5pt;padding:.75pt .75pt .75pt 15.0pt">
<p class="MsoNormal"><a href="https://www.dorsetcouncil.gov.uk/"><span style="color:windowtext;text-decoration:none"><img border="0" width="227" height="97" style="width:2.3645in;height:1.0104in" id="Picture_x0020_5" src="cid:image001.jpg@01D665D7.034B7860"></span></a><span style="font-family:"Arial",sans-serif;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
</td>
</tr>
<tr>
<td style="padding:.75pt 15.0pt .75pt .75pt">
<p class="MsoNormal"><b><span style="font-family:"Arial",sans-serif;mso-fareast-language:EN-GB">Business Solutions Analyst (GIS)</span></b><span style="font-family:"Arial",sans-serif;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
</td>
</tr>
<tr>
<td style="padding:.75pt 15.0pt .75pt .75pt">
<p class="MsoNormal"><b><span style="font-family:"Arial",sans-serif;mso-fareast-language:EN-GB">ICT Operations
</span></b><span style="font-family:"Arial",sans-serif;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
</td>
</tr>
<tr>
<td style="padding:.75pt 15.0pt 15.0pt .75pt">
<p class="MsoNormal"><b><span style="font-family:"Arial",sans-serif;mso-fareast-language:EN-GB">Dorset Council</span></b><span style="font-family:"Arial",sans-serif;mso-fareast-language:EN-GB"><o:p></o:p></span></p>
</td>
</tr>
<tr>
<td style="padding:.75pt 15.0pt .75pt .75pt">
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif;mso-fareast-language:EN-GB"><a href="tel:01305%20228473%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20"><span style="color:blue">01305 228473
</span></a><o:p></o:p></span></p>
</td>
</tr>
<tr>
<td style="padding:.75pt 15.0pt .75pt .75pt">
<p class="MsoNormal"><span style="font-family:"Arial",sans-serif;mso-fareast-language:EN-GB"><a href="https://www.dorsetcouncil.gov.uk"><span style="color:blue">dorsetcouncil.gov.uk</span></a><o:p></o:p></span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal"><span style="display:none;mso-fareast-language:EN-GB"><o:p> </o:p></span></p>
<table class="MsoNormalTable" border="0" cellpadding="0">
<tbody>
<tr>
<td style="padding:15.0pt 3.75pt .75pt .75pt">
<p class="MsoNormal"><a href="https://www.facebook.com/DorsetCouncilUK"><span style="color:windowtext;text-decoration:none"><img border="0" width="46" height="46" style="width:.4791in;height:.4791in" id="Picture_x0020_6" src="cid:image002.png@01D665D7.034B7860"></span></a><span style="mso-fareast-language:EN-GB"><o:p></o:p></span></p>
</td>
<td style="padding:15.0pt 3.75pt .75pt .75pt">
<p class="MsoNormal"><a href="https://instagram.com/DorsetCouncilUK"><span style="color:windowtext;text-decoration:none"><img border="0" width="46" height="46" style="width:.4791in;height:.4791in" id="Picture_x0020_7" src="cid:image003.png@01D665D7.034B7860"></span></a><span style="mso-fareast-language:EN-GB"><o:p></o:p></span></p>
</td>
<td style="padding:15.0pt 3.75pt .75pt .75pt">
<p class="MsoNormal"><a href="https://twitter.com/DorsetCouncilUK"><span style="color:windowtext;text-decoration:none"><img border="0" width="46" height="46" style="width:.4791in;height:.4791in" id="Picture_x0020_8" src="cid:image004.png@01D665D7.034B7860"></span></a><span style="mso-fareast-language:EN-GB"><o:p></o:p></span></p>
</td>
</tr>
</tbody>
</table>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
This e-mail and any files transmitted with it are intended solely for the use of the individual or entity to whom they are addressed. It may contain unclassified but sensitive or protectively marked material and should be handled accordingly. Unless you are
 the named addressee (or authorised to receive it for the addressee) you may not copy or use it, or disclose it to anyone else. If you have received this transmission in error please notify the sender immediately. All traffic may be subject to recording and/or
 monitoring in accordance with relevant legislation. Any views expressed in this message are those of the individual sender, except where the sender specifies and with authority, states them to be the views of Dorset Council. Dorset Council does not accept
 service of documents by fax or other electronic means. Virus checking: Whilst all reasonable steps have been taken to ensure that this electronic communication and its attachments whether encoded, encrypted or otherwise supplied are free from computer viruses,
 Dorset Council accepts no liability in respect of any loss, cost, damage or expense suffered as a result of accessing this message or any of its attachments. For information on how Dorset Council processes your information, please see www.dorsetcouncil.gov.uk/416433
</body>
</html>