相关文章推荐
无邪的八宝粥  ·  Java下载PDF实践·  13 小时前    · 
深沉的蚂蚁  ·  Mono.defualtEmpty()与Mo ...·  3 月前    · 
独立的草稿本  ·  vtkTexturedSphereSourc ...·  9 月前    · 
爱逃课的李子  ·  list.stream().filter() ...·  10 月前    · 
小眼睛的西装  ·  Matrix.MapPoints ...·  1 年前    · 
@RequestMapping(value = "/saveDate") @ResponseBody public void saveDate(String url, HttpServletRequest request,HttpServletResponse response){ try { //这里我获取当前时间 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");//20180315104140 String timeStamp = sdf.format(new Date(); URL url = new URL(url); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); //设置超时间为3秒 conn.setConnectTimeout(30000); conn.setConnectTimeout(30000); conn.setDoOutput(true); conn.setRequestProperty("Connection", "Keep-Alive"); // 设置是否从httpUrlConnection读入,默认情况下是true; conn.setDoInput(true); //防止屏蔽程序抓取而返回403错误 conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)"); //得到输入流 InputStream in = conn.getInputStream(); //根据时间设置文件名 timeStamp=timeStamp+ ".pdf"; //响应输出流,让用户自己选择保存路径 报文头 可以根据自己下载的文件格式去查询响应的报文头 response.addHeader("Content-disposition", "attachment; filename=\""+timeStamp+"\""); response.setContentType("application/pdf"); byte[] buffer = new byte[1024]; int bytesRead = -1; while ((bytesRead = in.read(buffer)) != -1) { response.getOutputStream().write(buffer, 0, bytesRead); in.close(); }catch (Exception e){ e.printStackTrace(); }finally { try { in.close(); } catch (IOException ex) { logger.error(ex.getMessage(), ex); try { out.close(); } catch (IOException ex) { logger.error(ex.getMessage(), ex); [liushuangxi/htmlto pdf ] (https://github.com/liushuangxi/htmlto pdf ) 提供了 url 转成 pdf ,image的方法 composer require li... <groupId>org.apache. pdf box</groupId> <artifactId> pdf box</artifactId> <version>2.0.19</version> </dependency> public void g static float pageWidth = 594.0f; static float pageDepth = 828.0f; static float pageMargin = 30.0f; static float fontSize = 20.0f; static float leadSize = 10.0f; static StreamWriter p PDF =new StreamWriter("E:\my PDF . pdf "); static MemoryStream m PDF = new MemoryStream(); static void ConvertToByteAndAddtoStream(string strMsg) Byte[] buffer=null; buffer=ASCIIEncoding.ASCII.GetBytes(strMsg); m PDF .Write(buffer,0,buffer.Length); buffer=null; static string xRefFormatting(long xValue) string strMsg =xValue.ToString(); int iLen=strMsg.Length; if (iLen<10) StringBuilder s=new StringBuilder(); int i=10-iLen; s.Append('0',i); strMsg=s.ToString() + strMsg; return strMsg; static void Main(string[] args) ArrayList xRefs=new ArrayList(); //Byte[] buffer=null; float yPos =0f; long streamStart=0; long streamEnd=0; long streamLen =0; string str PDF Message=null; // PDF 文档头信息 str PDF Message="% PDF -1.1 "; ConvertToByteAndAddtoStream(str PDF Message); xRefs.Add(m PDF .Length); str PDF Message="1 0 obj "; ConvertToByteAndAddtoStream(str PDF Message); str PDF Message="<> "; ConvertToByteAndAddtoStream(str PDF Message); str PDF Message="stream "; ConvertToByteAndAddtoStream(str PDF Message); //////// PDF 文档描述 streamStart=m PDF .Length; str PDF Message="BT /F0 " + fontSize +" Tf "; ConvertToByteAndAddtoStream(str PDF Message); // PDF 文档实体高度 yPos = pageDepth - pageMargin; str PDF Message=pageMargin + " " + yPos +" Td " ; ConvertToByteAndAddtoStream(str PDF Message); str PDF Message= leadSize+" TL " ; ConvertToByteAndAddtoStream(str PDF Message); //实体内容 str PDF Message= "(http://www.wenhui.org)Tj " ; ConvertToByteAndAddtoStream(str PDF Message); str PDF Message= "ET "; ConvertToByteAndAddtoStream(str PDF Message); streamEnd=m PDF .Length; streamLen=streamEnd-streamStart; str PDF Message= "endstream endobj "; ConvertToByteAndAddtoStream(str PDF Message); // PDF 文档的版本信息 xRefs.Add(m PDF .Length); str PDF Message="2 0 obj "+ streamLen + " endobj "; ConvertToByteAndAddtoStream(str PDF Message); xRefs.Add(m PDF .Length); str PDF Message="3 0 obj <> endobj "; ConvertToByteAndAddtoStream(str PDF Message); xRefs.Add(m PDF .Length); str PDF Message="4 0 obj <</Type /Pages /Count 1 "; ConvertToByteAndAddtoStream(str PDF Message); str PDF Message="/Kids[ 3 0 R ] "; ConvertToByteAndAddtoStream(str PDF Message); str PDF Message="/Resources<</ProcSet[/ PDF /Text]/Font<> >> "; ConvertToByteAndAddtoStream(str PDF Message); str PDF Message="/MediaBox [ 0 0 "+ pageWidth + " " + pageDepth + " ] >> endobj "; ConvertToByteAndAddtoStream(str PDF Message); xRefs.Add(m PDF .Length); str PDF Message="5 0 obj <> endobj "; ConvertToByteAndAddtoStream(str PDF Message); xRefs.Add(m PDF .Length); str PDF Message="6 0 obj <> endobj "; ConvertToByteAndAddtoStream(str PDF Message); streamStart=m PDF .Length; str PDF Message="xref 0 7 0000000000 65535 f "; for(int i=0;i<xRefs.Count;i++) str PDF Message+=xRefFormatting((long) xRefs[i])+" 00000 n "; ConvertToByteAndAddtoStream(str PDF Message); str PDF Message="trailer <> "; ConvertToByteAndAddtoStream(str PDF Message); str PDF Message="startxref " + streamStart+" %%EOF "; ConvertToByteAndAddtoStream(str PDF Message); m PDF .WriteTo(p PDF .BaseStream); m PDF .Close(); p PDF .Close(); var url to pdf = require ( ' url to pdf ' ) ; url to pdf . to pdf ( url , output , option - object , callback ) //Example -> url to pdf . to pdf ( 'https://regrob.com/' , 'null. pdf ' , { 'page-size' : 'A3' } , function ( err , std ) { if ( err ) { console . log ( err ) ; //handle error } else { console . log ( 1 ) console . log ( std , std . output ) ; Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Url Mon; TForm1 = class(TForm) Button1: TButto
在Spring Boot中 导出 PDF 文件 可以使用第三方库,比如iText或Apache PDF Box。以下是使用iText进行 PDF 导出 的示例代码: 首先,需要将iText库添加到项目的依赖中。在pom.xml 文件 中添加以下依赖: ```xml <dependency> <groupId>com.itext pdf </groupId> <artifactId>itext pdf </artifactId> <version>5.5.13</version> </dependency> 接下来,创建一个用于 导出 PDF 的控制器,在该控制器中定义一个处理请求的方法。在方法中使用iText库来生成 PDF 文件 。 ``` java import com.itext pdf .text.Document; import com.itext pdf .text.DocumentException; import com.itext pdf .text.Paragraph; import com.itext pdf .text. pdf . Pdf Writer; import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import java x.servlet.http.HttpServletResponse; import java .io.IOException; import java .io.OutputStream; @Controller public class Pdf Controller { @GetMapping("/export pdf ") public void export Pdf (HttpServletResponse response) throws IOException, DocumentException { response.setContentType(MediaType.APPLICATION_ PDF _VALUE); response.setHeader("Content-Disposition", "attachment; filename=example. pdf "); Document document = new Document(); OutputStream outputStream = response.getOutputStream(); Pdf Writer.getInstance(document, outputStream); document.open(); document.add(new Paragraph("Hello, World!")); document.close(); outputStream.close(); 在上述代码中,我们使用`@GetMapping`注解来处理GET请求,并指定了 导出 PDF URL 为`/export pdf `。在`export Pdf `方法中,我们首先设置响应的内容类型为 PDF ,然后设置响应头部的Content-Disposition,指定 文件 名为example. pdf 。 接下来,创建一个`Document`实例,并使用` Pdf Writer`将文档写入输出流中。在文档中添加内容,这里我们添加了一个简单的段落"Hello, World!"。最后关闭文档和输出流。 当访问`/export pdf ` URL 时,将会 下载 一个名为example. pdf PDF 文件 ,其中包含"Hello, World!"的内容。 这只是一个简单的示例,你可以 根据 实际需求来生成更复杂的 PDF 文件 。希望对你有所帮助!
[code=java] response.addHeader("Content-disposition", "attachment; filename=\""+timeStamp+"\""); //这样写是因为报文在响应火狐浏览器时,火狐浏览器会对后台的文件名判断 如果文件名中有空格 就直接 空格以后就被 [/code]