Я пытаюсь открыть файл PDF, экспортированный из репозитория. Вот код, который я использую:

ConnectionManager con = new ConnectionManager();
String id = request.getParameter("uname"); 
String objname = request.getParameter("pass");
Properties prop = new Properties();
//ResourceBundle resource = ResourceBundle.getBundle("query");
//prop.load(getClass().getResourceAsStream("query.properties"));
String uname = "DmAdmin";
String pass = "<pass>";
String docbase = "QDocs";
String ext = new String();
IDfSession ssn = con.getSession(uname, pass, docbase);
sysObj = (IDfSysObject)ssn.getObject((IDfId)new DfId(id));
//ByteArrayInputStream buf = sysObj.getContent();
//sysObj.getFile("C:\\Users\\rsaha04\\Downloads\\"+objname+".pdf");
String path = "C:\\Users\\rsaha04\\Downloads\\";
String filename = path + sysObj.getObjectName().toString();

IDfCollection coll = sysObj.getRenditions(null);
if (coll != null)
{
    while (coll.next())
    {
        String format = coll.getString("full_format");
        {
            if (format.equalsIgnoreCase("pdf"))
            {
                ext = "pdf";
                System.out.println("extension set: "+ext);
            }
        }
    }
    
    filename = filename+"."+ext;
    sysObj.getFileEx(filename, ext, 0, false);
}
con.closeConnection(ssn);
//Process p = Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler "+filename);
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "inline; filename='"+filename+"'");

Я могу открыть файл pdf в Adobe Acrobat Reader, но он не работает в браузере с этой ошибкой. введите описание изображения здесь

Пожалуйста, помогите мне понять, в чем я ошибаюсь.

0
Zeus07 3 Дек 2020 в 18:16

1 ответ

Лучший ответ

Вам нужно, чтобы ваш сервер ответил файлом pdf. Вы устанавливаете заголовки ответа, но ваш код никогда не записывает данные PDF в ответ.

Сделайте это, используя

response.write(bytesFromPdfFile)
1
f1sh 3 Дек 2020 в 17:24