我正在尝试将以下网址作为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
但是对于上面给出的第一个网址不起作用?还有其他建议吗?
答案 0 :(得分:4)
不的第一个网址对应于pdf文件。当您实际转到该页面时,您只需选择sign-in
或purchase
,即可。现在,如果您偶然购买了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");