public static void Run()
        {
            // ExStart:1
            PdfApi     pdfApi     = new PdfApi(Common.APP_KEY, Common.APP_SID, Common.BASEPATH);
            StorageApi storageApi = new StorageApi(Common.APP_KEY, Common.APP_SID, Common.BASEPATH);

            String fileName = "Sample-Bookmark.pdf";
            String storage  = "";
            String folder   = "";

            try
            {
                // Upload source file to aspose cloud storage
                storageApi.PutCreate(fileName, "", "", System.IO.File.ReadAllBytes(Common.GetDataDir() + fileName));

                // Invoke Aspose.PDF Cloud SDK API to get all bookmarks from pdf
                BookmarksResponse apiResponse = pdfApi.GetDocumentBookmarks(fileName, storage, folder);

                if (apiResponse != null && apiResponse.Status.Equals("OK"))
                {
                    Com.Aspose.PDF.Model.Bookmarks bookmarks = apiResponse.Bookmarks;
                    Console.WriteLine("Get all Bookmarks from a PDF,Done!");
                    Console.ReadKey();
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine("error:" + ex.Message + "\n" + ex.StackTrace);
            }
            // ExEnd:1
        }
        public static void Run()
        {
            // ExStart:1
            WordsApi   wordsApi   = new WordsApi(Common.APP_KEY, Common.APP_SID, Common.BASEPATH);
            StorageApi storageApi = new StorageApi(Common.APP_KEY, Common.APP_SID, Common.BASEPATH);

            String fileName = "SampleWordDocument.docx";

            String storage = null;
            String folder  = null;


            try
            {
                // Upload the file
                storageApi.PutCreate(fileName, "", storage, System.IO.File.ReadAllBytes(Common.GetDataDir() + fileName));
                // Invoke Aspose.Words Cloud SDK API to get bookmarks from document
                BookmarksResponse apiResponse = wordsApi.GetDocumentBookmarks(fileName, storage, folder);

                if (apiResponse != null && apiResponse.Status.Equals("OK"))
                {
                    foreach (Com.Aspose.Words.Model.Bookmark bookmark in apiResponse.Bookmarks.BookmarkList)
                    {
                        Console.WriteLine("Name: " + bookmark.Name + " Text: " + bookmark.Text + " link: " + bookmark.link.Href);
                    }
                    Console.ReadKey();
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine("error:" + ex.Message + "\n" + ex.StackTrace);
            }
            // ExEnd:1
        }
        public BookmarksResponse Read(long ID)
        {
            BookmarksResponse response = new BookmarksResponse();

            try
            {
                using (IDbConnection conn = GetConnection())
                {
                    response.data = conn.Get <Bookmarks>(ID);
                    if (response.data != null)
                    {
                        response.Status      = true;
                        response.Description = "Successful";
                    }
                    else
                    {
                        response.Status      = false;
                        response.Description = "No data";
                    }
                }
            }
            catch (Exception ex)
            {
                response.Status      = false;
                response.Description = ex.Message;
            }
            return(response);
        }
 public void Pdf_Bookmarks_Tests()
 {
     try
     {
         BookmarksResponse bookmarksResponse = pdfService.Bookmarks.ReadAllDocumentBookmarks("pdf-sample.pdf", Utils.CloudStorage_Input_Folder);
         BookmarkResponse  bookmarkResponse  = pdfService.Bookmarks.ReadDocumentBookmark("pdf-sample.pdf", 1, Utils.CloudStorage_Input_Folder);
     }
     catch (Exception ex)
     {
         Assert.Fail(ex.Message);
     }
 }
示例#5
0
        //GET api/username/Bookmarks
        public BookmarksResponse Get(string username, string tag = null, string dt = null, int?start = 1, int?length = 2)
        {
            BookmarksResponse response = new BookmarksResponse();

            response.Start  = start.Value;
            response.Length = length.Value;
            string absolute = RequestContext.Url.Request.RequestUri.AbsoluteUri;
            string nextUrl  = absolute.Split('?')[0];

            nextUrl += "?start=" + (start + length);
            nextUrl += "&length=" + length;

            var query = (from b in _dbContext.Bookmarks
                         join u in _dbContext.Users on b.UserId equals u.Id
                         where u.UserName == username
                         select b);

            if (tag != null)
            {
                nextUrl += "&tag=" + tag;
                query    = query.Where(x => x.Tags.Exists(y => y.Name == tag));
            }
            if (dt != null)
            {
                nextUrl += "&dt=" + dt;
                DateTime date = DateTime.Parse(dt);
                query = query.Where(x => DbFunctions.TruncateTime(x.Time).Value == date.Date);
            }
            query = query.OrderBy(x => x.BookmarkId);
            if (start > 1)
            {
                query = query.Skip(start.Value - 1);
            }

            query = query.Take(length.Value);
            response.Bookmarks = query.ToList();
            if (response.Bookmarks.Count >= length)
            {
                response.Next = nextUrl;
            }
            foreach (var bookmark in response.Bookmarks)
            {
                bookmark.Href = absolute.Split('?')[0] + "/" + bookmark.BookmarkId;
            }

            return(response);
        }
		private async Task SaveBookmarks( string artId, BookmarksResponse request, CancellationToken cancellationToken )
		{
		    var data = CreateXmlFromRequest(request);
			bool needNewLock = false;
            
			while( true )
			{
			    try
			    {
			        if (needNewLock || string.IsNullOrEmpty(_lock))
			        {
			            await GetBookmarksByDocumentId(artId, cancellationToken);
			        }

			        var parameters = new Dictionary<string, object>
			        {
			            {"data", data},
			            {"uuid", artId},
			            {"lock_id", _lock},
			            {"group", "0,1"},
			        };

			        await _client.AddBookmark(parameters, cancellationToken);
			    }
			    catch (CatalitBookmarksException e)
			    {
			        if ((e.ErrorCode == 4 || e.ErrorCode == 1) && !needNewLock)
			        {
			            needNewLock = true;
			            continue;
			        }
			        throw;
			    }
			    catch (Exception ex)
			    {
			        
			    }
				break;
			}

            XCollection<Bookmark> allbookmarks = _dataCacheService.GetItem<XCollection<Bookmark>>(BookmarksCacheItemName);
            allbookmarks = allbookmarks ?? new XCollection<Bookmark>();

            var existbookmarks = allbookmarks.Derive(art => art.ArtId == artId);
            var newbookmarks = request.Bookmarks.Derive(art => art.ArtId == artId);
            if (existbookmarks != null && newbookmarks != null)
		    {
                if (existbookmarks.Count != 0)
		        {
                    for (int i = existbookmarks.Count - 1; i >= 0; i--)
                    {
                        if (newbookmarks.FirstOrDefault(x => x.Id == existbookmarks[i].Id) == null)
                        {
                            allbookmarks.Remove(existbookmarks[i]);
                        }
                    }
		        }
		    }

            foreach (var bookmark in request.Bookmarks)
            {
                if (allbookmarks.FirstOrDefault(x => x.Id == bookmark.Id) == null)
                {
                    allbookmarks.Add(bookmark);
                }
            }
            _dataCacheService.PutItem(allbookmarks, BookmarksCacheItemName, cancellationToken);		    
		}
	    private string CreateXmlFromRequest(BookmarksResponse request)
	    {
            request.LockId = _lock;
            //foreach (var bookmark in request.Bookmarks)
            //{
            //    bookmark.NoteText = new Note {Text = "12345"};
            //    bookmark.Percent = null;
            //}
            var serializer = new XmlSerializer(typeof(BookmarksResponse));
            var namespaces = new XmlSerializerNamespaces();
            namespaces.Add("", "http://www.gribuser.ru/xml/fictionbook/2.0/markup");
            namespaces.Add("fb", "http://www.gribuser.ru/xml/fictionbook/2.0");
            
            string data;
            using (var ms = new MemoryStream())
            {
                var xmlWriter = XmlWriter.Create(ms, new XmlWriterSettings { OmitXmlDeclaration = true, Indent = true, Encoding = Encoding.UTF8 });
                serializer.Serialize(xmlWriter, request, namespaces);
                ms.Seek(0, SeekOrigin.Begin);
                var sr = new StreamReader(ms);
                data = sr.ReadToEnd();
            }

            //XDocument document = new XDocument();
            //using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(data)))
            //{
            //    using (var reader = XmlReader.Create(stream))
            //    {
            //        reader.MoveToContent();
            //        document.Add(XElement.ReadFrom(reader));
            //    }
            //}           
            //data = document.ToString(SaveOptions.DisableFormatting);
            data = data.Replace("\r\n", string.Empty);
	    //    data = EscapeUnicode(data);
	        return data;
	    }
		public async Task AddBookmark( Bookmark bookmark, CancellationToken cancellationToken )
		{
			if (bookmark != null)
			{
				XCollection<Bookmark> bookmarks = await GetBookmarksByDocumentId( bookmark.ArtId, cancellationToken ) ?? new XCollection<Bookmark>();
                if (bookmarks.Count == 0) bookmarks = await GetLocalBookmarksByDocumentId(bookmark.ArtId, cancellationToken) ?? bookmarks;
			    
				if( bookmark.Group == "0" )
				{
					bookmarks.RemoveAll( x => x.Group == "0" );
				}

				bookmarks.RemoveAll( x => x.Selection == bookmark.Selection && x.Group == bookmark.Group );

				bookmarks.Insert( 0, bookmark );

				BookmarksResponse request = new BookmarksResponse();
				request.Bookmarks = bookmarks;

				await SaveBookmarks( bookmark.ArtId, request, cancellationToken );
			}
		}
		public async Task<XCollection<Bookmark>>  RemoveBookmarks( XCollection<Bookmark> bookmarks, CancellationToken cancellationToken )
		{
			if( bookmarks != null && bookmarks.Count > 0 )
			{
				string id = bookmarks[0].ArtId;

				XCollection<Bookmark> existbookmarks = await GetBookmarksByDocumentId( id, cancellationToken ) ?? (await GetLocalBookmarksByDocumentId(id, cancellationToken ) ?? new XCollection<Bookmark>());

				if( existbookmarks.Count > 0 )
				{
					for( int i = existbookmarks.Count - 1; i >= 0; i-- )
					{
						if( bookmarks.Any( x => x.Id == existbookmarks[i].Id ) )
						{
							existbookmarks.RemoveAt( i );
						}
					}
				}

				BookmarksResponse request = new BookmarksResponse();
				request.Bookmarks = existbookmarks;

				await SaveBookmarks( id, request, cancellationToken );

			    return request.Bookmarks;
			}
		    return null;
		}