I'm not sure if Net:FTP automatically checks, but maybe it's sending the file in ASCII/text mode instead of binary?
To do this you would just send a $ftp->binary(); command. This sounds like the problem, since a text transfer will end when you get an EOF character - of which a PDF can't guarantee /won't/ show up before the end of the file.