springboot 实现pdf 打印和预览
程序:
pdf封装实体:控制层:
<!-- pdf 实现 --> <dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.13</version>
</dependency>
<dependency>电脑远程监控
<groupId>l</groupId>
<artifactId>xmlworker</artifactId>
<version>5.5.13</version>
</dependency>
package stpoi.pojo;import lombok.Data;
import lombok.Getter;import lombok.Setter;
@Data
@Getter
@Setter
public class PdfEntity {
private String dogNo;
private String name;
private Integer age;
private Integer dogYear;private String brithday;花季年华
友谊的谊private String reason;
private String remark;
private String level;
private String ability;
private String summary;
}
package ller;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.URLEncoder;
import java.util.HashMap;
import java.util.Map;
import javax.rvlet.http.HttpServletRespon;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponBody;
import Document;
import DocumentException;
import pdf.AcroFields;
import pdf.BaFont;
import pdf.PdfCopy;
import pdf.PdfImportedPage;
import pdf.PdfReader;
import pdf.PdfStamper;
import stpoi.pojo.PdfEntity;
@Controller
public class PDFController {
@RequestMapping("/createPDF")
@ResponBody
public String createPDF(HttpServletRespon respon) throws DocumentException {
// 模板路径关于路径最好放在配置⽂件中,我这⾥只想说明问题
String templatePath = "C:\\Urs\\zy962\\Desktop\\temp.pdf";
// ⽣成⽂件路径
String filename = "testpdf.pdf";
/
/ 创建对象
PdfEntity entity = new PdfEntity();
entity.tDogNo("NO123456");
entity.tName("周毅");
entity.tAge(26);
entity.tDogYear(4);
entity.tBrithday("93.11.18");
entity.tReason("已经失去了追⼈的能⼒。陷⼊了⼀个死循环:我主动找她吧,要是对我没感觉,找了不理我怎么办?于是还没尝试,就不去招惹别⼈了。" entity.tRemark("并不是每⼀个单⾝的⼈,都代表可撩的状态,有的⼈早已经对恋爱不抱什么希望。只想好好学习,好好⼯作,然后发财。");
entity.tLevel("到了我这种境界后,就可以和寂寞和睦相处。若有了独⾃活下去的觉悟,慢慢变⽼也会充满乐趣。");
entity.tAbility("⾮常羡慕那些能⼀喜欢/⼀追就是⼏年的⼈,这种恒⼼,在他来说,⼀个⽉、不⼀个周都做不到,两天应该也许⼤概能做到。");
entity.tSummary("综上结论,⾯向对象是不存在的,⾯向过程是不存在的,汪汪汪⼀只。");
Map<String, Object> datas = new HashMap<String, Object>();
datas.put("name", Name());
datas.put("dogNo", DogNo());
datas.put("age", Age());
datas.put("dogYear", DogYear());
datas.put("brithday", Brithday());
datas.put("reason", Reason());
datas.put("remark", Remark());
datas.put("level", Level());
datas.put("ability", Ability());
datas.put("summary", Summary());
PdfReader reader;
OutputStream os = null;
ByteArrayOutputStream baos = null;
PdfStamper stamper;
try {
os = OutputStream();
// 读⼊pdf表单
reader = new PdfReader(templatePath);
baos = new ByteArrayOutputStream();
梦见家里人去世
/
/ 根据表单⽣成⼀个新的pdf
//
根据表单⽣成⼀个新的pdf
stamper = new PdfStamper(reader, baos);
// 获取pdf表单
AcroFields formTexts = AcroFields();
// 设置字体(这⾥设置为系统字体,你也可以引⼊其他的字体),不设置很可能,中⽂⽆法显⽰。
BaFont bf = ateFont("C:/WINDOWS/Fonts/SIMSUN.TTC,1",
BaFont.IDENTITY_H, BaFont.EMBEDDED);
formTexts.addSubstitutionFont(bf);
// 数据查询后,值的植⼊强烈推荐键值⽅式,其他⽅式很容易混
Set<String> keySet = datas.keySet();
for (String key : keySet) {
formTexts.tField(key, (key).toString());
}
stamper.tFormFlattening(true); // 这个必须设
stamper.clo();
// 创建⼀个pdf实例
做什么可以赚钱Document document = new Document();
PdfCopy copy = new PdfCopy(document, os);
document.open();
PdfImportedPage importedPage = ImportedPage(new ByteArray()), 1);
copy.addPage(importedPage);
爆破音
document.clo(); // open和clo⼀套
/
/ 强制下载
//();
respon.tContentType("application/pdf");
respon.tHeader("Content-Disposition", "attachment;fileName="
+ de(filename, "UTF-8"));
} catch (IOException e) {
e.printStackTrace();
优秀网格员事迹材料
} finally { // 最后⼀定要关闭流
try {
baos.clo();
os.clo();
} catch (Exception e) {
e.printStackTrace();
}
}
return "成功,请去查看";
}
}
还有就是这种设置具体位置也有可能会⽤到的。
// 通过域名获取所在页和坐标,左下⾓为起点
String imgpath="e:/aa.png";
int pageNo = FieldPositions("img").get(0).page;
Rectangle signRect = FieldPositions("img").get(0).position; float x = Left();
float y = Bottom();
// 读图⽚
Image image = Instance(imgpath);
// 获取操作的页⾯
PdfContentByte under = ps.getOverContent(pageNo);
// 根据域的⼤⼩缩放图⽚
含有天的成语image.Width(), Height());
/
/ 添加图⽚
image.tAbsolutePosition(x, y);
under.addImage(image);