Edit in Word using Wopi and Office Online Server - asp.net

I am working on a project where we have implemented content management with word.
We have some word files, that are being processed using OpenXML.
Users can open those files in two ways - download a copy or edit online. Online editing is implemented using Office Online Server and custom Wopi server, built based on this example.
Editing online works fine, but Word Online has limited features compared to desktop Word.
I am trying to build a functionality similar to Sharepoint, where user has 2 options - Edit in Word, Edit in Browser:
In Office Online Server I don't have such options, I can only edit in browser:
Even in edit mode Sharepoint provides a link for Edit in Word:
whereas Office Online Server does not have it:
My question is how it is implemented in Sharepoint?
In other words, am I missing something in Wopi server to enable it or Microsoft has built this functionality into Sharepoint, without the need of Wopi and/or OWA?
Any ideas would be appreciated!

To enable "Edit in Word" in Office Online Server when using a WOPI handler, you need to set the ClientUrl property in CheckFileInfo (and CheckFolderInfo if you implement that). ClientUrl should be set to a direct editable link for the document file, either WebDAV or FSHTTP, but you could even use a file:// link for testing.
When you set the ClientUrl property, Office Online behavior becomes very similar to OneDrive/SharePoint Online. The current WOPI documentation is a bit outdated, it lists this property under Unused and future properties, but there is nothing secret about it. I asked dochelp#microsoft.com, that is Microsoft's "Open Specifications Support" mailbox, mentioned in many of their presentations and publications about WOPI and Office Online.
Word Online Reading View:
Word Online Editing View after clicking OPEN IN WORD:

I'm pretty sure that the functionality (Edit in Word) is not part of the Office Online Server and that it doesn't utilize the WOPI protocol. In the previous versions of SharePoint, it was implemented using WebDAV and I guess this hasn't changed. If you want to support opening/editing/saving you should implement your own WebDAV server. You can save a lot of time if you use a pre-built server like one from ITHit. They also have a JS framework to support opening files from browser.
If you want a cheap, cross-browser alternative that will just invoke the editing apps I suggest you have a look at Office URIs.

Related

How to set ClientUrl in ChekInfoFile in MS WOPI Office Online using WebDav

I have developed MS WOPI that works on the browser, that is, we can view and edit documents stored in the database, in the browser. But I am unable to open the documents in MS Word desktop application.
I found in some answers here that we need to set the ClientUrl field of CheckFileInfo endpoint using WebDav.
I have no knowledge of WebDav, I tried to find more about it on the net but not able to fully understand it.
Just want to know what is the general format of the WebDav link for a specific file that we need to set in ClientUrl after we have set up a WebDav?
Is it something like this https://serverAddressLockToken/FileName.ext
The format of the WebDAV URL is not really important. A specific format of a URL won't make WebDAV work by itself. You need to implement a WebDAV server that will serve your files to client apps and will also define the format of accepted URLs.
WebDAV, similarly to WOPI, is quite a complex protocol and if you don't want to implement it from zero, I recommend using one of the available solutions, e.g. ITHit's WebDAV Server.
There are also Office URIs that might pose an acceptable alternative for you. Check out my other answer here.

Open InDesign in/from Browser with the ability to save the document back

Microsoft Word and Microsoft Excel have the ability to open documents by URI (for instance pointing to a web server) and to save them back after they got edited. This functionality can also be invoked by a browser. This, for instance, is done in products like Atlassian Confluence and Microsoft Sharepoint.
Is it possible to open an Adobe InDesign (while InDesign is installed on the computer, ofc) document in a (similar) way like described above?
This means:
Invoke InDesign (embedded in browser or as separate application), but by the browser.
Open a document by specifying an URI (for instance on a web server), also by the browser.
After close or when the user presses save, InDesign will PUT or POST the document back to the URI. (Or use an alike way.)
The short answer is no.
You can build a system with web front-end and InDesign Server as a back-end. This will achieve the functionality you describe and user will not need a local copy of InDesign.
Another, simpler(and cheaper) option is to use one of the cloud services, like dropbox, or Adobe Creative Cloud with a shared folder and share the files for collaboration.
May be, there is a plugin capable of doing something similar, but I did not come across anything like this. So, another option is to build a plugin, although it will have to be distributed to every end-user and you will need your web service to server the files.

Build an Offline website - Burn it on a CD

I need to build a website that can be downloaded to a CD.
I'd like to use some CMS (wordpress,Kentico, MojoPortal) to setup my site, and then download it to a cd.
There are many program that know how to download a website to a local drive, but how to make the search work is beyond my understanding.
Any idea???
The project is supposed to be an index of Local community services, for communities without proper internet connection.
If you need to make something that can be viewed from a CD, the best approach is to use only HTML.
WordPress, for example, needs Apache and MySQL to run. And although somebody can "install" the website on his own computer if you supply the content via a CD, most of your users will not be knowledgeable enough to do this task.
Assuming you are just after the content of the site .. in general you should be able to find a tool to "crawl" or mirror most sites and create an offline version that can be burned on a CD (for example, using wget).
This will not produce offline versions of application functionality like search or login, so you would need to design your site with those limitations in mind.
For example:
Make sure your site can be fully navigated without JavaScript (most "crawl" tools will discover pages by following links in the html and will have limited or no JavaScript support).
Include some pages which are directory listings of resources on the site (rather than relying on a search).
Possibly implement your search using a client-side technology like JavaScript that would work offline as well.
Use relative html links for images/javascript, and between pages. The tool you use to create the offline version of the site should ideally be able to rewrite/correct internal links for the site, but it would be best to minimise any need to do so.
Another approach you could consider is distributing using a clientside wiki format, such as TiddlyWiki.
Blurb from the TiddlyWiki site:
TiddlyWiki allows anyone to create personal SelfContained hypertext
documents that can be published to a WebServer, sent by email,
stored in a DropBox or kept on a USB thumb drive to make a WikiOnAStick.
I think you need to clarify what you would like be downloaded to the CD. As Stennie said, you could download the content and anything else you would need to create the site either with a "crawler" or TiddlyWiki, but otherwise I think what you're wanting to develop is actually an application, in which case you would need to do more development than what standard CMS packages would provide. I'm not happy to, but would suggest you look into something like the SalesForce platform. Its a cloud based platform that may facilitate what you're really working towards.
You could create the working CMS on a small web/db server image using VirtualBox and put the virtual disk in a downloadable place. The end user would need the VirtualBox client (free!) and the downloaded virtual disk, but you could configure it to run with minimal effort for the creation, deployment and running phases.

view documents in browser without downloading

I have an asp.net site which is essentially a repository of documents uploaded by users.
I would like visitors to the site to be able to view any of these documents in some sort of "document viewer" without ever being able to download the file to their local system.
Documents are all Office files and PDFs.
Please advise if there are open source or commercial "document viewer" controls that you have used and would recommend.
EDIT: I own the server and can load any server components. Unfortunately i can't use flash based viewers as it must be compatible accross all browsers and devices.
We had a similar requirement and we converted all office docs and PDF files to SWF files using Print2Flash (http://print2flash.com/) and display them in the browser. There are both free and commercial editions of print2flash.
Just answering for anyone else looking up this info.
I ended up going with Adeptol's Ajax Document Viewer which works really well.

Converting MS Word Documents to PDF in ASP.NET [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
Similar questions have been asked, but nothing exactly like mine, so here goes.
We have a collection of Microsoft Word documents on an ASP.NET web server with merge fields whose values are filled in as a result of user form submissions. After the field merge, the server must convert the document to PDF and stream it down to the browser. Our first inclination was to use the Visual Studio Tools for Office API; however, we ran into this warning from Microsoft:
Microsoft does not currently recommend, and does not support, Automation of Microsoft Office applications from any unattended, non-interactive client application or component (including ASP, ASP.NET, DCOM, and NT Services), because Office may exhibit unstable behavior and/or deadlock when Office is run in this environment.
It looks like the field manipulation can be done using the Open XML SDK, but what's the best way to convert Word 2007 documents to PDF without opening Word? The optimal solution would be low-cost, scalable, have a low memory footprint, be easy to deploy, and have a .NET API.
It's not exactly Open Source, but Aspose has a couple products which can do that,
Aspose.Pdf.Kit
Aspose.Pdf.Kit is a non-graphical PDF® document manipulation component that enables both .NET and Java developers to manage existing PDF files as well as manage form fields embedded within PDF files. Aspose.Pdf is perfect for creating new PDF files; however, developers often need to edit already existing PDF documents. Aspose.Pdf.Kit allows them to do just that. Aspose.Pdf.Kit allows developers to create powerful applications for merging data directly into PDF documents as well as for updating and managing PDF documents. Aspose.Pdf.Kit is a wonderful product and works great with the rest of our PDF products.
and Aspose.pdf
Aspose.Pdf is a non-graphical PDF® document reporting component that enables either .NET or Java applications to create PDF documents from scratch without utilizing Adobe Acrobat®. Aspose.Pdf is very affordably priced and offers a wealth of strong features including: compression, tables, graphs, images, hyperlinks, security and custom fonts. Aspose.Pdf supports the creation of PDF files through API, XML templates and XSL-FO files. Aspose.Pdf is very easy to use and is provided with 14 fully featured demos written in both C# and Visual Basic.
Check out the API and demos. You can download a DLL for free to try it out. I've used both before and they work out great.
There's also iTextSharp which is a C# port of iText, a Java PDF converter. I've heard some people try it with mixed results.
The question is "MS Word Documents to PDF in ASP.NET" so I am very puzzled why Aspose.Pdf and Aspose.Pdf.Kit are recommended above. You need to use Aspose.Words because that's the component that supports Microsoft Word documents to PDF conversion.
Check out Microsoft's resource on Saving Word 2007 Documents to PDF and XPS Formats using C# or VB.
ActivePdf DocConverter - http://www.activepdf.com/
But it requires Office installed on the server for good quality conversion.
Aspose.Words may be the best option for you, but it doesn't convert all visual elements perfectly.
Have a look at the Muhimbi PDF Converter Web Services. It runs on Windows as a service, but can be accessed from any non-Windows web services capable environment including Java and .NET.
Although this solutions requires MS-Office to be installed on a server (not necessarily the same server as your application), it is very robust and provides perfect conversion fidelity. It goes to great lengths to get around the deadlock problems Microsoft refer to in their KB article.
To generate or Modify MS-Word files I recommend using the free Open XML SDK for Microsoft Office. Eric White maintains a really good Blog about it.
Disclaimer, I worked on this product. Having said that, it works great.
You should try using OpenOffice for this. It is Free and supports a whole range of file conversions. I have used it to convert DOC & DOCX files to HTML format with fantastic results.
ABCpdf is another popular component that'll let you convert Word documents to PDF under ASP.NET, however I believe it too makes use of Microsoft Office or OpenOffice.
http://www.websupergoo.com/abcpdf-office-docs.htm
Microsoft PDF add-in for word seems to be the best solution for now but you should take into consideration that it does not convert all word documents correctly to pdf and in some cases you will see huge difference between the word and the output pdf. Unfortunately I couldn't find any api that would convert all word documents correctly. The only solution I found to ensure the conversion was 100% correct was by converting the documents through a printer driver. The downside is that documents are queued and converted one by one, but you can be sure the resulted pdf is exactly like the word docuemtn. I personally preferred using UDC (Universal document converter) and installed Foxit Reader(free version) on server too then printed the documents by starting a "Process" and setting its Verb property to "print". You can also use FileSystemWatcher to set a signal when the conversion has completed.

Resources