I am using Selenium to load a pdf using the browser's pdf viewer (I've tested both Firefox and Chrome). I would like to save the pdf source as bytes to memory in python so I can open the pdf in pypdf without downloading the pdf. This post is a good example of what I am trying to do, but, unlike that post, I cannot use requests because the pdf website returns Response [403] when using requests.get(). I have seen a few posts like this that describe how to download a pdf using Selenium. These do not apply to my issue because I would like to get the pdf bytes without downloading to my computer.
When I get page_source from a Firefox driver, I can see elements of the pdf rendered as html. Is it possible to get the original pdf bytes before rendering in html?
When I get page_source from a Chrome driver, all I see is basic information about the embed element without further information about the pdf source.
Here is my code followed by the page sources from each driver:
from selenium import webdriver
import io
pdf_link = 'https://pubs.aeaweb.org/doi/pdfplus/10.1257/mac.20200320'
driver = webdriver.Chrome()
# driver = webdriver.Firefox()
driver.get(pdf_link)
# I would like to be able to do this
pdf_as_bytes = io.BytesIO(dr)
Chrome Source
<html><head></head><body style="height: 100%; width: 100%; overflow: hidden; margin:0px; background-color: rgb(82, 86, 89);"><embed name="5B2A537BC9091ADCD32648224201493A" style="position:absolute; left: 0; top: 0;" width="100%" height="100%" src="about:blank" type="application/pdf" internalid="5B2A537BC9091ADCD32648224201493A"></body></html>
Firefox Source (truncated)
<html dir="ltr" mozdisallowselectionprint="" style="--viewer-container-height: 649px;"><head>\n <meta charset="utf-8">\n <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">\n <title>Estimating the Optimal Inflation Target from Trends in Relative Prices - mac.20200320.pdf</title>\n\n<!-- This snippet is used in the Firefox extension (included from viewer.html) -->\n<script src="resource://pdf.js/build/pdf.js"></script>\n\n <link rel="stylesheet" href="resource://pdf.js/web/viewer.css">\n\n <script src="resource://pdf.js/web/viewer.js"></script>\n </head>\n\n <body tabindex="1">\n <div id="outerContainer" class="sidebarMoving sidebarOpen">\n\n <div id="sidebarContainer">\n <div id="toolbarSidebar">\n <div id="toolbarSidebarLeft">\n <div id="sidebarViewButtons" class="splitToolbarButton toggled" role="radiogroup">\n <button id="viewThumbnail" class="toolbarButton" title="Show Thumbnails" tabindex="2" data-l10n-id="thumbs" role="radio" aria-checked="false" aria-controls="thumbnailView">\n <span data-l10n-id="thumbs_label">Thumbnails</span>\n </button>\n <button id="viewOutline" class="toolbarButton toggled" title="Show Document Outline (double-click to expand/collapse all items)" tabindex="3" data-l10n-id="document_outline" role="radio" aria-checked="true" aria-controls="outlineView">\n <span data-l10n-id="document_outline_label">Document Outline</span>\n </button>\n <button id="viewAttachments" class="toolbarButton" title="Show Attachments" tabindex="4" data-l10n-id="attachments" role="radio" aria-checked="false" aria-controls="attachmentsView" disabled="">\n <span data-l10n-id="attachments_label">Attachments</span>\n </button>\n <button id="viewLayers" class="toolbarButton" title="Show Layers (double-click to reset all layers to the default state)" tabindex="5" data-l10n-id="layers" role="radio" aria-checked="false" aria-controls="layersView" disabled="">\n <span data-l10n-id="layers_label">Layers</span>\n </button>\n </div>\n </div>\n\n <div id="toolbarSidebarRight">\n <div id="outlineOptionsContainer" class="">\n <div class="verticalToolbarSeparator"></div>\n\n <button id="currentOutlineItem" class="toolbarButton" title="Find Current Outline Item" tabindex="6" data-l10n-id="current_outline_item">\n <span data-l10n-id="current_outline_item_label">Current Outline Item</span>\n </button>\n </div>\n </div>\n </div>\n <div id="sidebarContent">\n <div id="thumbnailView" class="hidden"><a href="#page=1" title="Page 1"><div class="thumbnail selected" data-page-number="1" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=2" title="Page 2"><div class="thumbnail" data-page-number="2" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=3" title="Page 3"><div class="thumbnail" data-page-number="3" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=4" title="Page 4"><div class="thumbnail" data-page-number="4" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=5" title="Page 5"><div class="thumbnail" data-page-number="5" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=6" title="Page 6"><div class="thumbnail" data-page-number="6" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=7" title="Page 7"><div class="thumbnail" data-page-number="7" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=8" title="Page 8"><div class="thumbnail" data-page-number="8" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=9" title="Page 9"><div class="thumbnail" data-page-number="9" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=10" title="Page 10"><div class="thumbnail" data-page-number="10" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=11" title="Page 11"><div class="thumbnail" data-page-number="11" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=12" title="Page 12"><div class="thumbnail" data-page-number="12" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=13" title="Page 13"><div class="thumbnail" data-page-number="13" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=14" title="Page 14"><div class="thumbnail" data-page-number="14" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=15" title="Page 15"><div class="thumbnail" data-page-number="15" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=16" title="Page 16"><div class="thumbnail" data-page-number="16" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=17" title="Page 17"><div class="thumbnail" data-page-number="17" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=18" title="Page 18"><div class="thumbnail" data-page-number="18" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=19" title="Page 19"><div class="thumbnail" data-page-number="19" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=20" title="Page 20"><div class="thumbnail" data-page-number="20" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=21" title="Page 21"><div class="thumbnail" data-page-number="21" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=22" title="Page 22"><div class="thumbnail" data-page-number="22" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=23" title="Page 23"><div class="thumbnail" data-page-number="23" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=24" title="Page 24"><div class="thumbnail" data-page-number="24" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=25" title="Page 25"><div class="thumbnail" data-page-number="25" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=26" title="Page 26"><div class="thumbnail" data-page-number="26" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=27" title="Page 27"><div class="thumbnail" data-page-number="27" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=28" title="Page 28"><div class="thumbnail" data-page-number="28" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=29" title="Page 29"><div class="thumbnail" data-page-number="29" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=30" title="Page 30"><div class="thumbnail" data-page-number="30" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=31" title="Page 31"><div class="thumbnail" data-page-number="31" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=32" title="Page 32"><div class="thumbnail" data-page-number="32" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=33" title="Page 33"><div class="thumbnail" data-page-number="33" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=34" title="Page 34"><div class="thumbnail" data-page-number="34" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=35" title="Page 35"><div class="thumbnail" data-page-number="35" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=36" title="Page 36"><div class="thumbnail" data-page-number="36" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=37" title="Page 37"><div class="thumbnail" data-page-number="37" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=38" title="Page 38"><div class="thumbnail" data-page-number="38" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=39" title="Page 39"><div class="thumbnail" data-page-number="39" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=40" title="Page 40"><div class="thumbnail" data-page-number="40" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=41" title="Page 41"><div class="thumbnail" data-page-number="41" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a><a href="#page=42" title="Page 42"><div class="thumbnail" data-page-number="42" style="--thumbnail-width: 98px; --thumbnail-height: 141px;"><div class="thumbnailImage"></div></div></a></div>\n <div id="outlineView" class="treeWithDeepNesting"><div class="treeItem"><div class="treeItemToggler"></div><a href="#AEJMacro-2020-0320.indd%3A.24448%3A66">Estimating the Optimal Inflation Target from Trends in Relative Prices</a><div class="treeItems"><div class="treeItem"><a href="#AEJMacro-2020-0320.indd%3A.24454%3A67">I.\u2002Related Literature</a></div><div class="treeItem"><div class="treeItemToggler"></div><a href="#AEJMacro-2020-0320.indd%3A.24458%3A68">II.\u2002UK Micro Price Data: New Evidence</a><div class="treeItems"><div class="treeItem"><a href="#AEJMacro-2020-0320.indd%3A.24462%3A69">A. Data Description and Product Definition</a></div><div class="treeItem"><a href="#AEJMacro-2020-0320.indd%3A.24466%3A70">B. Relative Price Trends over the Product Life</a></div><div class="treeItem"><a href="#AEJMacro-2020-0320.indd%3A.24470%3A71">C. Additional Dimensions of Heterogeneity</a></div></div></div><div class="treeItem"><div class="treeItemToggler"></div><a href="#AEJMacro-2020-0320.indd%3A.24474%3A72">III.\u2002Sticky-Price Model with a Product Life Cycle</a><div class="treeItems"><div class="treeItem"><a href="#AEJMacro-2020-0320.indd%3A.24478%3A73">A. Demand Side and Production Side</a></div><div class="treeItem"><a href="#AEJMacro-2020-0320.indd%3A.24482%3A74">B. Optimal Price Setting</a></div></div></div><div class="treeItem"><a href="#AEJMacro-2020-0320.indd%3A.24486%3A75">IV.\u2002Characterizing the Steady-State Outcome</a></div><div class="treeItem"><div class="treeItemToggler"></div><a href="#AEJMacro-2020-0320.indd%3A.24490%3A76">V.\u2002Optimal Inflation Target with Calvo Frictions</a><div class="treeItems"><div class="treeItem"><a href="#AEJMacro-2020-0320.indd%3A.24494%3A77">A. Nonlinear \xadClosed-Form Result</a></div><div class="treeItem"><a href="#AEJMacro-2020-0320.indd%3A.24498%3A78">B. Operational Approximate Result</a></div></div></div><div class="treeItem"><a href="#AEJMacro-2020-0320.indd%3A.24502%3A79">VI.\u2002Optimal Inflation Target with Menu Costs</a></div><div class="treeItem"><a href="#AEJMacro-2020-0320.indd%3A.24506%3A80">VII.\u2002Estimating the Optimal Inflation Target</a></div><div class="treeItem"><a href="#AEJMacro-2020-0320.indd%3A.24510%3A81">VIII.\u2002Imperfect Quality Adjustment</a></div><div class="treeItem"><a href="#AEJMacro-2020-0320.indd%3A.24514%3A82">IX.\u2002Optimal Inflation Target for the United Kingdom</a></div><div class="treeItem"><div class="treeItemToggler"></div><a href="#AEJMacro-2020-0320.indd%3A.24518%3A83">X.\u2002Optimal UK Inflation–Robustness Checks</a><div class="treeItems"><div class="treeItem"><a href="#AEJMacro-2020-0320.indd%3A.24522%3A84">A. Role of Weights and Reset Prices</a></div><div class="treeItem"><a href="#AEJMacro-2020-0320.indd%3A.24527%3A85">B. Nonlinear Estimate under Calvo Frictions</a></div></div></div><div class="treeItem"><a href="#AEJMacro-2020-0320.indd%3A.24531%3A86">XI.\u2002Conclusions</a></div><div class="treeItem"><a href="#AEJMacro-2020-0320.indd%3A.24535%3A87">REFERENCES</a></div></div></div></div>\n <div id="attachmentsView" class="hidden"></div>\n <div id="layersView" class="hidden"></div>\n </div>\n <div id="sidebarResizer"></div>\n </div> <!-- sidebarContainer -->\n\n <div id="mainContainer">\n <div class="findbar hidden doorHanger" id="findbar">\n <div id="findbarInputContainer">\n <input id="findInput" class="toolbarField" title="Find" placeholder="Find in document…" tabindex="91" data-l10n-id="find_input" aria-invalid="false">\n <div class="splitToolbarButton">\n <button id="findPrevious" class="toolbarButton" title="Find the previous occurrence of the phrase" tabindex="92" data-l10n-id="find_previous">\n <span data-l10n-id="find_previous_label">Previous</span>\n </button>\n <div class="splitToolbarButtonSeparator"></div>\n <button id="findNext" class="toolbarButton" title="Find the next occurrence of the phrase" tabindex="93" data-l10n-id="find_next">\n <span data-l10n-id="find_next_label">Next</span>\n </button>\n </div>\n </div>\n\n <div id="findbarOptionsOneContainer">\n <input type="checkbox" id="findHighlightAll" class="toolbarField" tabindex="94">\n <label for="findHighlightAll" class="toolbarLabel" data-l10n-id="find_highlight">Highlight All</label>\n <input type="checkbox" id="findMatchCase" class="toolbarField" tabindex="95">\n <label for="findMatchCase" class="toolbarLabel" data-l10n-id="find_match_case_label">Match Case</label>\n </div>\n <div id="findbarOptionsTwoContainer">\n <input type="checkbox" id="findMatchDiacritics" class="toolbarField" tabindex="96">\n <label for="findMatchDiacritics" class="toolbarLabel" data-l10n-id="find_match_diacritics_label">Match Diacritics</label>\n <input type="checkbox" id="findEntireWord" class="toolbarField" tabindex="97">\n <label for="findEntireWord" class="toolbarLabel" data-l10n-id="find_entire_word_label">Whole Words</label>\n </div>\n\n <div id="findbarMessageContainer" aria-live="polite">\n <span id="findResultsCount" class="toolbarLabel"></span>\n <span id="findMsg" class="toolbarLabel"></span>\n </div>\n </div> <!-- findbar -->\n\n <div class="editorParamsToolbar hidden doorHangerRight" id="editorFreeTextParamsToolbar">\n <div class="editorParamsToolbarContainer">\n <div class="editorParamsSetter">\n <label for="editorFreeTextColor" class="editorParamsLabel" data-l10n-id="editor_free_text_color">Color</label>\n <input type="color" id="editorFreeTextColor" class="editorParamsColor" tabindex="100">\n </div>\n <div class="editorParamsSetter">\n <label for="editorFreeTextFontSize" class="editorParamsLabel" data-l10n-id="editor_free_text_size">Size</label>\n <input type="range" id="editorFreeTextFontSize" class="editorParamsSlider" value="10" min="5" max="100" step="1" tabindex="101">\n </div>\n </div>\n </div>\n\n <div class="editorParamsToolbar hidden doorHangerRight" id="editorInkParamsToolbar">\n <div class="editorParamsToolbarContainer">\n <div class="editorParamsSetter">\n <label for="editorInkColor" class="editorParamsLabel" data-l10n-id="editor_ink_color">Color</label>\n <input type="color" id="editorInkColor" class="editorParamsColor" tabindex="102">\n </div>\n <div class="editorParamsSetter">\n <label for="editorInkThickness" class="editorParamsLabel" data-l10n-id="editor_ink_thickness">Thickness</label>\n <input type="range" id="editorInkThickness" class="editorParamsSlider" value="1" min="1" max="20" step="1" tabindex="103">\n </div>\n <div class="editorParamsSetter">\n <label for="editorInkOpacity" class="editorParamsLabel" data-l10n-id="editor_ink_opacity">Opacity</label>\n <input type="range" id="editorInkOpacity" class="editorParamsSlider" value="100" min="1" max="100" step="1" tabindex="104">\n </div>\n </div>\n </div>\n\n <div id="secondaryToolbar" class="secondaryToolbar hidden doorHangerRight">\n <div id="secondaryToolbarButtonContainer">\n\n <button id="secondaryPrint" class="secondaryToolbarButton visibleMediumView" title="Print" tabindex="52" data-l10n-id="print">\n <span data-l10n-id="print_label">Print</span>\n </button>\n\n <button id="secondaryDownload" class="secondaryToolbarButton visibleMediumView" title="Save" tabindex="53" data-l10n-id="save">\n <span data-l10n-id="save_label">Save</span>\n </button>\n\n <div class="horizontalToolbarSeparator visibleMediumView"></div>\n\n <button id="presentationMode" class="secondaryToolbarButton" title="Switch to Presentation Mode" tabindex="54" data-l10n-id="presentation_mode">\n <span data-l10n-id="presentation_mode_label">Presentation Mode</span>\n </button>\n\n <a href="#page=1&zoom=auto,-107,702" id="viewBookmark" class="secondaryToolbarButton" title="Current Page (View URL from Current Page)" tabindex="55" data-l10n-id="bookmark1">\n <span data-l10n-id="bookmark1_label">Current Page</span>\n </a>\n\n <div id="viewBookmarkSeparator" class="horizontalToolbarSeparator"></div>\n\n <button id="firstPage" class="secondaryToolbarButton" title="Go to First Page" tabindex="56" data-l10n-id="first_page" disabled="">\n <span data-l10n-id="first_page_label">Go to First Page</span>\n </button>\n <button id="lastPage" class="secondaryToolbarButton" title="Go to Last Page" tabindex="57" data-l10n-id="last_page">\n <span data-l10n-id="last_page_label">Go to Last Page</span>\n </button>\n\n <div class="horizontalToolbarSeparator"></div>\n\n <button id="pageRotateCw" class="secondaryToolbarButton" title="Rotate Clockwise" tabindex="58" data-l10n-id="page_rotate_cw">\n <span data-l10n-id="page_rotate_cw_label">Rotate Clockwise</span>\n </button>\n <button id="pageRotateCcw" class="secondaryToolbarButton" title="Rotate Counterclockwise" tabindex="59" data-l10n-id="page_rotate_ccw">\n <span data-l10n-id="page_rotate_ccw_label">Rotate Counterclockwise</span>\n </button>\n\n <div class="horizontalToolbarSeparator"></div>\n\n <div id="cursorToolButtons" role="radiogroup">\n <button id="cursorSelectTool" class="secondaryToolbarButton toggled" title="Enable Text Selection Tool" tabindex="60" data-l10n-id="cursor_text_select_tool" role="radio" aria-checked="true">\n <span data-l10n-id="cursor_text_select_tool_label">Text Selection Tool</span>\n </button>\n <button id="cursorHandTool" class="secondaryToolbarButton" title="Enable Hand Tool" tabindex="61" data-l10n-id="cursor_hand_tool" role="radio" aria-checked="false">\n <span data-l10n-id="cursor_hand_tool_label">Hand Tool</span>\n </button>\n </div>\n\n <div class="horizontalToolbarSeparator"></div>\n\n <div id="scrollModeButtons" role="radiogroup">\n <button id="scrollPage" class="secondaryToolbarButton" title="Use Page Scrolling" tabindex="62" data-l10n-id="scroll_page" role="radio" aria-checked="false">\n <span data-l10n-id="scroll_page_label">Page Scrolling</span>\n </button>\n <button id="scrollVertical" class="secondaryToolbarButton toggled" title="Use Vertical Scrolling" tabindex="63" data-l10n-id="scroll_vertical" role="radio" aria-checked="true">\n <span data-l10n-id="scroll_vertical_label">Vertical Scrolling</span>\n </button>\n <button id="scrollHorizontal" class="secondaryToolbarButton" title="Use Horizontal Scrolling" tabindex="64" data-l10n-id="scroll_horizontal" role="radio" aria-checked="false">\n <span data-l10n-id="scroll_horizontal_label">Horizontal Scrolling</span>\n </button>\n <button id="scrollWrapped" class="secondaryToolbarButton" title="Use Wrapped Scrolling" tabindex="65" data-l10n-id="scroll_wrapped" role="radio" aria-checked="false">\n <span data-l10n-id="scroll_wrapped_label">Wrapped Scrolling</span>\n </button>\n </div>\n\n <div class="horizontalToolbarSeparator"></div>\n\n <div id="spreadModeButtons" role="radiogroup">\n <button id="spreadNone" class="secondaryToolbarButton toggled" title="Do not join page spreads" tabindex="66" data-l10n-id="spread_none" role="radio" aria-checked="true">\n <span data-l10n-id="spread_none_label">No Spreads</span>\n </button>\n <button id="spreadOdd" class="secondaryToolbarButton" title="Join page spreads starting with odd-numbered pages" tabindex="67" data-l10n-id="spread_odd" role="radio" aria-checked="false">\n <span data-l10n-id="spread_odd_label">Odd Spreads</span>\n </button>\n <button id="spreadEven" class="secondaryToolbarButton" title="Join page spreads starting with even-numbered pages" tabindex="68" data-l10n-id="spread_even" role="radio" aria-checked="false">\n <span data-l10n-id="spread_even_label">Even Spreads</span>\n </button>\n </div>\n\n```