Hi,
I want to add a PDF file to a OneNote page (attachment + printout). Has anyone achieved this? The page gets created and I see a PDF file shortcut. But when I click the PDF file icon on the OneNote page I get a message that the document is probably corrupt. Maybe the binary stream is not correct? Does anyone know how to correctly generate a binary or MIME stream from a pdf file?
An example is showed on this page: https://graph.microsoft.io/GraphDocuments/api-reference/beta/api/notes_post_pages.htm. But is does not show how to generate the binary stream for a file.
See the blocks below for my code. The binary stream is generated using this function:
function convertFileToBase64viaFileReader(url, callback){ var xhr = new XMLHttpRequest(); xhr.responseType = 'blob'; xhr.onload = function() { var reader = new FileReader(); reader.onloadend = function () { callback(reader.result); } reader.readAsDataURL(xhr.response); }; xhr.open('GET', url); xhr.send(); }
--MyAppPartBoundaryContent-Dis-data; name="Presentation" Content-type: text/html<!DOCTYPE html><html><head><title>OneNote test page</title></head><body><div style=";width:280px;top:120px;left:68px"><p>Divs, images, and objects that are direct children of the body can be absolutely positioned elements on the page.</p><p>The body must specify data-absolute-enabled="true" and the absolutely positioned elements must specify style="".</p><p>An absolutely positioned div can contain non-absolutely positioned elements, such as images and objects.</p></div><object data-attachment="Document.pdf" data="name:EmbeddedFileBlocksName1" type="application/pdf" /></body></html> --MyAppPartBoundary Content-Dis-data; name="EmbeddedFileBlocksName1" Content-type:application/pdf JVBERi0xLjUNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFuZyhubC1OTCkgL1N0cnVjdFRyZWVSb290IDEwIDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4+Pg0KZW5kb2JqDQoyIDAgb2JqDQo8PC9UeXBlL1BhZ2VzL0NvdW50IDEvS2lkc1sgMyAwIFJdID4+DQplbmRvYmoNCjMgMCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4vRXh0R1N0YXRlPDwvR1M3IDcgMCBSL0dTOCA4IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsgMCAwIDU5NS4yNSA4NDJdIC9Db250ZW50cyA0IDAgUi9Hcm91cDw8L1R5cGUvR3JvdXAvUy9UcmFuc3BhcmVuY3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9TL1N0cnVjdFBhcmVudHMgMD4+DQplbmRvYmoNCjQgMCBvYm...WYvU2l6ZSAyNC9XWyAxIDQgMl0gL1Jvb3QgMSAwIFIvSW5mbyA5IDAgUi9JRFs8OTI2RDNFMTM5NzcyMzc0MzgzQkY2NkJCQjRBNkUzMTU+PDkyNkQzRTEzOTc3MjM3NDM4M0JGNjZCQkI0QTZFMzE1Pl0gL0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggOTE+Pg0Kc3RyZWFtDQp4nDXNuxGAMAwDUDkfEqhgAlgjW7AQgzAI1HQMwxDBscCF3/lOOgM6tYruCWhs5DDkMvxMbiOc5DHiAjgtjEgkk5505IsMrbD/lxBHPAkkajKt9iEX4AX+YQj8DQplbmRzdHJlYW0NCmVuZG9iag0KeHJlZg0KMCAyNQ0KMDAwMDAwMDAxMCA2NTUzNSBmDQowMDAwMDAwMDE3IDAwMDAwIG4NCjAwMDAwMDAxMjUgMDAwMDAgbg0KMDAwMDAwMDE4MSAwMDAwMCBuDQowMDAwMDAwNDQ4IDAwMDAwIG4NCjAwMDAwMDA3OTkgMDAwMDAgbg0KMDAwMDAwMDk2NyAwMDAwMCBuDQowMDAwMDAxMjA2IDAwMDAwIG4NCjAwMDAwMDEyNTkgMDAwMDAgbg0KMDAwMDAwMTMxMiAwMDAwMCBuDQowMDAwMDAwMDExIDY1NTM1IGYNCjAwMDAwMDAwMTIgNjU1MzUgZg0KMDAwMDAwMDAxMyA2NTUzNSBmDQowMDAwMDAwMDE0IDY1NTM1IGYNCjAwMDAwMDAwMTUgNjU1MzUgZg0KMDAwMDAwMDAxNiA2NTUzNSBmDQowMDAwMDAwMDE3IDY1NTM1IGYNCjAwMDAwMDAwMTggNjU1MzUgZg0KMDAwMDAwMDAxOSA2NTUzNSBmDQowMDAwMDAwMDIwIDY1NTM1IGYNCjAwMDAwMDAwMjEgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAxODcyIDAwMDAwIG4NCjAwMDAwMDIxMDUgMDAwMDAgbg0KMDAwMDA4OTE4OCAwMDAwMCBuDQp0cmFpbGVyDQo8PC9TaXplIDI1L1Jvb3QgMSAwIFIvSW5mbyA5IDAgUi9JRFs8OTI2RDNFMTM5NzcyMzc0MzgzQkY2NkJCQjRBNkUzMTU+PDkyNkQzRTEzOTc3MjM3NDM4M0JGNjZCQkI0QTZFMzE1Pl0gPj4NCnN0YXJ0eHJlZg0KODk0NzgNCiUlRU9GDQp4cmVmDQowIDANCnRyYWlsZXINCjw8L1NpemUgMjUvUm9vdCAxIDAgUi9JbmZvIDkgMCBSL0lEWzw5MjZEM0UxMzk3NzIzNzQzODNCRjY2QkJCNEE2RTMxNT48OTI2RDNFMTM5NzcyMzc0MzgzQkY2NkJCQjRBNkUzMTU+XSAvUHJldiA4OTQ3OC9YUmVmU3RtIDg5MTg4Pj4NCnN0YXJ0eHJlZg0KOTAxMzQNCiUlRU9G --MyAppPartBoundary--
$.ajax({ type: "POST", url: "https://graph.microsoft.com/beta/me/notes/sections/" + SectionID + "/pages", headers: { 'Authorization': 'Bearer ' + token, 'Content-Type': 'multipart/form-data; boundary=MyAppPartBoundary' }, data: htmlContent }).done(function (response) { console.log('Successfully fetched notebooks from OneNote.'); console.log(response); }).fail(function (error) { console.log(error); console.log('Fetching files from OneNote failed.'); });