To będzie ciężka sprawa, być może znalazłeś jakiś bug w funkcji ShellExecute :d
Oto kawałek mojego helpa z Delphi:
"print" - The function prints the file specified by lpFile. The file should be a document file. If the file is an executable file, the function opens the file, as if "open" had been specified.
Jeżeli dobrze znam angielski to z tego wynika że ShellExecute traktuje pliki .pdf jak pliki wykonywalne :D
Nie wiem czy dużo można na to poradzić, może zaimportować kontrolkę pdf.ocx (Menu Component->Import ActiveX control->Acrobat Control for ActiveX), ale jak to zrobiłem i ustawiłem jej właściwość Visible na false to i tak nie chciała nic drukować (drukowanie działa tylko gdy kontrolka jest widoczna na formie :/ ).