- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个代码
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ByteArrayOutputStream output = new ByteArrayOutputStream();
try{
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "inline; filename=details.pdf");
try{
Document document = new Document(PageSize.A4, 20, 20, 130, 20);
PdfWriter writer=PdfWriter.getInstance(document, output);
document.open();
BaseFont bf = BaseFont.createFont("c:/windows/fonts/arialuni.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
writer.setPageEvent(new HeaderAndFooter(date));
XMLWorkerHelper worker = XMLWorkerHelper.getInstance();
List arrlist = new ArrayList();
List arrlist1 = new ArrayList();//user list
List arrlist2 = new ArrayList();//time list
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/765a", "root", "root");
Statement st=con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSet rs=st.executeQuery("SELECT * FROM user_start2 where date='"+date+"' ");
while(rs.next()){
arrlist.add(rs.getString("data"));
arrlist1.add(rs.getString("users"));
arrlist2.add(rs.getString("strtime"));
}
for(int i=0;i<interval+1;i++){
String str =(String) arrlist.get(i);
String str1 ='\n'+(String) arrlist1.get(i);
String str2 =(String) arrlist2.get(i);
String string =str.replace("<p>","\n").replace("</p>", "\n");
document.add(new Paragraph(str1+"("+str2+")",new com.itextpdf.text.Font(bf, 10)));
document.add(new Paragraph(str2,new com.itextpdf.text.Font(bf, 10)));
document.add(new Paragraph(string,new com.itextpdf.text.Font(bf, 12)));
}
document.close();
response.setContentLength(output.size());
OutputStream os = response.getOutputStream();
output.writeTo(os);
os.flush();
os.close();
con.close();
}catch(IOException e){e.printStackTrace();}
}catch(IOException e){e.printStackTrace();}
catch(DocumentException e) {}
catch(Exception e) {
}
//PDF READER
// Create a reader
try{
OutputStream out = new ByteArrayOutputStream();
PdfReader reader = new PdfReader(output.toByteArray());
PdfStamper stamper = new PdfStamper(reader, out);
Document document = new Document();
document.open();
int n = reader.getNumberOfPages();
PdfContentByte cbq;
Font headerFont = new Font(FontFamily.COURIER, 13, Font.UNDERLINE);
for (int i = 1; i <= n; i++) {
cbq = stamper.getOverContent(i);
ColumnText ct = new ColumnText( cbq );
ct.setSimpleColumn( 300 , 300, 50, 50 , 150, Element.ALIGN_CENTER );
ct.addElement( new Paragraph( "Mathias" , headerFont ) );
ct.go();
}
// Close the stamper
stamper.close();
reader.close();
document.close();
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
我正在尝试向我的 pdf 添加页码,但上面的代码不起作用。现在作为示例,我只是添加文本 "mathias" 来检查它是否有效,但文本 “mathias” 没有出现在 pdf 页面上。其他一切正常,标题,pdf 上的文本显示但不是压模中的数据。
我也试过用这个
for (int i = 1; i <= n; i++) {
getHeaderTable(i, n).writeSelectedRows(0, -1, 34, 803, stamper.getOverContent(i));
}
public static PdfPTable getHeaderTable(int x, int y) {
PdfPTable table = new PdfPTable(2);
table.setTotalWidth(527);
table.setLockedWidth(true);
table.getDefaultCell().setFixedHeight(20);
table.getDefaultCell().setBorder(Rectangle.BOTTOM);
table.addCell("FOOBAR FILMFESTIVAL");
table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_RIGHT);
table.addCell(String.format("Page %d of %d", x, y));
return table;
}
但是压模什么也没有出现。
我错过了什么吗?
最佳答案
mkl 试图解释的内容非常简单。您正在使用以下方式向浏览器发送 PDF 文档:
response.setContentLength(output.size());
OutputStream os = response.getOutputStream();
output.writeTo(os);
但是,此文档是 在 标记之前的 PDF 文档,因此您不会看到使用 PdfStamper
对文档应用任何更改也就不足为奇了。请删除这些行并查看这段代码:
//PDF READER
// Create a reader
try{
ByteArrayOutputStream out = new ByteArrayOutputStream();
PdfReader reader = new PdfReader(output.toByteArray());
PdfStamper stamper = new PdfStamper(reader, out);
int n = reader.getNumberOfPages();
PdfContentByte cbq;
Font headerFont = new Font(FontFamily.COURIER, 13, Font.UNDERLINE);
for (int i = 1; i <= n; i++) {
cbq = stamper.getOverContent(i);
ColumnText ct = new ColumnText( cbq );
ct.setSimpleColumn( 300 , 300, 50, 50 , 150, Element.ALIGN_CENTER );
ct.addElement( new Paragraph( "Mathias" , headerFont ) );
ct.go();
}
// Close the stamper
stamper.close();
reader.close();
response.setContentLength(out.size());
OutputStream os = response.getOutputStream();
out.writeTo(os);
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
请注意,我从该片段中删除了 Document document = new Document();
。请阅读the documentation .使用 PdfStamper
时,您不需要 Document
实例。
关于java - 使用 pdfstamper(Itext) 将页码添加到 pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21374006/
下面的代码正确地将值“foo”分配给命名字段,但该字段没有被“展平”。我一定是忽略了一个步骤,但我不知道它是什么。请指教。谢谢。 public byte[] FlattenSpecifiedFormF
我正在使用 iTextSharp 通过 C# 将页码添加到 PDF。在运行代码分析时,怀疑输出的 MemoryStream 被处理了不止一次。 See this warning generated b
我正在使用 iTextSharp 填写 PDF 上的一些表单域。 PdfReader pdfReader = new PdfReader(templateFile); //http://stackov
我正在使用 ColdFusion 11 和 Java (com.lowagie.text.pdf.PdfStamper) 来填写 pdf,但是当我输入一个带有单个撇号的值时,例如 32' 它仅在 pd
我现在迷路了。 我试图完成的是在另一个(如水印)上添加一个 PDF。 问题是我似乎不明白使用的坐标系,因为 我的水印表现出乎意料。 这两个 PDF 具有不同的尺寸。 我的目标具有以下维度: 595高度
我使用 iText 5.4 PDFStamper 在我的 PDF 文档上使用以下代码进行数字签名: stamper = PdfStamper.createSignature(reader, os, '
我有下面的iText代码来读取文件并将其添加到主PDF文件中,所以它基本上是在现有PDF的绝对位置添加PDF页面。主 PDF 中的绝对位置和页码将动态确定。有时,它可能位于第 1 页上的 100,10
我正在尝试将新页面添加到 PdfStamper,但此代码不会将模板 pdf 字段添加到压模。 private void InsertNewPage(PdfStamper stamper, int pa
我正在开发一个系统,我必须在其中将一些图像添加到现有的 PDF 文档中。 这适用于 iText 5.1.3,但由于某种原因,在包含扫描图像的 PDF 中,它不会添加任何图像。 这是 PDF Docum
我这里指的是下面的方法。(Link 了解更多详情) public void setEncryption(boolean strength, Stri
我有这个代码 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws Servle
为什么 PdfStamper 会增加我每次使用的签名 pdf 的大小? 这是我的代码: private static void test(String src, String pwd, String
您好,我已经成功地使用 HTMLWorker 使用 asp.NET/C# 转换 gridview。 (1) 我已对生成的表格应用了一些有限的样式,但看不到如何应用表格样式(例如网格线)或应用其他格式样
我正在使用 PdfStamper 在运行时创建 PDF。我的问题是我无法增加 PDF 字段的字体大小。我已经试过了,但没有成功, stamper.AcroFields.SetFieldProperty
我可以使用 PDFStamper 和 PdfContentByte content.AddImage 方法将图像叠加到现有 PDF 文档上。 当现有文档顶部已覆盖图像时,我的问题就出现了。您实际上可以
我几乎(我认为)能够在不先保存的情况下使用 servlet 呈现 PDF。我已经能够成功设置它,但我一直坚持尝试在客户端浏览器中使用打印对话框打开 PDF。 我已经能够通过以下方式成功将我的 PDF
我正在使用 ITextSharp 将多页 PDF 文件拆分为单页文件。我还设法使用 MemoryStream 将这些单页 PDF 添加到 zip 文件中。 现在,我需要使用 PdfStamper 为这
这是我第一次使用 iText5 for .NET,到目前为止,除了一项任务外,一切都相当成功。 我创建了两个 VB.Net 类,每个类都成功返回一个有效的 MemoryStream,其中包含一个单页
我正在使用 iTextSharp 加载现有 PDF 并使用 PdfStamper 添加文本。我想要完全控制文本,这意味着我想要能够控制字体(仅 TrueType)、字体大小和坐标。现在,我正在使用 S
我正在尝试在我的应用程序中使用 iText 2.1.7。我将问题确定为以下代码: InputStream inputFile = ... OutputStream outputStream = ...
我是一名优秀的程序员,十分优秀!