如何使用 java 在线阅读 pdf 文件并保存在本地机器上

how to read a pdf file online and save on local machine using java

您好,我试图在线阅读 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");
                }
             // }
  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();
    }

你的 Pdf Link 实际上重定向到 https://www.gnostice.com/downloads.asp,所以 link.

后面没有直接的 pdf

尝试另一个 link:首先在您选择的浏览器中检查调用 pdf 的 url 在浏览器中呈现真实的 pdf。

除了 pdf 的 url 和输出路径之外,下面的代码实际上与您的代码相同,我还在主要方法的签名中添加异常抛出并简单地打印内容类型。

它按预期工作:

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