The problem is with this line:
l_file := UTL_FILE.fopen('IRB','STD_FlipBook_Religion2013.doc','wb','W');
The docs show the signature of the function below. The last parameter you have, 'W', corresponds to the 'max_linesize', which is expected to be a number. So, you cannot convert 'W' to a number. I think you can simply use the default value in your case, so just remove the 'W' parameter.
(from Oracle 9.2 docs)
FOPEN Function This function opens a file. You can specify the maximum line size and have a maximum of 50 files open simultaneously. See also "FOPEN_NCHAR Function".
Syntax UTL_FILE.FOPEN ( location IN VARCHAR2, filename IN VARCHAR2, open_mode IN VARCHAR2, max_linesize IN BINARY_INTEGER) RETURN file_type;
Parameters Table 95-3 FOPEN Function Parameters Parameter Description location Directory location of file.
filename File name, including extension (file type), without directory path. In Unix, the filename cannot end with /.
open_mode Specifies how the file is opened. Modes include:
r--read text
w--write text
a--append text
If you try to open a file that does not exist using a value for open_mode, then the file is created in write mode.
max_linesize Maximum number of characters per line, including the newline character, for this file. (minimum value 1, maximum value 32767). The default is approximately 1000 bytes.