Как прочитать PDF-файл онлайн и сохранить на локальном компьютере, используя java - PullRequest
0 голосов
/ 27 января 2020

Привет. Я пытался прочитать PDF-файл онлайн, но после чтения и записи на локальном компьютере. после просмотра документа я получаю сообщение об ошибке, что содержимое не поддерживается.

 URL url1 =
              new URL("http://www.gnostice.com/downloads/Gnostice_PathQuest.pdf");

            byte[] ba1 = new byte[1024];
            int baLength;
            FileOutputStream fos1 = new FileOutputStream("/mnt/linuxabc/research_paper/Gnostice_PathQuest.pdf");

            try {
              URLConnection urlConn = url1.openConnection();
         /*     if (!urlConn.getContentType().equalsIgnoreCase("application/pdf")) {
                  System.out.println("FAILED.\n[Sorry. This is not a PDF.]");
              } else {*/
                try {
                  InputStream is1 = url1.openStream();
                  while ((baLength = is1.read(ba1)) != -1) {
                      fos1.write(ba1, 0, baLength);
                  }
                  fos1.flush();
                  fos1.close();
                  is1.close();


                } catch (ConnectException ce) {
                  System.out.println("FAILED.\n[" + ce.getMessage() + "]\n");
                }
             // }

Ответы [ 2 ]

1 голос
/ 27 января 2020

Ваша PDF-ссылка фактически перенаправляет на https://www.gnostice.com/downloads.asp, поэтому непосредственно за ссылкой нет pdf-файла.

Попробуйте с другой ссылкой: сначала проверьте в браузере по вашему выбору, который вызывает URL-адрес PDF-файла отображает настоящий PDF-файл в браузере.

Код ниже практически такой же, как ваш, за исключением URL-адреса PDF-файла и пути вывода, и я также добавляю исключения в сигнатуру основного метода и просто печать типа содержимого.

Работает должным образом:

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

        URL pdfUrl = new URL("http://www.crdp-strasbourg.fr/je_lis_libre/livres/Anonyme_LesMilleEtUneNuits1.pdf");
        byte[] ba1 = new byte[1024];
        int baLength;
        try (FileOutputStream fos1 = new FileOutputStream("c:\\mybook.pdf")) {
            URLConnection urlConn = pdfUrl.openConnection();
            System.out.println("The content type is: " + urlConn.getContentType());

            try {
                InputStream is1 = pdfUrl.openStream();
                while ((baLength = is1.read(ba1)) != -1) {
                    fos1.write(ba1, 0, baLength);
                }
                fos1.flush();
                fos1.close();
                is1.close();


            } catch (ConnectException ce) {
                System.out.println("FAILED.\n[" + ce.getMessage() + "]\n");
            }
        }
    }
}

Вывод:

Тип содержимого: application / pdf

0 голосов
/ 27 января 2020
  private static String readPdf() throws MalformedURLException, IOException {
        URL url = new URL("https://colaboracion.dnp.gov.co/CDT/Sinergia/Documentos/Informe%20al%20Congreso%20Presidencia%202017_Baja_f.pdf");
        BufferedReader read = new BufferedReader(
                new InputStreamReader(url.openStream()));
        String i;
        StringBuilder stringBuilder = new StringBuilder();
        while ((i = read.readLine()) != null) {
            stringBuilder.append(i);
        }
        read.close();
        return stringBuilder.toString();
    }
...