// This code is part of GrapeCity Documents for PDF samples.
// Copyright (c) GrapeCity, Inc. All rights reserved.
using System;
using System.IO;
using System.Drawing;
using GrapeCity.Documents.Pdf;
using GrapeCity.Documents.Text;
using GrapeCity.Documents.Pdf.Annotations;

namespace GcPdfWeb.Samples

    // This sample demonstrates using the GcPdfViewer's collaboration tools.
    // The Collaboration mode in GcPdfViewer allows PDF documents to be shared with
    // different users who can view or edit them (based on permissions) with
    // real-time co-authoring.
    // Whenever a shared document is opened, the 'shared mode' label with access type
    // is shown on the top right corner of the document. Every time any of the collaborators
    // change the document, their presence and their changes can be seen.

    // This and other samples in this section demonstrate the features of GcPdfViewer
    // (a JavaScript PDF viewer control included with GcPdf), mainly the ability
    // to change PDF files (add or edit annotations and AcroForm fields, rotate pages etc.)
    // when the JS viewer on the client is supported by GcPdf running on the server.
    // To enable the editing features of the viewer, its supportApi property must be set
    // to a URL on the server that implements all or some of the edit supporting APIs
    // that are known to/expected by the viewer. This GcPdf demo site provides those APIs,
    // which makes it possible to demonstrate the editing when you open the PDF viewer
    // in this sample. When you download this sample, in addition to the .NET Core
    // console app project that generates the sample PDF, an ASP.NET Core project is
    // also included in the download zip (located in the GcPdfViewerWeb sub-folder of the
    // downloaded zip), which also provides the necessary APIs. In particular, it includes
    // a project that implements the APIs and provides them via a special controller.
    // It is actually the same controller that is used by this GcPdf demo site, and which
    // can be used in any ASP.NET Core site to enable the viewer editing features.
    // Look at the following files in the sample download zip for more info:
    // - GcPdfViewerWeb\SupportApiDemo: the sample ASP.NET Core web site.
    // - GcPdfViewerWeb\SupportApiDemo.sln: solution to build/run the sample web site.
    // - GcPdfViewerWeb\SupportApi: support API implementation (can be used in any site).
    // - GcPdfViewerWeb\SupportApi\Controllers\GcPdfViewerController.cs: support API controller.
    // Please note that this and other samples in this section are only available in C# at this time.
    public class ViewerCollaboration
        public void CreatePDF(Stream stream)
            GcPdfDocument doc = new GcPdfDocument();
            using (var fs = new FileStream(Path.Combine("Resources", "PDFs", "Financial Document.pdf"), FileMode.Open, FileAccess.Read))

        // Used by SupportApiDemo to initialize GcPdfViewer.
        public static GcPdfViewerSupportApiDemo.Models.PdfViewerOptions PdfViewerOptions
            get => new GcPdfViewerSupportApiDemo.Models.PdfViewerOptions(
                GcPdfViewerSupportApiDemo.Models.PdfViewerOptions.Options.AnnotationEditorPanel |
                GcPdfViewerSupportApiDemo.Models.PdfViewerOptions.Options.FormEditorPanel |
                GcPdfViewerSupportApiDemo.Models.PdfViewerOptions.Options.ReplyTool |
                GcPdfViewerSupportApiDemo.Models.PdfViewerOptions.Options.SupportApi |
                viewerTools: new string[] { "open", "share", "save", "$navigation", "$split", "text-selection", "pan", "$zoom",
            "$fullscreen", "download", "print", "rotate", "view-mode", "hide-annotations", "doc-properties", "about" });