Yes, collect the data in datastore, and send once a day. A typical model might be (in python):
class DigestEmail(db.Model):
recipient = db.StringProperty()
pdf_id = db.StringProperty()
sent = db.BooleanProperty(default=False)
Then when you need to send an email from your taskqueue, create a DigestEmail entity. Then, once a day (or whatever), query your DigestEmail entities where sent = False, ordered by recipient, like this:
query = DigestEmail.gql('WHERE sent = False ORDER BY recipient')
Then iterate through your query results and group together by recipient. Send the email, and set the sent property to True to prevent it being sent again. (Alternatively, delete the entities altogether).