Exemplo n.º 1
0
        public static PDFJS_Promise <PDFPage> LoadPageAsync(PDFDocument document, int pageIndex)
        {
            PDFJS_Promise <PDFPage> pagePromise = new PDFJS_Promise <PDFPage>();

#if UNITY_WEBGL && !UNITY_EDITOR
            LoadPageParameters parameters = new LoadPageParameters(document, pageIndex);

            PDFJS_Library.Instance.PreparePromiseCoroutine(LoadPageCoroutine, pagePromise, parameters).Start();
#else
            pagePromise.HasFinished           = true;
            pagePromise.HasSucceeded          = true;
            pagePromise.HasReceivedJSResponse = true;
            pagePromise.Result = document.GetPage(pageIndex);
#endif

            return(pagePromise);
        }
Exemplo n.º 2
0
        void LateUpdate()
        {
            if (!m_SearchStarted && m_NewSearchRequested)
            {
                m_CurrentPage   = 0;
                m_SearchResults = new IList <PDFSearchResult> [m_PageCount];

                m_NewSearchRequested = false;
                m_SearchStarted      = true;

                m_AbortRequested = false;

                m_Total = 0;
            }

            if (m_SearchStarted)
            {
                if (m_AbortRequested)
                {
                    m_SearchStarted      = false;
                    m_NewSearchRequested = false;

                    m_AbortRequested = false;

                    m_Total = 0;
                    return;
                }
                if (m_NewSearchRequested)
                {
                    m_CurrentPage   = 0;
                    m_SearchResults = new IList <PDFSearchResult> [m_PageCount];

                    m_NewSearchRequested = false;

                    m_Total = 0;
                }

                if (m_Search == null || m_Search.Length == 0)
                {
                    m_SearchStarted = false;

                    if (OnProgressChanged != null)
                    {
                        OnProgressChanged(this, 0);
                    }

                    var handler = OnSearchFinished;
                    if (handler != null)
                    {
                        handler(this, null);
                    }
                }
                else
                {
                    Stopwatch timer = Stopwatch.StartNew();

                    for (int i = m_CurrentPage; i < m_PageCount; ++i)
                    {
                        using (PDFTextPage textPage = m_Document.GetPage(i).GetTextPage())
                        {
                            IList <PDFSearchResult> searchResults = textPage.Search(m_Search, m_Flags);

                            m_SearchResults[i] = searchResults;

                            m_Total += searchResults.Count;

                            ++m_CurrentPage;

                            if (timer.ElapsedMilliseconds >=
                                m_TimeBudget * 1000.0f * (1.0f / Mathf.Max(Application.targetFrameRate, 1.0f / Time.deltaTime)))
                            {
                                if (OnProgressChanged != null)
                                {
                                    OnProgressChanged(this, m_Total);
                                }

                                break;
                            }
                        }
                    }

                    if (m_CurrentPage + 1 > m_PageCount)
                    {
                        m_SearchStarted = false;

                        if (OnProgressChanged != null)
                        {
                            OnProgressChanged(this, m_Total);
                        }

                        var handler = OnSearchFinished;
                        if (handler != null)
                        {
                            handler(this, m_SearchResults);
                        }

                        if (OnProgressChanged != null)
                        {
                            OnProgressChanged(this, m_Total);
                        }
                    }
                }
            }
        }