Quantcast
Channel: General Office Development forum
Viewing all articles
Browse latest Browse all 2257

Add PDF attachment to OneNote page using Microsoft Graph API request

$
0
0

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=&quot;true&quot; and the absolutely positioned elements must specify style=&quot;&quot;.</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.');
	    });



Viewing all articles
Browse latest Browse all 2257

Trending Articles