In one sentence you use the variable name “pdf_file” and in the other you use “pdf_filename”. Is this just a typo and you use the right variable in the code?
If you put a breakpoint on that line, have you verified the contents of pdf_filename is in fact what you think it is?
I tend to prefer not using delimiters like “\” but build my way out to the final path component using .Child() references because it is more multi-platform friendly.
Edit: Escaped the backslash character so the shows up in the reply.