Find supports `-o`
find \! '(' -name '*.txt' -o -name '*.pdf' ')'
You need the parenthesis to make the precedence right. Find does a lot of stuff; I suggest reading through its manpage.
You can also do an or in `grep` (but really, you shouldn't parse the output of `ls`)
ls | egrep -v '\.(txt|pdf)$' | column