Java - чтение и запись в Pdf, который отображается в окне браузера

У меня есть сценарий для автоматизации с помощью Selenium WebDriver Java:
Веб-страница содержит некоторые данные о клиентах. В нем есть ссылка Преобразовать в PDF, чтобы преобразовать этот список клиентов в защищенный формат PDF. Я должен убедиться, что список клиентов, указанный в документе PDF, соответствует списку, отображаемому на веб-странице.

Selenium WebDriver имеет возможность взаимодействовать с элементами, присутствующими в DOM браузера. Поэтому для взаимодействия с PDF-документом, отображаемым в окне браузера, мне нужна другая утилита Java, которая может извлекать данные, присутствующие в этом PDF-документе. Помогите пожалуйста, если кто уже сталкивался с подобным. Заранее спасибо.

Спасибо,
Ситам


person Sitam Jana    schedule 09.02.2014    source источник
comment
Вы имеете в виду, что вам нужно пройти проверку на сервере, прежде чем он отправит pdf в клиентский браузер? Или на клиенте пока рендерится? Или pdf включает в себя форму, которая отправляется клиентским браузером на сервер, и вам нужно проверить опубликованные данные?   -  person mkl    schedule 10.02.2014
comment
Мне нужно проверить pdf в клиентском браузере. В основном сценарий таков: на странице браузера есть ссылка для печати. При нажатии он отображает PDF-документ в окне браузера. Я должен проверить содержимое внутри этого PDF-документа.   -  person Sitam Jana    schedule 10.02.2014
comment
Как вы хотите выполнить программу Java в клиентском браузере? Сервлет в другой вкладке или окне? Отдельная Java-программа? (Или вы на самом деле имеете в виду Java Script в браузере? Или в PDF?)   -  person mkl    schedule 10.02.2014
comment
Извиняюсь! Я думаю, мой вопрос был не так ясен! Отредактировано :)   -  person Sitam Jana    schedule 10.02.2014
comment
Какой просмотрщик PDF следует использовать? Плагин Adobe Reader? Встроенные в браузер просмотрщики? Что-то другое?   -  person mkl    schedule 10.02.2014
comment
Итак, я добавил теги [selenium] и [adobe-reader] к вашему вопросу. Я сомневаюсь, однако, что плагин Adobe Reader достаточно дистанционно управляем для такого теста. Возможно, лучшим тестом было бы извлечь PDF-файл и проанализировать его напрямую, а не через отображающую программу просмотра PDF-файлов.   -  person mkl    schedule 10.02.2014


Ответы (1)


Для чтения из файла PDF вы можете использовать традиционный API FileReader.

import java.io.*;    

public class FileRead {


    public static void main(String[] args) throws IOException {


        File f=new File("C:\\Documents and Settings\\abc\\Desktop\\abc.pdf");

        OutputStream oos = new FileOutputStream("test.pdf");

        byte[] buf = new byte[8192];

        InputStream is = new FileInputStream(f);

        int c = 0;

        while ((c = is.read(buf, 0, buf.length)) > 0) {
            oos.write(buf, 0, c);
            oos.flush();
        }

        oos.close();
        System.out.println("stop");
        is.close();

    }
}

Вы можете передать этот поток пользовательскому интерфейсу или напрямую передать путь к файлу пользовательскому интерфейсу, с помощью которого он может получить доступ к файлу. Чтобы написать или обновить файл PDF, вы можете использовать библиотеки itext/pd4ml. Обе работают довольно хорошо.

Ссылки:

Itext

PD4ML

person Pankaj    schedule 09.02.2014