【问题标题】:Certain PDF files are not downloading correctly某些 PDF 文件未正确下载
【发布时间】:2019-02-05 05:29:57
【问题描述】:

我在 JAVA 方面的经验很少(我的第一个真正的程序工作)一直在寻找解决方案几个小时。我已经编写了一个小程序来从链接下载 PDF 文件。它适用于大多数链接,但其中一些不起作用。

所有有效链接的连接类型显示为 application/pdf,但某些链接出于某种原因显示 text/html 的连接。

我一直在尝试使用我可以在网上找到的任何东西重写代码,但我一直得到相同的结果。

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.net.ConnectException;
import java.net.URL;
import java.net.URLConnection;

public class Main {

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

    String link = "https://www.menards.com/main/items/media/UNITE051/SDS/SpectracideVegetationKillerReadyToUse2-228-714-8845-SDS-Feb16.pdf";
    String fileName = "File Name.pdf";

    URL url1 = new URL(link);

    try {
        URLConnection urlConn = url1.openConnection();
        byte[] buffer = new byte[1024];
        double downloaded = 0.00;
        int read = 0;

        System.out.println(urlConn.getContentType()); // This shows as text/html but it should be PDF

        FileOutputStream fos1 = new FileOutputStream(fileName);
        BufferedInputStream is1 = new BufferedInputStream(urlConn.getInputStream());
        BufferedOutputStream bout = new BufferedOutputStream(fos1, 1024);

        try {

            while ((read = is1.read(buffer, 0, 1024)) >= 0) {
                bout.write(buffer, 0, read);
                downloaded += read;
            }

            bout.close();
            fos1.flush();
            fos1.close();
            is1.close();

        } catch (Exception e) {}
    } catch (Exception e) {}

}

}

我需要能够从代码中的链接下载 PDF。

这是保存在 PDF 文本文档中的内容:

<html>
<head>
<META NAME="robots" CONTENT="noindex,nofollow">
<script src="/_Incapsula_Resource?SWJIYLWA=5074a744e2e3d891814e9a2dace20bd4,719d34d31c8e3a6e6fffd425f7e032f3">
</script>
<body>
</body></html>

【问题讨论】:

  • 我想知道它的文本响应是什么,是否有可能由于某种原因,基于您的 java 用户代理,只有某些链接返回 403?
  • 您应该将pdf文件下载为二进制而不是文本
  • 不要抓到 NPE 的
  • 当我将文件保存为显示为 html 的文本时。

标签: java html pdf


【解决方案1】:

网站实施了一项检查,以确保我使用的是浏览器。我从 chrome 复制了用户代理,它允许我下载 PDF。

【讨论】:

    【解决方案2】:

    您获取的 URL 未指向 PDF 文件。它指向嵌入 PDF 文件的 HTML 文件。您可能需要仔细查看 PDF 文件的 URL。你的代码似乎没问题。

    只需在 URL 上做一个 cURL 并查看。它很可能会返回一个 HTML 文件。

    【讨论】:

    • 这就是我的想法,但对我来说没有意义。当我从浏览器下载 PDF 时,我得到与下载链接相同的链接。该链接本身也有一个 PDF 扩展名。 PDF 页面上的源代码与其他也可以使用的 PDF 文件类似。有没有办法下载嵌入式 PDF 看看是否可行?
    猜你喜欢
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-03
    • 2015-05-16
    相关资源
    最近更新 更多