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 [should not parse the output of `ls`](http://mywiki.wooledge.org/ParsingLs))
ls | egrep -v '\.(txt|pdf)$' | column