{"id":1254,"date":"2026-10-19T08:26:49","date_gmt":"2026-10-19T08:26:49","guid":{"rendered":"https:\/\/helpwithmygisassignment.com\/blog\/?p=1254"},"modified":"2026-10-19T08:26:49","modified_gmt":"2026-10-19T08:26:49","slug":"automating-pdf-map-books-and-atlases-in-arcgis-pro-and-qgis","status":"publish","type":"post","link":"https:\/\/helpwithmygisassignment.com\/blog\/automating-pdf-map-books-and-atlases-in-arcgis-pro-and-qgis\/","title":{"rendered":"Automating PDF Map Books and Atlases in ArcGIS Pro and QGIS"},"content":{"rendered":"<div id=\"model-response-message-contentr_0e1eaaeab9845897\" class=\"markdown markdown-main-panel md-content enable-luminous-fast-follows enable-updated-hr-color stronger tutor-markdown-rendering\" dir=\"ltr\" aria-busy=\"false\" aria-live=\"polite\">\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_89 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/helpwithmygisassignment.com\/blog\/automating-pdf-map-books-and-atlases-in-arcgis-pro-and-qgis\/#Automating_PDF_Map_Books_and_Atlases_in_ArcGIS_Pro_and_QGIS\" >Automating PDF Map Books and Atlases in ArcGIS Pro and QGIS<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/helpwithmygisassignment.com\/blog\/automating-pdf-map-books-and-atlases-in-arcgis-pro-and-qgis\/#Introduction_to_Automating_PDF_Map_Books_and_Atlases_in_ArcGIS_Pro_and_QGIS\" >Introduction to Automating PDF Map Books and Atlases in ArcGIS Pro and QGIS<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/helpwithmygisassignment.com\/blog\/automating-pdf-map-books-and-atlases-in-arcgis-pro-and-qgis\/#Workflow_1_ArcGIS_Pro_Map_Series_Spatial_and_Page_Series\" >Workflow 1: ArcGIS Pro Map Series (Spatial and Page Series)<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/helpwithmygisassignment.com\/blog\/automating-pdf-map-books-and-atlases-in-arcgis-pro-and-qgis\/#Step_1_Prepare_the_Index_Coverage_Layer\" >Step 1: Prepare the Index \/ Coverage Layer<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/helpwithmygisassignment.com\/blog\/automating-pdf-map-books-and-atlases-in-arcgis-pro-and-qgis\/#Step_2_Create_Layout_and_Configure_Map_Frame\" >Step 2: Create Layout and Configure Map Frame<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/helpwithmygisassignment.com\/blog\/automating-pdf-map-books-and-atlases-in-arcgis-pro-and-qgis\/#Step_3_Enable_and_Configure_Spatial_Map_Series\" >Step 3: Enable and Configure Spatial Map Series<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/helpwithmygisassignment.com\/blog\/automating-pdf-map-books-and-atlases-in-arcgis-pro-and-qgis\/#Step_4_Add_Dynamic_Text_and_Layout_Elements\" >Step 4: Add Dynamic Text and Layout Elements<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/helpwithmygisassignment.com\/blog\/automating-pdf-map-books-and-atlases-in-arcgis-pro-and-qgis\/#Step_5_Batch_Export_Map_Series_to_PDF\" >Step 5: Batch Export Map Series to PDF<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/helpwithmygisassignment.com\/blog\/automating-pdf-map-books-and-atlases-in-arcgis-pro-and-qgis\/#Workflow_2_QGIS_Atlas_Generation\" >Workflow 2: QGIS Atlas Generation<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/helpwithmygisassignment.com\/blog\/automating-pdf-map-books-and-atlases-in-arcgis-pro-and-qgis\/#Step_1_Set_Up_Coverage_Layer\" >Step 1: Set Up Coverage Layer<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/helpwithmygisassignment.com\/blog\/automating-pdf-map-books-and-atlases-in-arcgis-pro-and-qgis\/#Step_2_Build_Print_Layout\" >Step 2: Build Print Layout<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/helpwithmygisassignment.com\/blog\/automating-pdf-map-books-and-atlases-in-arcgis-pro-and-qgis\/#Step_3_Enable_Atlas_Control\" >Step 3: Enable Atlas Control<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/helpwithmygisassignment.com\/blog\/automating-pdf-map-books-and-atlases-in-arcgis-pro-and-qgis\/#Step_4_Link_Map_Item_to_Atlas_and_Insert_Substitution_Variables\" >Step 4: Link Map Item to Atlas and Insert Substitution Variables<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/helpwithmygisassignment.com\/blog\/automating-pdf-map-books-and-atlases-in-arcgis-pro-and-qgis\/#Step_5_Batch_Export_Atlas_to_PDF\" >Step 5: Batch Export Atlas to PDF<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/helpwithmygisassignment.com\/blog\/automating-pdf-map-books-and-atlases-in-arcgis-pro-and-qgis\/#Side-by-Side_Workflow_Comparison\" >Side-by-Side Workflow Comparison<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/helpwithmygisassignment.com\/blog\/automating-pdf-map-books-and-atlases-in-arcgis-pro-and-qgis\/#Advanced_Tips\" >Advanced Tips<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/helpwithmygisassignment.com\/blog\/automating-pdf-map-books-and-atlases-in-arcgis-pro-and-qgis\/#1_Dynamic_Map_Rotation_Per_Page\" >1. Dynamic Map Rotation Per Page<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/helpwithmygisassignment.com\/blog\/automating-pdf-map-books-and-atlases-in-arcgis-pro-and-qgis\/#2_Multi-Page_Table_Integration\" >2. Multi-Page Table Integration<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/helpwithmygisassignment.com\/blog\/automating-pdf-map-books-and-atlases-in-arcgis-pro-and-qgis\/#3_Export_Compression_and_File_Size_Optimization\" >3. Export Compression and File Size Optimization<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/helpwithmygisassignment.com\/blog\/automating-pdf-map-books-and-atlases-in-arcgis-pro-and-qgis\/#Summary\" >Summary<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/helpwithmygisassignment.com\/blog\/automating-pdf-map-books-and-atlases-in-arcgis-pro-and-qgis\/#_Frequently_Asked_Questions\" >\u00a0Frequently Asked Questions<\/a><\/li><\/ul><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h1 data-path-to-node=\"0\"><span class=\"ez-toc-section\" id=\"Automating_PDF_Map_Books_and_Atlases_in_ArcGIS_Pro_and_QGIS\"><\/span>Automating PDF Map Books and Atlases in ArcGIS Pro and QGIS<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<div><\/div>\n<h2 data-path-to-node=\"4\"><span class=\"ez-toc-section\" id=\"Introduction_to_Automating_PDF_Map_Books_and_Atlases_in_ArcGIS_Pro_and_QGIS\"><\/span>Introduction to Automating PDF Map Books and Atlases in ArcGIS Pro and QGIS<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div>Manually producing multi-page map series for extensive linear infrastructure (such as highways, pipelines, transmission corridors, and rivers) or multi-district administrative reporting is an inefficient and error-prone process. Creating individual layouts for dozens or hundreds of contiguous panels requires repetitive pan, zoom, scale, and text adjustments that devour production hours and introduce inconsistencies across pages.<\/div>\n<div>Both <a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/latest\/help\/layouts\/map-series.htm](https:\/\/pro.arcgis.com\/en\/pro-app\/latest\/help\/layouts\/map-series.htm\" target=\"_blank\" rel=\"noopener\"><b data-path-to-node=\"6\" data-index-in-node=\"5\">ArcGIS Pro<\/b><\/a> and <a href=\"https:\/\/qgis.org\" target=\"_blank\" rel=\"noopener\"><b data-path-to-node=\"6\" data-index-in-node=\"20\">QGIS<\/b><\/a> provide robust cartographic automation engines\u2014<b data-path-to-node=\"6\" data-index-in-node=\"72\">Map Series<\/b> (formerly Data Driven Pages) and <b data-path-to-node=\"6\" data-index-in-node=\"116\">QGIS Atlas<\/b>, respectively. By defining a spatial grid or vector boundary layer as an index, cartographers can construct a single master template that dynamically updates geometry, labels, titles, page numbers, scale bars, and dynamic tables across every page in a batch run. When implementing <b data-path-to-node=\"2,0,1,0\" data-index-in-node=\"19\">Automating PDF Map Books and Atlases in ArcGIS Pro and QGIS<\/b>, the first major industry approach relies on ArcGIS Pro\u2019s powerful Spatial Map Series engine.<\/div>\n<h2 data-path-to-node=\"8\"><span class=\"ez-toc-section\" id=\"Workflow_1_ArcGIS_Pro_Map_Series_Spatial_and_Page_Series\"><\/span>Workflow 1: ArcGIS Pro Map Series (Spatial and Page Series)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div>ArcGIS Pro streamlines atlas production using the <b data-path-to-node=\"9\" data-index-in-node=\"50\">Spatial Map Series<\/b> engine, which uses a polygon or polyline feature layer to drive scale, extent, and page dynamic text.<\/div>\n<div class=\"code-block ng-tns-c782744787-17 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahcKEwikoP3Up8WXAxUAAAAAHQAAAAAQeA\">\n<div class=\"formatted-code-block-internal-container ng-tns-c782744787-17\">\n<div class=\"animated-opacity ng-tns-c782744787-17\">\n<pre class=\"ng-tns-c782744787-17\"><code class=\"code-container formatted ng-tns-c782744787-17 no-decoration-radius\" role=\"text\" data-test-id=\"code-content\">+-----------------------------------------------------------------------+\r\n|                        ArcGIS Pro Workflow                            |\r\n|                                                                       |\r\n|  [ Index Vector Layer ] ---&gt; [ Map Series Setup ] ---&gt; [ Dynamic ]    |\r\n|   (Grid \/ Districts)          (Map Extent \/ Field)      (Text \/ Scale)|\r\n|                                                                       |\r\n|                                     |                                 |\r\n|                                     v                                 |\r\n|                         [ Batch Export to Single PDF ]                 |\r\n+-----------------------------------------------------------------------+\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<h3 data-path-to-node=\"11\"><span class=\"ez-toc-section\" id=\"Step_1_Prepare_the_Index_Coverage_Layer\"><\/span>Step 1: Prepare the Index \/ Coverage Layer<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ol start=\"1\" data-path-to-node=\"12\">\n<li>\n<div>Load your spatial data into an ArcGIS Pro project alongside an <b data-path-to-node=\"12,0,0\" data-index-in-node=\"63\">Index Layer<\/b> (e.g., an administrative boundary grid, fishnet, or buffer panels along a corridor).<\/div>\n<\/li>\n<li>\n<div>Ensure the index attribute table contains key identifying fields:<\/div>\n<ul data-path-to-node=\"12,1,1\">\n<li>\n<div><code data-path-to-node=\"12,1,1,0,0\" data-index-in-node=\"0\">PageName<\/code> (Text field for district name or panel identifier)<\/div>\n<\/li>\n<li>\n<div><code data-path-to-node=\"12,1,1,1,0\" data-index-in-node=\"0\">PageNum<\/code> (Integer or Text field for page sequencing)<\/div>\n<\/li>\n<li>\n<div><code data-path-to-node=\"12,1,1,2,0\" data-index-in-node=\"0\">Rotation<\/code> (Numeric field, optional, for angled corridor views)<\/div>\n<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h3 data-path-to-node=\"13\"><span class=\"ez-toc-section\" id=\"Step_2_Create_Layout_and_Configure_Map_Frame\"><\/span>Step 2: Create Layout and Configure Map Frame<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ol start=\"1\" data-path-to-node=\"14\">\n<li>\n<div>Go to <b data-path-to-node=\"14,0,0\" data-index-in-node=\"6\">Insert<\/b> &gt; <b data-path-to-node=\"14,0,0\" data-index-in-node=\"15\">New Layout<\/b> and select your desired page size (e.g., ANSI D or ISO A3).<\/div>\n<\/li>\n<li>\n<div>Click <b data-path-to-node=\"14,1,0\" data-index-in-node=\"6\">Insert<\/b> &gt; <b data-path-to-node=\"14,1,0\" data-index-in-node=\"15\">Map Frame<\/b> and select your main map scene.<\/div>\n<\/li>\n<li>\n<div>Size and position the map frame to leave designated margins for legend, title block, overview map, and page margin graphics.<\/div>\n<\/li>\n<\/ol>\n<h3 data-path-to-node=\"15\"><span class=\"ez-toc-section\" id=\"Step_3_Enable_and_Configure_Spatial_Map_Series\"><\/span>Step 3: Enable and Configure Spatial Map Series<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ol start=\"1\" data-path-to-node=\"16\">\n<li>\n<div>Right-click the <b data-path-to-node=\"16,0,0\" data-index-in-node=\"16\">Layout<\/b> node in the <b data-path-to-node=\"16,0,0\" data-index-in-node=\"35\">Contents<\/b> pane and select <b data-path-to-node=\"16,0,0\" data-index-in-node=\"60\">Properties<\/b>, or click <b data-path-to-node=\"16,0,0\" data-index-in-node=\"81\">Map Series<\/b> under the <b data-path-to-node=\"16,0,0\" data-index-in-node=\"102\">Layout<\/b> tab.<\/div>\n<\/li>\n<li>\n<div>Select <b data-path-to-node=\"16,1,0\" data-index-in-node=\"7\">Spatial<\/b> map series.<\/div>\n<\/li>\n<li>\n<div>Configure the following properties:<\/div>\n<ul data-path-to-node=\"16,2,1\">\n<li>\n<div><b data-path-to-node=\"16,2,1,0,0\" data-index-in-node=\"0\">Map Frame<\/b>: Select your primary map frame.<\/div>\n<\/li>\n<li>\n<div><b data-path-to-node=\"16,2,1,1,0\" data-index-in-node=\"0\">Layer<\/b>: Select your Index\/Grid layer.<\/div>\n<\/li>\n<li>\n<div><b data-path-to-node=\"16,2,1,2,0\" data-index-in-node=\"0\">Name Field<\/b>: Choose <code data-path-to-node=\"16,2,1,2,0\" data-index-in-node=\"19\">PageName<\/code>.<\/div>\n<\/li>\n<li>\n<div><b data-path-to-node=\"16,2,1,3,0\" data-index-in-node=\"0\">Sort Field<\/b>: Choose <code data-path-to-node=\"16,2,1,3,0\" data-index-in-node=\"19\">PageNum<\/code> (Ascending).<\/div>\n<\/li>\n<li>\n<div><b data-path-to-node=\"16,2,1,4,0\" data-index-in-node=\"0\">Map Extent<\/b>: Set to <i data-path-to-node=\"16,2,1,4,0\" data-index-in-node=\"19\">Best Fit Price<\/i> or <i data-path-to-node=\"16,2,1,4,0\" data-index-in-node=\"37\">Centroid<\/i> with an appropriate margin percentage (e.g., 10%).<\/div>\n<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h3 data-path-to-node=\"17\"><span class=\"ez-toc-section\" id=\"Step_4_Add_Dynamic_Text_and_Layout_Elements\"><\/span>Step 4: Add Dynamic Text and Layout Elements<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ol start=\"1\" data-path-to-node=\"18\">\n<li>\n<div>Insert dynamic elements by going to <b data-path-to-node=\"18,0,0\" data-index-in-node=\"36\">Insert<\/b> &gt; <b data-path-to-node=\"18,0,0\" data-index-in-node=\"45\">Dynamic Text<\/b>.<\/div>\n<\/li>\n<li>\n<div>Select <b data-path-to-node=\"18,1,0\" data-index-in-node=\"7\">Map Series<\/b> properties:<\/div>\n<ul data-path-to-node=\"18,1,1\">\n<li>\n<div>Page Name: <code data-path-to-node=\"18,1,1,0,0\" data-index-in-node=\"11\">&lt;dyn type=\"page\" property=\"name\"\/&gt;<\/code><\/div>\n<\/li>\n<li>\n<div>Page Number: <code data-path-to-node=\"18,1,1,1,0\" data-index-in-node=\"13\">Page &lt;dyn type=\"page\" property=\"number\"\/&gt; of &lt;dyn type=\"page\" property=\"count\"\/&gt;<\/code><\/div>\n<\/li>\n<li>\n<div>Attribute Field: <code data-path-to-node=\"18,1,1,2,0\" data-index-in-node=\"17\">&lt;dyn type=\"page\" property=\"attribute\" field=\"County_Name\"\/&gt;<\/code><\/div>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<div>Add dynamic scale bars and north arrows linked directly to the main map frame.<\/div>\n<\/li>\n<\/ol>\n<h3 data-path-to-node=\"19\"><span class=\"ez-toc-section\" id=\"Step_5_Batch_Export_Map_Series_to_PDF\"><\/span>Step 5: Batch Export Map Series to PDF<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ol start=\"1\" data-path-to-node=\"20\">\n<li>\n<div>Go to <b data-path-to-node=\"20,0,0\" data-index-in-node=\"6\">Share<\/b> &gt; <b data-path-to-node=\"20,0,0\" data-index-in-node=\"14\">Export Layout<\/b>.<\/div>\n<\/li>\n<li>\n<div>Set <b data-path-to-node=\"20,1,0\" data-index-in-node=\"4\">File Type<\/b> to <b data-path-to-node=\"20,1,0\" data-index-in-node=\"17\">PDF<\/b>.<\/div>\n<\/li>\n<li>\n<div>Under <b data-path-to-node=\"20,2,0\" data-index-in-node=\"6\">Map Series Options<\/b>:<\/div>\n<ul data-path-to-node=\"20,2,1\">\n<li>\n<div>Choose <b data-path-to-node=\"20,2,1,0,0\" data-index-in-node=\"7\">Export<\/b>: <i data-path-to-node=\"20,2,1,0,0\" data-index-in-node=\"15\">All<\/i> (or specify a page range, e.g., <code data-path-to-node=\"20,2,1,0,0\" data-index-in-node=\"51\">1-5, 12<\/code>).<\/div>\n<\/li>\n<li>\n<div>Select <b data-path-to-node=\"20,2,1,1,0\" data-index-in-node=\"7\">File Options<\/b>: <i data-path-to-node=\"20,2,1,1,0\" data-index-in-node=\"21\">Export as a single PDF file<\/i>.<\/div>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<div>Click <b data-path-to-node=\"20,3,0\" data-index-in-node=\"6\">Export<\/b>.<\/div>\n<\/li>\n<\/ol>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-1304\" src=\"https:\/\/helpwithmygisassignment.com\/blog\/wp-content\/uploads\/2026\/10\/Gemini_Generated_Image_21bhtv21bhtv21bh-1024x559.jpg\" alt=\"Automating PDF Map Books and Atlases in ArcGIS Pro and QGIS digital software viewer preview\" width=\"1024\" height=\"559\" srcset=\"https:\/\/helpwithmygisassignment.com\/blog\/wp-content\/uploads\/2026\/10\/Gemini_Generated_Image_21bhtv21bhtv21bh-1024x559.jpg 1024w, https:\/\/helpwithmygisassignment.com\/blog\/wp-content\/uploads\/2026\/10\/Gemini_Generated_Image_21bhtv21bhtv21bh-300x164.jpg 300w, https:\/\/helpwithmygisassignment.com\/blog\/wp-content\/uploads\/2026\/10\/Gemini_Generated_Image_21bhtv21bhtv21bh-768x419.jpg 768w, https:\/\/helpwithmygisassignment.com\/blog\/wp-content\/uploads\/2026\/10\/Gemini_Generated_Image_21bhtv21bhtv21bh.jpg 1408w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h2 data-path-to-node=\"22\"><span class=\"ez-toc-section\" id=\"Workflow_2_QGIS_Atlas_Generation\"><\/span>Workflow 2: QGIS Atlas Generation<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div>QGIS Atlas provides a powerful framework for driven printing layouts, leveraging QGIS expressions and spatial relationships to automate page updates. Alternatively, when <b data-path-to-node=\"2,1,1,0\" data-index-in-node=\"21\">Automating PDF Map Books and Atlases in ArcGIS Pro and QGIS<\/b> via open-source tools, QGIS Atlas provides a robust framework for driven printing layouts.<\/div>\n<div class=\"code-block ng-tns-c782744787-18 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahcKEwikoP3Up8WXAxUAAAAAHQAAAAAQeQ\">\n<div class=\"formatted-code-block-internal-container ng-tns-c782744787-18\">\n<div class=\"animated-opacity ng-tns-c782744787-18\">\n<pre class=\"ng-tns-c782744787-18\"><code class=\"code-container formatted ng-tns-c782744787-18 no-decoration-radius\" role=\"text\" data-test-id=\"code-content\">+-----------------------------------------------------------------------+\r\n|                          QGIS Atlas Workflow                          |\r\n|                                                                       |\r\n|  [ Coverage Layer ] ---&gt; [ Atlas Settings Panel ] ---&gt; [ Expressions ]|\r\n|   (Polygons \/ Line)       (Page Name \/ Sort)        (@atlas_pagename) |\r\n|                                                                       |\r\n|                                     |                                 |\r\n|                                     v                                 |\r\n|                       [ Export Atlas to PDF \/ Batch ]                 |\r\n+-----------------------------------------------------------------------+\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<h3 data-path-to-node=\"25\"><span class=\"ez-toc-section\" id=\"Step_1_Set_Up_Coverage_Layer\"><\/span>Step 1: Set Up Coverage Layer<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ol start=\"1\" data-path-to-node=\"26\">\n<li>\n<div>Load your spatial datasets and a polygon\/line <b data-path-to-node=\"26,0,0\" data-index-in-node=\"46\">Coverage Layer<\/b> into your QGIS workspace.<\/div>\n<\/li>\n<li>\n<div>Ensure attribute columns are populated for naming and sorting (e.g., <code data-path-to-node=\"26,1,0\" data-index-in-node=\"69\">sheet_name<\/code>, <code data-path-to-node=\"26,1,0\" data-index-in-node=\"81\">sheet_id<\/code>).<\/div>\n<\/li>\n<\/ol>\n<h3 data-path-to-node=\"27\"><span class=\"ez-toc-section\" id=\"Step_2_Build_Print_Layout\"><\/span>Step 2: Build Print Layout<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ol start=\"1\" data-path-to-node=\"28\">\n<li>\n<div>Open <b data-path-to-node=\"28,0,0\" data-index-in-node=\"5\">Project<\/b> &gt; <b data-path-to-node=\"28,0,0\" data-index-in-node=\"15\">New Print Layout<\/b>, assign a title, and set up your page dimensions.<\/div>\n<\/li>\n<li>\n<div>Add a Map item using <b data-path-to-node=\"28,1,0\" data-index-in-node=\"21\">Add Map<\/b> (<code data-path-to-node=\"28,1,0\" data-index-in-node=\"30\">C<\/code>).<\/div>\n<\/li>\n<li>\n<div>Frame the map to fit your cartographic layout margins.<\/div>\n<\/li>\n<\/ol>\n<h3 data-path-to-node=\"29\"><span class=\"ez-toc-section\" id=\"Step_3_Enable_Atlas_Control\"><\/span>Step 3: Enable Atlas Control<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ol start=\"1\" data-path-to-node=\"30\">\n<li>\n<div>In the Print Layout workspace, open the <b data-path-to-node=\"30,0,0\" data-index-in-node=\"40\">Atlas<\/b> tab on the right panel.<\/div>\n<\/li>\n<li>\n<div>Check <b data-path-to-node=\"30,1,0\" data-index-in-node=\"6\">Generate an atlas<\/b>.<\/div>\n<\/li>\n<li>\n<div>Set configuration fields:<\/div>\n<ul data-path-to-node=\"30,2,1\">\n<li>\n<div><b data-path-to-node=\"30,2,1,0,0\" data-index-in-node=\"0\">Coverage layer<\/b>: Select your Index polygon layer.<\/div>\n<\/li>\n<li>\n<div><b data-path-to-node=\"30,2,1,1,0\" data-index-in-node=\"0\">Page name<\/b>: Select <code data-path-to-node=\"30,2,1,1,0\" data-index-in-node=\"18\">sheet_name<\/code> or use an expression like <code data-path-to-node=\"30,2,1,1,0\" data-index-in-node=\"55\">concat('Sheet ', \"sheet_id\")<\/code>.<\/div>\n<\/li>\n<li>\n<div><b data-path-to-node=\"30,2,1,2,0\" data-index-in-node=\"0\">Sort by<\/b>: Select <code data-path-to-node=\"30,2,1,2,0\" data-index-in-node=\"16\">sheet_id<\/code> (Ascending).<\/div>\n<\/li>\n<li>\n<div>Check <b data-path-to-node=\"30,2,1,3,0\" data-index-in-node=\"6\">Filter with<\/b> if you want to exclude specific feature indices.<\/div>\n<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h3 data-path-to-node=\"31\"><span class=\"ez-toc-section\" id=\"Step_4_Link_Map_Item_to_Atlas_and_Insert_Substitution_Variables\"><\/span>Step 4: Link Map Item to Atlas and Insert Substitution Variables<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ol start=\"1\" data-path-to-node=\"32\">\n<li>\n<div>Select the map item, go to the <b data-path-to-node=\"32,0,0\" data-index-in-node=\"31\">Item Properties<\/b> tab.<\/div>\n<\/li>\n<li>\n<div>Check <b data-path-to-node=\"32,1,0\" data-index-in-node=\"6\">Controlled by atlas<\/b>.<\/div>\n<\/li>\n<li>\n<div>Choose extent control mode:<\/div>\n<ul data-path-to-node=\"32,2,1\">\n<li>\n<div><i data-path-to-node=\"32,2,1,0,0\" data-index-in-node=\"0\">Margin around feature<\/i>: e.g., <code data-path-to-node=\"32,2,1,0,0\" data-index-in-node=\"29\">10%<\/code> padding.<\/div>\n<\/li>\n<li>\n<div><i data-path-to-node=\"32,2,1,1,0\" data-index-in-node=\"0\">Fixed scale<\/i>: Locks the scale across all sheets.<\/div>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<div>Add dynamic labels using <b data-path-to-node=\"32,3,0\" data-index-in-node=\"25\">Add Label<\/b> and QGIS expression string formatting:<\/div>\n<ul data-path-to-node=\"32,3,1\">\n<li>\n<div>Page Title: <code data-path-to-node=\"32,3,1,0,0\" data-index-in-node=\"12\">[% @atlas_pagename %]<\/code><\/div>\n<\/li>\n<li>\n<div>Dynamic Page Numbering: <code data-path-to-node=\"32,3,1,1,0\" data-index-in-node=\"24\">[% 'Page ' || @atlas_featurenumber || ' of ' || @atlas_totalfeatures %]<\/code><\/div>\n<\/li>\n<li>\n<div>Dynamic Attribute Extraction: <code data-path-to-node=\"32,3,1,2,0\" data-index-in-node=\"30\">[% attribute(@atlas_feature, 'District_Name') %]<\/code><\/div>\n<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h3 data-path-to-node=\"33\"><span class=\"ez-toc-section\" id=\"Step_5_Batch_Export_Atlas_to_PDF\"><\/span>Step 5: Batch Export Atlas to PDF<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ol start=\"1\" data-path-to-node=\"34\">\n<li>\n<div>Click <b data-path-to-node=\"34,0,0\" data-index-in-node=\"6\">Atlas<\/b> in the top toolbar &gt; <b data-path-to-node=\"34,0,0\" data-index-in-node=\"33\">Preview Atlas<\/b> to inspect rendered panels.<\/div>\n<\/li>\n<li>\n<div>Click <b data-path-to-node=\"34,1,0\" data-index-in-node=\"6\">Atlas<\/b> &gt; <b data-path-to-node=\"34,1,0\" data-index-in-node=\"14\">Export Atlas as PDF&#8230;<\/b><\/div>\n<\/li>\n<li>\n<div>Select output file destination.<\/div>\n<\/li>\n<li>\n<div>In the PDF export options dialog, check <b data-path-to-node=\"34,3,0\" data-index-in-node=\"40\">Export as a single document if possible<\/b>.<\/div>\n<\/li>\n<li>\n<div>Click <b data-path-to-node=\"34,4,0\" data-index-in-node=\"6\">Save<\/b>.<\/div>\n<\/li>\n<\/ol>\n<h2 data-path-to-node=\"36\"><span class=\"ez-toc-section\" id=\"Side-by-Side_Workflow_Comparison\"><\/span>Side-by-Side Workflow Comparison<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<table data-path-to-node=\"37\">\n<thead>\n<tr>\n<td><strong>Feature \/ Step<\/strong><\/td>\n<td><strong>ArcGIS Pro Map Series<\/strong><\/td>\n<td><strong>QGIS Atlas<\/strong><\/td>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><span data-path-to-node=\"37,1,0,0\"><b data-path-to-node=\"37,1,0,0\" data-index-in-node=\"0\">Primary Engine<\/b><\/span><\/td>\n<td><span data-path-to-node=\"37,1,1,0\">Spatial Map Series<\/span><\/td>\n<td><span data-path-to-node=\"37,1,2,0\">Atlas Generation<\/span><\/td>\n<\/tr>\n<tr>\n<td><span data-path-to-node=\"37,2,0,0\"><b data-path-to-node=\"37,2,0,0\" data-index-in-node=\"0\">Index Data Source<\/b><\/span><\/td>\n<td><span data-path-to-node=\"37,2,1,0\">Index Layer (Polygon\/Polyline)<\/span><\/td>\n<td><span data-path-to-node=\"37,2,2,0\">Coverage Layer (Polygon\/Line\/Point)<\/span><\/td>\n<\/tr>\n<tr>\n<td><span data-path-to-node=\"37,3,0,0\"><b data-path-to-node=\"37,3,0,0\" data-index-in-node=\"0\">Variable Naming<\/b><\/span><\/td>\n<td><span data-path-to-node=\"37,3,1,0\"><code data-path-to-node=\"37,3,1,0\" data-index-in-node=\"0\">&lt;dyn type=\"page\" property=\"name\"\/&gt;<\/code><\/span><\/td>\n<td><span data-path-to-node=\"37,3,2,0\"><code data-path-to-node=\"37,3,2,0\" data-index-in-node=\"0\">[% @atlas_pagename %]<\/code><\/span><\/td>\n<\/tr>\n<tr>\n<td><span data-path-to-node=\"37,4,0,0\"><b data-path-to-node=\"37,4,0,0\" data-index-in-node=\"0\">Total Page Count Variable<\/b><\/span><\/td>\n<td><span data-path-to-node=\"37,4,1,0\"><code data-path-to-node=\"37,4,1,0\" data-index-in-node=\"0\">&lt;dyn type=\"page\" property=\"count\"\/&gt;<\/code><\/span><\/td>\n<td><span data-path-to-node=\"37,4,2,0\"><code data-path-to-node=\"37,4,2,0\" data-index-in-node=\"0\">[% @atlas_totalfeatures %]<\/code><\/span><\/td>\n<\/tr>\n<tr>\n<td><span data-path-to-node=\"37,5,0,0\"><b data-path-to-node=\"37,5,0,0\" data-index-in-node=\"0\">Rotation Field Support<\/b><\/span><\/td>\n<td><span data-path-to-node=\"37,5,1,0\">Direct Field Assignment in Map Frame<\/span><\/td>\n<td><span data-path-to-node=\"37,5,2,0\">Data-Defined Override via <code data-path-to-node=\"37,5,2,0\" data-index-in-node=\"26\">rotation<\/code> expression<\/span><\/td>\n<\/tr>\n<tr>\n<td><span data-path-to-node=\"37,6,0,0\"><b data-path-to-node=\"37,6,0,0\" data-index-in-node=\"0\">Single\/Multi-file Output<\/b><\/span><\/td>\n<td><span data-path-to-node=\"37,6,1,0\">Configurable via Share\/Export pane<\/span><\/td>\n<td><span data-path-to-node=\"37,6,2,0\">Configurable in PDF Export Dialog<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2 data-path-to-node=\"39\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-1305\" src=\"https:\/\/helpwithmygisassignment.com\/blog\/wp-content\/uploads\/2026\/10\/Gemini_Generated_Image_ooy1ajooy1ajooy1-1024x559.jpg\" alt=\"Automating PDF Map Books and Atlases in ArcGIS Pro and QGIS workflow comparison diagram\" width=\"1024\" height=\"559\" srcset=\"https:\/\/helpwithmygisassignment.com\/blog\/wp-content\/uploads\/2026\/10\/Gemini_Generated_Image_ooy1ajooy1ajooy1-1024x559.jpg 1024w, https:\/\/helpwithmygisassignment.com\/blog\/wp-content\/uploads\/2026\/10\/Gemini_Generated_Image_ooy1ajooy1ajooy1-300x164.jpg 300w, https:\/\/helpwithmygisassignment.com\/blog\/wp-content\/uploads\/2026\/10\/Gemini_Generated_Image_ooy1ajooy1ajooy1-768x419.jpg 768w, https:\/\/helpwithmygisassignment.com\/blog\/wp-content\/uploads\/2026\/10\/Gemini_Generated_Image_ooy1ajooy1ajooy1.jpg 1408w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/h2>\n<h2 data-path-to-node=\"39\"><span class=\"ez-toc-section\" id=\"Advanced_Tips\"><\/span>Advanced Tips<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3 data-path-to-node=\"40\"><span class=\"ez-toc-section\" id=\"1_Dynamic_Map_Rotation_Per_Page\"><\/span>1. Dynamic Map Rotation Per Page<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div>For linear infrastructure (e.g., pipeline or highway corridors), maintaining an upright presentation requires rotating the map frame relative to the feature&#8217;s bearing:<\/div>\n<ul data-path-to-node=\"42\">\n<li>\n<div><b data-path-to-node=\"42,0,0\" data-index-in-node=\"0\">ArcGIS Pro<\/b>: Calculate an angle field in your index layer (e.g., <code data-path-to-node=\"42,0,0\" data-index-in-node=\"64\">Angle<\/code>). In Map Frame Properties, go to <b data-path-to-node=\"42,0,0\" data-index-in-node=\"103\">Display Options<\/b> &gt; <b data-path-to-node=\"42,0,0\" data-index-in-node=\"121\">Rotation<\/b> and link it to the <code data-path-to-node=\"42,0,0\" data-index-in-node=\"149\">Angle<\/code> field of the Map Series layer.<\/div>\n<\/li>\n<li>\n<div><b data-path-to-node=\"42,1,0\" data-index-in-node=\"0\">QGIS<\/b>: Calculate line\/grid orientation into an attribute (e.g., <code data-path-to-node=\"42,1,0\" data-index-in-node=\"63\">bearing<\/code>). Under Map <b data-path-to-node=\"42,1,0\" data-index-in-node=\"83\">Item Properties<\/b> &gt; <b data-path-to-node=\"42,1,0\" data-index-in-node=\"101\">Main Properties<\/b> &gt; <b data-path-to-node=\"42,1,0\" data-index-in-node=\"119\">Map rotation<\/b>, click the <b data-path-to-node=\"42,1,0\" data-index-in-node=\"143\">Data defined override<\/b> icon and select field <code data-path-to-node=\"42,1,0\" data-index-in-node=\"187\">bearing<\/code> or apply the expression <code data-path-to-node=\"42,1,0\" data-index-in-node=\"219\">main_angle(@atlas_feature)<\/code>.<\/div>\n<\/li>\n<\/ul>\n<h3 data-path-to-node=\"43\"><span class=\"ez-toc-section\" id=\"2_Multi-Page_Table_Integration\"><\/span>2. Multi-Page Table Integration<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div>When attribute lists (e.g., land parcel listings, asset inventories) exceed single-page limits:<\/div>\n<ul data-path-to-node=\"45\">\n<li>\n<div><b data-path-to-node=\"45,0,0\" data-index-in-node=\"0\">ArcGIS Pro<\/b>: Insert a <b data-path-to-node=\"45,0,0\" data-index-in-node=\"21\">Table Frame<\/b> linked to the map frame&#8217;s dynamic features. Set query filtering to <i data-path-to-node=\"45,0,0\" data-index-in-node=\"100\">Map Series Feature<\/i> so only assets visible within the current sheet index appear.<\/div>\n<\/li>\n<li>\n<div><b data-path-to-node=\"45,1,0\" data-index-in-node=\"0\">QGIS<\/b>: Insert an <b data-path-to-node=\"45,1,0\" data-index-in-node=\"16\">Attribute Table<\/b> item. Under <b data-path-to-node=\"45,1,0\" data-index-in-node=\"44\">Attributes<\/b>, check <b data-path-to-node=\"45,1,0\" data-index-in-node=\"62\">Show only features intersecting atlas feature<\/b>. Adjust framing and automatic split options across pages if necessary.<\/div>\n<\/li>\n<\/ul>\n<h3 data-path-to-node=\"46\"><span class=\"ez-toc-section\" id=\"3_Export_Compression_and_File_Size_Optimization\"><\/span>3. Export Compression and File Size Optimization<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div>Multi-page PDF map books can quickly balloon in file size if raster rendering or vector DPI is unoptimized:<\/div>\n<ul data-path-to-node=\"48\">\n<li>\n<div><b data-path-to-node=\"48,0,0\" data-index-in-node=\"0\">DPI Setting<\/b>: Set output resolution to <b data-path-to-node=\"48,0,0\" data-index-in-node=\"38\">300 DPI<\/b> for high-quality print, or <b data-path-to-node=\"48,0,0\" data-index-in-node=\"73\">150\u2013200 DPI<\/b> for digital review distribution.<\/div>\n<\/li>\n<li>\n<div><b data-path-to-node=\"48,1,0\" data-index-in-node=\"0\">Vector Graphics vs. Rasterization<\/b>: Keep vector layers as <a href=\"https:\/\/helpwithmygisassignment.com\/blog\/export-vector-pdf-svg-gis\/\">vector objects<\/a> where possible. Enable rasterization selectively for heavy hillshades or imagery base maps to avoid excessive vector node exports.<\/div>\n<\/li>\n<li>\n<div><b data-path-to-node=\"48,2,0\" data-index-in-node=\"0\">PDF Compression<\/b>:<\/div>\n<ul data-path-to-node=\"48,2,1\">\n<li>\n<div>In <i data-path-to-node=\"48,2,1,0,0\" data-index-in-node=\"3\">ArcGIS Pro<\/i>: Enable <b data-path-to-node=\"48,2,1,0,0\" data-index-in-node=\"22\">Compress Vector Graphics<\/b> and set image compression to <i data-path-to-node=\"48,2,1,0,0\" data-index-in-node=\"76\">Adaptive<\/i> or <i data-path-to-node=\"48,2,1,0,0\" data-index-in-node=\"88\">JPEG<\/i> with 80% quality.<\/div>\n<\/li>\n<li>\n<div>In <i data-path-to-node=\"48,2,1,1,0\" data-index-in-node=\"3\">QGIS<\/i>: Enable <b data-path-to-node=\"48,2,1,1,0\" data-index-in-node=\"16\">Simplify geometries to reduce output file size<\/b> and choose <i data-path-to-node=\"48,2,1,1,0\" data-index-in-node=\"74\">JPEG compression<\/i> for raster layers.<\/div>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2 data-path-to-node=\"50\"><span class=\"ez-toc-section\" id=\"Summary\"><\/span>Summary<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div>Automating map book and atlas generation using ArcGIS Pro Map Series and QGIS Atlas eliminates the manual overhead associated with multi-panel spatial reporting. By linking dynamic layouts to index layers, cartographers achieve consistent formatting, precise dynamic text updating, and seamless batch exports. Mastering advanced features like map frame rotation, dynamic feature filtering, and export compression ensures professional-grade cartographic deliverables for linear assets and district reports. Mastering the techniques of <b data-path-to-node=\"2,2,1,0\" data-index-in-node=\"29\">Automating PDF Map Books and Atlases in ArcGIS Pro\u00a0 Ultimately, mastering Automating PDF Map Books and Atlases in ArcGIS Pro and QGIS ensures professional-grade cartographic deliverables for linear assets and district reports.\u00a0QGIS<\/b> eliminates the manual overhead associated with multi-panel spatial reporting.<\/div>\n<\/div>\n<div><\/div>\n<div>\n<h3><span class=\"ez-toc-section\" id=\"_Frequently_Asked_Questions\"><\/span>\u00a0Frequently Asked Questions<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>What is the main difference between ArcGIS Pro Map Series and QGIS Atlas?<\/strong><br \/>\nWhen **Automating PDF Map Books and Atlases in ArcGIS Pro and QGIS**, ArcGIS Pro relies on its built-in Spatial Map Series engine linked to layout elements, whereas QGIS Atlas leverages data-defined overrides and QGIS expression strings to drive panel creation.<\/p>\n<p><strong>Can I rotate map frames automatically for linear corridor mapping?<\/strong><br \/>\nYes. When **Automating PDF Map Books and Atlases in ArcGIS Pro and QGIS**, both platforms support rotation fields. You can link a bearing or angle attribute directly to the map frame properties in ArcGIS Pro or use data-defined expression rotation in QGIS.<\/p>\n<p><strong>How do I export all map sheets into a single continuous file?<\/strong><br \/>\nDuring the final export stage of **Automating PDF Map Books and Atlases in ArcGIS Pro and QGIS**, simply select the export option for *Export as a single PDF file* in ArcGIS Pro or check *Export as a single document if possible* in the QGIS Atlas PDF export dialog.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Automating PDF Map Books and Atlases in ArcGIS Pro and QGIS Introduction to Automating PDF Map Books and Atlases in ArcGIS Pro and QGIS Manually producing multi-page map series for extensive linear infrastructure (such as highways, pipelines, transmission corridors, and rivers) or multi-district administrative reporting is an inefficient and error-prone process. Creating individual layouts for &#8230; <a title=\"Automating PDF Map Books and Atlases in ArcGIS Pro and QGIS\" class=\"read-more\" href=\"https:\/\/helpwithmygisassignment.com\/blog\/automating-pdf-map-books-and-atlases-in-arcgis-pro-and-qgis\/\" aria-label=\"Read more about Automating PDF Map Books and Atlases in ArcGIS Pro and QGIS\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":1305,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,4],"tags":[],"class_list":["post-1254","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","category-gis-articles"],"_links":{"self":[{"href":"https:\/\/helpwithmygisassignment.com\/blog\/wp-json\/wp\/v2\/posts\/1254","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/helpwithmygisassignment.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/helpwithmygisassignment.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/helpwithmygisassignment.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/helpwithmygisassignment.com\/blog\/wp-json\/wp\/v2\/comments?post=1254"}],"version-history":[{"count":3,"href":"https:\/\/helpwithmygisassignment.com\/blog\/wp-json\/wp\/v2\/posts\/1254\/revisions"}],"predecessor-version":[{"id":1307,"href":"https:\/\/helpwithmygisassignment.com\/blog\/wp-json\/wp\/v2\/posts\/1254\/revisions\/1307"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/helpwithmygisassignment.com\/blog\/wp-json\/wp\/v2\/media\/1305"}],"wp:attachment":[{"href":"https:\/\/helpwithmygisassignment.com\/blog\/wp-json\/wp\/v2\/media?parent=1254"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helpwithmygisassignment.com\/blog\/wp-json\/wp\/v2\/categories?post=1254"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helpwithmygisassignment.com\/blog\/wp-json\/wp\/v2\/tags?post=1254"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}