用itextpdf 赋值不显示,大家来帮忙,看哪里有问题!
以下为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());
}
%>
建立的是文本域,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());
}
%>
...全文
相关推荐
itextpdf 解决中文不显示问题
itextpdf 再创将pdf格式文件的时候中文不显示或者乱码问题的解决 其实目前最新版本的itexpdf即使加了asian的辅助包也不能解决中文不显示问题 因为自己试过 可能方式不对 这个绝对显示
ITextPdf表单填充
iTextPDF支持PDF/A标准,确保文档的长期可读性。**中文问题的解决**在处理包含中文字符的PDF表单时,可能会遇到编码问题,导致中文显示为乱码。解决这个问题的关键在于正确设置字体和编码。
itextpdf 导出pdf 表格 自动分页中文 目录
它包含了对CJK(Chinese, Japanese, Korean)字符集的支持,确保在生成PDF时能够正确显示和处理中文文字,解决了在某些情况下中文字符无法正确渲染的问题。3.
itextpdf中文依赖包
使用这个扩展包,我们可以确保中文字符在各种设备和操作系统上都能正确显示,而不会出现乱码或显示不全的情况。为了在iTextPDF中使用`itext-asian`提供的字体,开发者需要进行以下步骤:1.
itextpdf jar包
版本5.5.12是iTextPDF的一个重要版本,它修复了前一版本的一些已知问题,增强了性能和稳定性,并引入了一些新特性。


Web 开发
