`
ctrain
  • 浏览: 135470 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

itext生成重复水印(watermark)

 
阅读更多
    在这里只讲在生成pdf的文件过程中添加水印,至于向已存在的pdf文件中添加水印,那并不是本文所探讨的内容。
    在网上搜了很多文字都不知道该怎么做。因为网上大部分都是讲的向已经存在的pdf文件中添加水印,而不是在写文件的过程中直接添加水印。
    不过还是有找到下面的文章,itext in action学习笔记,使我很快找到了办法。那就是通过添加pageEvent事件解决。
    代码如下:
writer.setPageEvent(new Watermark("HELLO WORLD"));//水印内容

//在继承自PdfPageEventHelper类中的OnEndPage方法中添加水印
public void OnEndPage(PdfWriter writer, Document document) {
	ColumnText.ShowTextAligned(writer.DirectContent,
	                           Element.ALIGN_RIGHT,
	                           header[0],
	                           100.0f,
	                           200.0f,
	                           0);
}


    不过水印只是出来了一条,并没有我想想的多条。
    后来只有硬着头皮看itext5的文档《itext in action》 second Edition英文版,结果还是没正明白。
    于是还是只有在网上搜,结果收到下面的一个问答,里面的提问及回答给了我很大的启示
That method is obsolete. 
Use page events to add watermarks (as many as you want). 
br, 
Bruno 

    看来还是得在pageEvent中做文章。有过了许久,突然灵光一线。出现一条就用一次,出现多条,用个循环打印不就是了吗?于是赶紧先看看ColumnText的ShowTextAligned()方法的api文档。
showTextAligned
public static void showTextAligned(PdfContentByte canvas,
                                   int alignment,
                                   Phrase phrase,
                                   float x,
                                   float y,
                                   float rotation)Shows a line of text. Only the first line is written. 

Parameters:
canvas - where the text is to be written to
alignment - the alignment
phrase - the Phrase with the text
x - the x reference position
y - the y reference position
rotation - the rotation to be applied in degrees counterclockwise

    果然发现有横纵坐标的参数。于是乎将自定义的Watermark类改为如下:
public class Watermark extends PdfPageEventHelper {
	Font FONT = new Font(FontFamily.HELVETICA, 30, Font.BOLD, new GrayColor(0.95f));
	private String waterCont;//水印内容
	public Watermark() {

	}
	public Watermark(String waterCont) {
		this.waterCont = waterCont;
	}

	@Override
	public void onEndPage(PdfWriter writer, Document document) {
		for(int i=0 ; i<5; i++) {
			for(int j=0; j<5; j++) {
				ColumnText.showTextAligned(writer.getDirectContentUnder(),
				                           Element.ALIGN_CENTER,
				                           new Phrase(this.waterCont == null ? "HELLO WORLD" : this.waterCont, FONT),
				                           (50.5f+i*350),
				                           (40.0f+j*150),
				                           writer.getPageNumber() % 2 == 1 ? 45 : -45);
			}
		}
	}
}
 
    问题自然就解决了。
分享到:
评论
2 楼 woguolirui 2013-12-18  
不需回复了,已解决
1 楼 woguolirui 2013-12-18  
貌似水印不能是中文,我试了很多次中文是乱码或无显示。不知道你是否已解决此问题,望赐教,不胜感激。

相关推荐

    itext生成PDF水印

    通过学习和掌握iText库,开发者可以灵活地生成和编辑PDF文档,包括添加水印这一关键功能。这不仅可以提升文档的专业性,还能有效保护知识产权和敏感信息。而`ResultPDF`这个文件名可能是最终生成带有水印的PDF文件,...

    itext生成PDF水印例子

    这是一个itext生成pdf水印的例子。其中需要几个文件。

    itext5生成PDF(含水印文字及图片)

    itext5生成PDF(含水印文字及图片)的源代码,操作说明详细,代码完整可用。

    itext 生成pdf 目录

    本篇文章将深入探讨如何使用iText来生成PDF的目录。 首先,理解PDF目录的基本结构至关重要。PDF目录通常由一系列层次化的书签构成,每个书签对应文档中的一个部分、章节或子章节。在iText中,这些书签是通过`...

    使用iText生成PDF.doc

    iText 是一个强大的 Java 类库,专为生成和编辑PDF文档而设计。它以其灵活性和易用性在开发社区中广受欢迎。通过iText,开发者可以轻松创建包含文本、图像、表格等各种元素的PDF文件。以下是一些关于如何使用iText...

    itext生成pdf目录

    用itext方法生成 与Word一样的目录

    freemarker+itext生成PDF

    这篇博客 "freemarker+itext生成PDF" 可能详细介绍了如何结合这两者来生成PDF文件,这在报表生成、发票打印或任何需要静态化输出的场景中非常有用。 首先,让我们了解FreeMarker。FreeMarker是一个基于模板的语言,...

    解决Itext生成PDF中文不换行的jar

    为了解决"Java使用Itext生成PDF中文不换行"的问题,我们可以采取以下几种策略: 1. **设置字体和编码**:确保使用支持中文的字体,如SimSun、Arial Unicode MS等,并正确设置PDF的编码为UTF-8。Itext中的`Font`类...

    iText Java生成PDF 加密 水印 - glen的日志 - 网易博客

    iText Java生成PDF 加密 水印 - glen的日志 - 网易博客

    iText生成pdf解决中文不显示

    iText生成pdf解决中文不显示字库,pdf凉字不显示,由于生成iText插件生成pdf的时候中文会显示不出来,遇到过的是"凉"字,查到是字体库的原因,网上下载字体库msyh.ttc,生成的时候指定字体库,就可以解决了,小bug一...

    iText生成PDF - 实例

    **iText生成PDF实例详解** 在信息技术领域,PDF(Portable Document Format)文件因其跨平台、易阅读和保真性等特点,被广泛应用于文档共享和交流。而iText是一款开源的Java库,它允许开发者轻松地创建、修改和操作...

    itext-pdf添加水印的jar包,支持中文水印

    本文将详细介绍如何使用iText PDF库来为PDF文档添加中文水印,以及所需的jar包。 首先,iText是一个强大的Java库,用于创建、修改和优化PDF文档。它提供了一系列API,使得开发者可以方便地处理PDF的各种需求,包括...

    使用IText生成PDF和WORD文档

    在本文中,我们将深入探讨如何利用IText库生成这两种格式的文档,并通过实际的源码示例来理解其工作原理。 首先,让我们从PDF(Portable Document Format)开始。PDF是一种通用的文件格式,能够保留文档的原始格式...

    Java使用iText生成word文件的解决方案

    本篇将深入探讨如何使用iText库来生成Microsoft Word(.doc)文件。iText是一个功能强大的Java库,允许开发者创建、修改和操作PDF和DOC文件。在这个场景中,我们将主要关注其在生成Word文档方面的应用。 首先,要...

    itext-2.1.7源码包以及 解决iText生成pdf时中文标点存在行首问题的修改class

    "itext-2.1.7源码包以及 解决iText生成pdf时中文标点存在行首问题的修改class" 这个标题提到了两个关键点。首先,`itext-2.1.7`是开源Java库iText的一个版本,用于创建、修改和操作PDF文档。这个版本的源码包提供了...

    springboot使用itext生成pdf并保存到本地

    总结一下,要实现在Spring Boot应用中使用iText生成带有页眉、页码、水印、目录和二维码的PDF,你需要: 1. 引入iText及相关库。 2. 创建HTML页面并将其转换为PDF。 3. 定制PDF内容,包括添加页眉、页码和水印。 4. ...

    使用itext生成PDF文件

    本篇文章将详细介绍如何使用iText库生成PDF文件,以及在这个过程中可能遇到的关键知识点。 首先,我们需要了解iText的基本概念。iText是一个开源库,它提供了一系列API,使开发者能够方便地处理PDF文档。通过这个库...

    itext生成word需要的jar包

    在标题提到的场景中,“iText生成word需要的jar包”是指使用iText库来实现这个功能时所需的Java类库文件,也就是JAR文件。 首先,我们来看一下压缩包中的三个文件: 1. `iTextAsian.jar`:这是一个扩展包,专门...

    初学Itext 生成PDF 表格,条形码(一维),图片

    对于初学者来说,使用iText库生成PDF表格、一维条形码以及在PDF中插入图片是一项基础但十分重要的技能。以下内容将详细介绍这些知识点,并提供一些基本的代码示例来帮助理解。 首先,iText库中生成PDF表格的能力让...

    java itext生成多页的word模板

    Java中的iText库是一个强大的工具,用于生成和编辑PDF文档。在这个特定的场景中,我们关注的是如何使用iText来创建一个多页的Word模板。尽管iText主要支持PDF,但通过一些转换,它也能帮助创建复杂的Word文档。下面...

Global site tag (gtag.js) - Google Analytics