用itextpdf 赋值不显示,大家来帮忙,看哪里有问题!

TianNi 2014-11-07 11:14:12
以下为jsp代码,附件是我制作的pdf用的是Adobe Acrobat 8 Professional
建立的是文本域,stamp.setFormFlattening(false); 这句话很关键
如果我设置true那么出来的就是原来的模板,没有我的赋值,但是我设置false
显示出来也没有值,但是你用鼠标点文本域,就能显示值,打印还打印不了,请问怎么解决呢,
我想能显示,能打印。
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ include file="/common/includeHead.jsp"%><%@ page contentType="application/pdf;charset=GB2312"%>
<%@ page import="java.util.List"%>
<%@ page import=" com.vstsoft.da.he.pojo.HePojo"%>
<%@ page import="java.io.ByteArrayOutputStream"%>
<%@ page import="com.lowagie.text.Document"%>
<%@ page import="com.lowagie.text.DocumentException"%>
<%@ page import="com.lowagie.text.pdf.AcroFields"%>
<%@ page import="com.lowagie.text.pdf.PdfCopy"%>
<%@ page import="com.lowagie.text.pdf.PdfImportedPage"%>
<%@ page import="com.lowagie.text.pdf.PdfReader"%>
<%@ page import="com.lowagie.text.pdf.PdfStamper"%>
<%@ page import="com.lowagie.text.pdf.PdfContentByte"%>
<%@ page import="com.lowagie.*"%>
<%@ page import="java.awt.Color"%>
<%@ page import="java.io.*"%>
<%@ page import="com.lowagie.text.Font"%>
<%@ page import="com.lowagie.text.pdf.BaseFont"%>
<%
HePojo he = (HePojo)request.getAttribute("he");
response.reset();
ByteArrayOutputStream ba = new ByteArrayOutputStream();
try {
/* 打开已经定义好字段以后的pdf模板 */
String TemplatePDF = "c:/test/test.pdf";
PdfReader reader = new PdfReader(TemplatePDF);
/* 使用中文字体
BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",
BaseFont.NOT_EMBEDDED);
Font FontChinese = new Font(bf, 12, Font.NORMAL); */
/* 将要生成的目标PDF文件名称 */
PdfStamper stamp = new PdfStamper(reader, ba);

PdfContentByte under = stamp.getUnderContent(1);

/* 使用中文字体 */

/* 取出报表模板中的所有字段 */
AcroFields form = stamp.getAcroFields();

/* 为字段赋值,注意字段名称是区分大小写的 */
form.setField("b1", "12");
form.setField("b2", "果想出来让IE提示你是打开还是");
//form.setField("b3", "如果想出来让IE提示你是打开还是保存的对话框,加上下面这句就可以了如果想出来让IE提示你是打开还是保存的对话框,加上下面这句就可以了");
//form.setField("age", "123陈杉陈杉陈杉");
stamp.setFormFlattening(false);
/* 必须要调用这个,否则文档不会生成的 */
stamp.close();
} catch (DocumentException de) {
de.printStackTrace();
System.err.println("A Document error:" + de.getMessage());
}
response.setContentType("application/pdf");
/* 如果想出来让IE提示你是打开还是保存的对话框,加上下面这句就可以了 */
// response.setHeader("Content-disposition","attachment; filename="
// +"report.pdf" );
response.setContentLength(ba.size());
try {
ServletOutputStream out1 = response.getOutputStream();
ba.writeTo(out1);
out1.flush();
out1.close();
ba.close();
} catch (IOException e) {
e.printStackTrace();
System.err.println("A Document error:" + e.getMessage());
}

%>
...全文
843 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
kraft2020 2017-01-11
  • 打赏
  • 举报
回复
不显示 是因为字体有问题 java 重新 设置一遍字体就可以了 s.setFieldProperty("entpName","textfont",bf,null); //设置中文格式
kraft2020 2017-01-11
  • 打赏
  • 举报
回复
s.setFieldProperty("entpName","textfont",bf,null); //设置中文格式 s.setField("entpName", "测试");//设置值

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧