@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
文件
。希望对你有所帮助!