And indeed I did -- the body property returns HTML text. It turns out that body is in the scripting dictionary, but incorrectly, so it doesn't show up in a search. Once you find it (or try it), things become clearer.
use scripting additions
use framework "Foundation"
use framework "AppKit"
tell application "Notes"
set theBody to body of note 2
set theName to name of note 2 -- for file name
end tell
-- make NSString
set anNSString to current application's NSString's stringWithString:theBody
-- get string as raw data
set theData to anNSString's dataUsingEncoding:(current application's NSUTF8StringEncoding)
-- make into styled string
set styledString to current application's NSAttributedString's alloc()'s initWithHTML:theData documentAttributes:(missing value)
-- get page size being used for printing
set printInfo to current application's NSPrintInfo's sharedPrintInfo()
set pageSize to printInfo's paperSize()
set theLeft to printInfo()'s leftMargin()
set theTop to printInfo()'s topMargin()
-- make a text view
set theView to current application's NSTextView's alloc()'s initWithFrame:{origin:{x:0, y:0}, |size|:pageSize}
theView's setTextContainerInset:{theLeft, theTop}
-- put in the text
theView's textStorage()'s setAttributedString:styledString
set theData to theView's dataWithPDFInsideRect:{origin:{x:0, y:0}, |size|:pageSize}
-- build path based on title
set theName to current application's NSString's stringWithString:theName
set theName to theName's stringByReplacingOccurrencesOfString:"/" withString:"_"
set theName to theName's stringByReplacingOccurrencesOfString:":" withString:"_"
set thePath to current application's NSString's stringWithString:(POSIX path of (path to desktop))
set thePath to (thePath's stringByAppendingPathComponent:theName)'s stringByAppendingPathExtension:"pdf"
theData's writeToFile:thePath atomically:true
For some reason the HTML doesn't specify a font unless something other than the default is set in Notes, and it won't include attachments, so you may still see formatting differences.