Ecco, proprio nell'ecc... ecc... c'è scritto dov'è che sta il problema, il file che ti dice manda in output qualcosa e questo qualcosa sta prima della funzione header().
Prima della funzione header() non deve esserci alcun tipo di output.

In locale usi lo stesso preciso codice oppure ti sei fatto un fatto un file solo per vedere se il pdf si visualizza e invece online hai una struttura più complessa (tipo include, altro codice prima di quello postato, uso di un CMS...)?