public static bool FPDF_SaveAsCopy(IntPtr document, FPDF_FILEWRITE saveData, int flag)
 {
     lock (LockObj)
     {
         return(Imports.FPDF_SaveAsCopy(document, saveData, flag));
     }
 }
Exemple #2
0
        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());
            }
        }
 public static extern bool FPDF_SaveAsCopy(IntPtr document, [MarshalAs(UnmanagedType.LPStruct)] FPDF_FILEWRITE saveData, int flag);