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); }
private static IEnumerator LoadPageCoroutine(PDFJS_PromiseCoroutine promiseCoroutine, IPDFJS_Promise promise, object par) { PDFLibrary.Instance.EnsureInitialized(); while (!PDFLibrary.Instance.IsInitialized) { yield return(null); } PDFJS_Promise <PDFPage> pagePromise = promise as PDFJS_Promise <PDFPage>; LoadPageParameters parameters = par as LoadPageParameters; PDFJS_LoadPage(promise.PromiseHandle, parameters.document.NativePointer.ToInt32(), parameters.pageIndex + 1); while (!pagePromise.HasReceivedJSResponse) { yield return(null); } if (pagePromise.HasSucceeded) { int pageHandle = int.Parse(pagePromise.JSObjectHandle); PDFPage page = new PDFPage(parameters.document, new IntPtr(pageHandle), parameters.pageIndex); pagePromise.Result = page; pagePromise.HasFinished = true; promiseCoroutine.ExecuteThenAction(true, page); } else { pagePromise.Result = null; pagePromise.HasFinished = true; promiseCoroutine.ExecuteThenAction(false, null); } }