public List <SizeF> GetPDFDocInfo() { if (_disposed) { throw new ObjectDisposedException(GetType().Name); } int pageCount = NativePdfiumMethods.FPDF_GetPageCount(_document); var result = new List <SizeF>(pageCount); for (int i = 0; i < pageCount; i++) { double height; double width; NativePdfiumMethods.FPDF_GetPageSizeByIndex(_document, i, out width, out height); result.Add(new SizeF((float)width, (float)height)); } return(result); }
public byte[] GetPDFPage(int pageNumber) { if (_disposed) { throw new ObjectDisposedException(GetType().Name); } IntPtr newDocument = NativePdfiumMethods.FPDF_CreateNewDocument(); var bl = NativePdfiumMethods.FPDF_ImportPages(newDocument, _document, pageNumber.ToString(), 0); int pageCount = NativePdfiumMethods.FPDF_GetPageCount(newDocument); using (MemoryStream ms = new MemoryStream()) { FPDF_FILEWRITE saveData = new FPDF_FILEWRITE(); saveData.WriteBlock = (WriteBlockCallback)((pThis, buffer, buflen) => { ms.Write(buffer, 0, buffer.Length); return(true); }); try { NativePdfiumMethods.FPDF_SaveAsCopy(newDocument, saveData, 1); } finally { GC.KeepAlive((object)saveData); } NativePdfiumMethods.FPDF_CloseDocument(newDocument); return(ms.ToArray()); } }