How to reclaim the unused Space in a database
Is there a particular reason you are specifying TRUNCATEONLY?  As per the documentation on DBCC SHRINKFILE:


  TRUNCATEONLY  
  
  Releases all free space at the end of the file to the operating system
  but does not perform any page movement inside the file. The data file
  is shrunk only to the last allocated extent. 
  
  target_size is ignored if specified with TRUNCATEONLY.


If that is not the intended behavior you were looking for (which it doesn't sound like it is), then you could try without that option set.

Also, there are other factors that hinder database file shrinking as well, such as text`ntext\image` BLOB data.  So it is worth looking into the possibility of the existence of data with these data types.