As pointed out by @ThomasDickey, you need to pass
-f option, in order to include the trace of all the threads.
clone() syscalls are creating new threads, not processes, but you still need
-f to have
strace follow threads.)
Once you're following all threads, the
open becomes aparent, opening the file in read-only mode, on file descriptor 19:
open("/home/xytao/folder1/test.pdf", O_RDONLY) = 19
The contents of the file are read using a succession of
pread calls into a small 256 character buffer, the first of which gets the
pread(19, "%PDF-1.3\r\n%\241\263\305\327\r\n3 0 obj\r\n<</Fil"..., 256, 0) = 256
If you go through the trace, you'll see it will then
lseek to the end of the file (to determine file size), then read a couple of blocks of data from there. I assume that's information about the pages in the document.
preads happen at offsets in the middle of the file, but all of them seem to start with some information about "page", so I assume that's evince figuring out about the pages in the PDF document, probably using offsets it got from the end of the file.