Adds PDF to getrawdata: the staged, filtered dataset is rendered by mp_ds2pdf and streamed with contenttype=PDF, so the Download modal gains a typeset report - landscape, SAS formats and labels applied, headers repeated on every page, 'Page n of m', and the filter, user and timestamp in the footer. The report is capped at 2000 observations, about 75 landscape pages, and the footer states the truncation when it bites. The cap is one macro variable driving both maxobs= and the footer text, so the two cannot disagree, and the footer itself is composed by mpe_pdffootnote so the truncation wording can be asserted without reading text out of a PDF. @sasjs/core goes 7.0.3 -> 7.1.0 for the macro; the bump also brings mp_validatecol ISPATH, two mp_dirlist guards and an mx_execute test. On Viya the report renders but the download does not arrive: mp_streamfile fails ahead of the PDF branch inside mp_binarycopy (RECFM=N with lrecl=1 needs 256), which is upstream of this change and left alone here.