public static IEnumerator UpdatePageWithExistingTexture(PDFDocument document, int pageIndex, Texture2D existingTexture, PDFPageTextureHolder[] pageTextureHolderList) { PDFJS_Promise <PDFPage> pagePromise = document.GetPageAsync(pageIndex); while (!pagePromise.HasFinished) { yield return(null); } if (pagePromise.HasSucceeded) { PDFJS_Promise <Texture2D> renderPromise = PDFRenderer.RenderPageToExistingTextureAsync(pagePromise.Result, existingTexture); pageTextureHolderList[pageIndex].m_RenderingPromise = renderPromise; while (!renderPromise.HasFinished) { yield return(null); } pageTextureHolderList[pageIndex].m_RenderingPromise = null; pageTextureHolderList[pageIndex].m_RenderingStarted = false; if (renderPromise.HasSucceeded) { if (pageTextureHolderList[pageIndex].Texture != null && pageTextureHolderList[pageIndex].Texture != renderPromise.Result) { UnityEngine.Object.DestroyImmediate(pageTextureHolderList[pageIndex].Texture); Resources.UnloadAsset(pageTextureHolderList[pageIndex].Texture); pageTextureHolderList[pageIndex].Texture = null; } if (pageTextureHolderList[pageIndex].m_Visible) { pageTextureHolderList[pageIndex].Texture = renderPromise.Result; } else { UnityEngine.Object.DestroyImmediate(renderPromise.Result); Resources.UnloadAsset(renderPromise.Result); renderPromise.Result = null; } } } else { pageTextureHolderList[pageIndex].m_RenderingPromise = null; pageTextureHolderList[pageIndex].m_RenderingStarted = false; } }