Word Add-in - Save/load document to/from a specific location - ms-word

I'm currently developing a Word add-in using the word-15.js script. I'm trying to save the document on some location. I assume that calling document.save(), saves the document to a location where the document already exists, so only if the document has been saved before and isn't a new document.
In my scenario, I'm trying to save/load a new document. For instance, when the user has created a new document and entered some text or other data, my add-in can load a SharePoint document library and save the that location. For instance: https://my-tenant.sharepoint.com/sites/my-site/_api/web/GetFolderByServerRelativeUrl('Shared Documents')/Files/add(url='test.docx', overwrite=true).
I haven't seen this done in any examples that I've been able to scramble through. Is this even possible? And if so, how?

there is no such API. you can, however, get the document (as docx, pdf or txt) using the getFileAsync API. and then once once you have the bits of the document you can upload it anywhere you need.
Here are more details and an example on how to use getFileAsync.
https://github.com/OfficeDev/office-js-docs/blob/master/reference/shared/document.getfileasync.md

Related

How to save "syncfusion document editor" to database

I want to save the document editor provided by syncfusion but i'm not able to implement the save functionality. could anyone help me
Using SaveASBlob() method you will get the Document as Blob stream(Docx format) in client side and you can save that stream in Database.
Below KB link contains how to save the document in APP_Data folder, you can customize it based on your requirement.
https://www.syncfusion.com/kb/10304/how-to-load-save-file-in-web-server-for-asp-net-core

Office Web Addin - Open or save or load document from specfic location

I'm working on an Office word web add-in (not VSTO). I have opened a new / existing document from the current system or from a Sharepoint document library and side-loaded my taskpane addin and ribbon menu. Using a ribbon menu control, I should open a document from a sharepoint document library for editing and saving to some other location in Sharepoint. Is it possible in office.js?
Shall I open the document using Javascript API (office.js)?
If Point 1 is possible then can I open document from Sharepoint or one drive?
Can I save document using office.js to specific location?
Did you tried:
using the graph API to access the files you need out of One Drive.
use the context.application.createDocument().open() API to open the file in Word.
Finally, after user updates, use the getFileAsync() method to get the base64 encoded docx and upload it back to one drive or wherever you need to?

Persisting data in word document using office add-in

I'm trying to develop word add-in which allows to modify word content. One of the requirement is to select some text and mark it:
change its style (look) - and that is done
Associate that piece of text with some custom/hidden data, ex. an ID.
I want to somehow persist that data within the document, so that:
My add-in can read the document on the start and build a list of 'marked' elements
It should work on different machines - I can create a document on one machine, later open in on other machine, and add-in should be able to retrieve that data.
So far I tried to persist that data by first, getting data as HTML, and add attributes to tags, but that didn't work.
Also tried to add some hidden div, but it was only available during word app lifetime.
Recently, found this link: https://github.com/OfficeDev/Excel-Add-in-JavaScript-PersistCustomSettings , but still it allows to persist data in scope of "browser", so, I assume that on other machine it won't work.
What are my possibilities? Maybe I shouldn't store it within a document, but if not, where?
Developing it using office-js - it should work for both Word 2013 and Word 2016 (so I don't have an access to Word 2016 specific API).
Check out https://dev.office.com/reference/add-ins/shared/settings
The Office JS Settings object allows you to save custom data that persists with the document. It is pretty straight-forward to use. Getting settings is synchronous - saving settings is async. The biggest thing is that you have to remember to call Office.settings.saveAsync() after you have made your changes using Office.settings.set() in order to actually save the changes to the document.
Moreover to Nick's answer which is absolutely correct, you can use "Binding" mechanism.
Bindings are stored in document out-of-the-box, so that, you can access those later at any time.
An example, which fits my needs:
Select some text and click on button in add-in (to call some method)
Call addFromSelectionAsync() method (you can specify an id for it to reference it later)
Access it using getAllAsync() or getByIdAsync() method at any time you need it.
More about it: https://dev.office.com/docs/add-ins/develop/bind-to-regions-in-a-document-or-spreadsheet

MS Word - Possible to Add Embedded Document?

I'm in the process of exploring the possibilities of Word VSTO add-in. Using a combination of custom task pane(s), a custom ribbon and a series of dialog boxes or forms I can collection information from the user. However, what I can figure out is where I can persist this information within the document. A docx is made of a series of individual files, how do I add my file within the cab as well? Storing the custom info outside of the document is not an option, it must travel with the document itself.
Thanks,
Update : If I use custom xml parts per the solution mentioned here https://msdn.microsoft.com/en-us/library/bb608612.aspx then it appears to me that the xml data is visible to the user. See screen shot. The user should not be able to browse data that my add-in is storeing - not because it's senstitive but because it makes no sense for them to see and interact with a bunch of serialized class data.
You can store your custom information inside the document using so called Custom XML Parts. This information is stored within the document.
Here is an example how to add a Custom XML Part to your document:
How to: Add Custom XML Parts to Documents by Using VSTO Add-Ins

Editing Word Documents from Web Server

I have looked for a solution to this but all I have found are products that are close but not what I need.
We have a program that creates a word document on the fly based on data from our database, and stores it on our server, then the user can download this file to print,email,file away.
I need something that will allow the user to open the existing document from the server, edit it, and save it back to the server.
I need this to be able to work on all browser, so activex isn't a full solution.
This link is a proof of concept of using CKEditor to do what you describe.
The focus is on ensuring that the "long tail" of possible docx content is preserved across the editing process.
For example, take a look at the Microsoft demo docx, which they use to compare their web apps with Google Docs, at
google-documents-vs-word-web-app