如何在本地文件中下载PDF作为pdf?

时间:2014-10-15 14:26:15

标签: java pdf download

我正在尝试将以下网址作为pdf文件下载到本地文件夹中。

http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1498781&tag=1

到目前为止,我所尝试的是:

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;

public class DownloadPDF {

    public DownloadPDF () {}


    public static String download (String link, String i) {
         String save = null;

         try{
             String file = link;
             URL url = new URL(file);
             InputStream in = url.openStream();
             save = "local_folder/name.pdf";    
             FileOutputStream fos = new FileOutputStream(new File(save));

             int length = -1;
             byte[] buffer = new byte[1024];

            while ((length = in.read(buffer)) > -1) {
                 fos.write(buffer, 0, length);
            }
            fos.close();
            in.close();
            System.out.println("file is downloaded");

       } catch (IOException e) {
            e.printStackTrace();
       }
       return save;
    }  
}

这适用于:

http://ongambling.org/wp-content/uploads/2011/02/binde-2005-jgs-postprint.pdf

但是对于上面给出的第一个网址不起作用?还有其他建议吗?

3 个答案:

答案 0 :(得分:4)

的第一个网址对应于pdf文件。当您实际转到该页面时,您只需选择sign-inpurchase,即可。现在,如果您偶然购买了pdf,那么页面会重新引导您进入它的在线版本;您将不得不通过Java查看网页上的身份验证。这样的问题一直是Discussed before

答案 1 :(得分:0)

您无法简单地下载HTML页面并使用.pdf保存以将其转换为PDF。您必须使用库或somme来将HTML页面转换为PDF。

它适用于第二个网址,因为它已经是PDF,因此您可以在下载时保存它。

答案 2 :(得分:-1)

你在点击你的网址时渲染你的pdf,这将是最好的选择。或者检查参数然后

试试这个

            ByteArrayOutputStream outByteStream = new ByteArrayOutputStream();
            hwb.write(outByteStream);
            byte [] outArray = outByteStream.toByteArray();
            response.setContentType("application/pdf");
            response.setContentLength(outArray.length);
            response.setHeader("Expires:", "0"); // eliminates browser caching
            response.setHeader("Content-Disposition", "attachment; filename="+fname);
            OutputStream outStream = response.getOutputStream();
            outStream.write(outArray);
            outStream.flush();
            response.sendRedirect("servlet?id=2");