`

iText的showTextAligned方法

 
阅读更多

java使用itext的showTextAligned方法给pdf添加文字水印(watermark)

 

2013-07-22 17:39:59   来源:   评论:0 点击:3582

 

java的开源pdf库-Itext可以给pdf添加水印,主要是使用showTextAligned这个方法.ShowTextAligned方法可以设置输出水印的文本和水印文本的旋转角度,ShowTextAligned方法具体的参数说明如下:

public void ShowTextAligned(int alignment, String text, float x,float y, float rotation)

参数 参数说明:
alignment 左、右、居中(ALIGN_CENTER, ALIGN_RIGHT or ALIGN_LEFT)
text 要输出的文本
x 文本输入的X坐标
y 文本输入的Y坐标
rotation 文本的旋转角度

将itext-5.4.2.zip压缩包解压缩后得到7个文件:itextpdf-5.4.2.jar(核心组件)、itextpdf-5.4.2-javadoc.jar(API文档)、itextpdf-5.4.2-sources.jar(源代码)、itext-xtra-5.4.2.jar、itext-xtra-5.4.2-javadoc.jar、itext-xtra-5.4.2-sources.jar ,如果是输出中文pdf,需要用到itext-asian.jar这个jar包,这个jar包在extrajars-2.3.zip中,下载地址:请点这里

private static void addWatermark(PdfStamper pdfStamper
, String waterMarkName) {
PdfContentByte content = null;
BaseFont base = null;
Rectangle pageRect = null;
PdfGState gs = new PdfGState();
try { // 设置字体
base = BaseFont.createFont("STSongStd-Light",
"UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
if (base == null || pdfStamper == null) { return; }
// 设置透明度为0.4
gs.setFillOpacity(0.4f);
gs.setStrokeOpacity(0.4f);
int toPage = pdfStamper.getReader().getNumberOfPages();
for (int i = 1; i <= toPage; i++) {
pageRect = pdfStamper.getReader(). getPageSizeWithRotation(i);
// 计算水印X,Y坐标
float x = pageRect.getWidth() / 2;
float y = pageRect.getHeight() / 2;
//获得PDF最顶层
content = pdfStamper.getOverContent(i);
content.saveState();
// set Transparency
content.setGState(gs);
content.beginText();
content.setColorFill(BaseColor.GRAY);
content.setFontAndSize(base, 60);
// 水印文字成45度角倾斜
content.showTextAligned(Element.ALIGN_CENTER ,
waterMarkName, x, y, 45); content.endText(); }
} catch (Exception ex) {
ex.printStackTrace();
}
finally {
content = null;
base = null;
pageRect = null;
}
}

java使用itext的showTextAligned方法给pdf添加文字水印的完整代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package com.pdf;
   
import java.io.FileOutputStream;
import java.io.IOException;
  
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Chunk;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfGState;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;
import com.itextpdf.text.pdf.PdfWriter;
  
public class ItextHelloword {
   
    public static void main(String[] args) throws Exception {
        String pdfFilePath = "f:/itext-demo.pdf"
        PdfReader pdfReader = new PdfReader("f:/itext-demo.pdf");
        // Get the PdfStamper object
        PdfStamper pdfStamper = new PdfStamper(pdfReader
            , new FileOutputStream(
                "f:/itext-demo22.pdf"));
        addWatermark(pdfStamper, "www.360sdn.com");
  
        pdfStamper.close(); 
    }
  
     private static void addWatermark(PdfStamper pdfStamper
          , String waterMarkName) {
            PdfContentByte content = null;
            BaseFont base = null;
            Rectangle pageRect = null;
            PdfGState gs = new PdfGState();
            try {
                // 设置字体
            base = BaseFont.createFont("STSongStd-Light"
"UniGB-UCS2-H",
        BaseFont.NOT_EMBEDDED);
            } catch (DocumentException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                if (base == null || pdfStamper == null) {
                    return;
                }
                // 设置透明度为0.4
                gs.setFillOpacity(0.4f);
                gs.setStrokeOpacity(0.4f);
                int toPage = pdfStamper.getReader().getNumberOfPages();
                for (int i = 1; i <= toPage; i++) {
                    pageRect = pdfStamper.getReader().
                       getPageSizeWithRotation(i);
                    // 计算水印X,Y坐标
                    float x = pageRect.getWidth() / 2;
                    float y = pageRect.getHeight() / 2;
                    //获得PDF最顶层
                    content = pdfStamper.getOverContent(i);
                    content.saveState();
                    // set Transparency
                    content.setGState(gs);
                    content.beginText();
                    content.setColorFill(BaseColor.GRAY);
                    content.setFontAndSize(base, 60);
                    // 水印文字成45度角倾斜
                    content.showTextAligned(Element.ALIGN_CENTER
                            , waterMarkName, x,
                            y, 45);
                    content.endText(); 
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            } finally {
                content = null;
                base = null;
                pageRect = null;
            }
        }
 }     
java使用itext的showTextAligned方法给pdf添加文字水印(watermark)

 

分享到:
评论

相关推荐

    itext中关于pdf的各种功能

    itext生成pdf文档的各种方法,iText是著名的开放项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。

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

    可以通过调整`Font`对象的属性(如大小、颜色、倾斜角度等)和`showTextAligned`方法的参数来定制水印的样式和位置。 5. **保存并关闭**: 完成水印添加后,不要忘记保存并关闭`PdfStamper`和`PdfReader`: ```...

    java使用itext导出PDF文本绝对定位(实现方法)

    java使用iText导出PDF文本绝对定位(实现方法) iText是一个流行的Java类库,用于生成PDF文档。下面我们将探讨如何使用iText在Java中导出PDF文本,并实现绝对定位。 iText简介 iText是一个开源的Java类库,用于...

    java使用itextpdf、itext-asian对pdf文件加水印

    这里,`beginText()`和`endText()`用于开始和结束文本的绘制,`showTextAligned()`方法用来在指定位置显示文本,其中角度参数(45)决定了水印的倾斜程度。 4. **保存并关闭对象**:完成水印添加后,记得保存修改并...

    iText PDF中文字体文件.rar

    这里`ColumnText.showTextAligned()`方法用于在PDF上绘制文本。 4. **调整字体风格**:除了大小,你还可以改变字体的样式,如粗体、斜体。iText支持以下样式: - `Font.BOLD`:粗体 - `Font.ITALIC`:斜体 - `...

    ITextDemo.zip

    5. 添加水印,可能使用ColumnText的showTextAligned方法在页面上添加文本,或者通过PdfStamper的getOverContent添加图像水印。 6. 完成内容添加后,关闭PdfWriter和Document对象,保存PDF文件。 这个ITextDemo示例...

    iTextAsian.jar 、itext-5.3.2.jar

    对于文字水印,可以使用`ColumnText.showTextAligned()`方法设置文字、字体、颜色和位置。 为了使水印更具一致性,开发者还可以调整其大小、角度、透明度以及放置的位置,使其适应不同页面的布局。此外,iText还...

    itext jar 包

    ColumnText.showTextAligned(stamper.getOverContent(1), Element.ALIGN_CENTER, new Phrase("Confidential"), 300, 500, 45); stamper.close(); reader.close(); } catch (Exception e) { e.printStackTrace...

    itext2.1.7动态生成PDF实例

    在本篇中,我们将深入探讨如何利用iText 2.1.7版本动态生成PDF实例,包括基本概念、关键类和方法的使用。 首先,我们需要了解iText的核心类。`Document`是所有PDF文档的基础,它定义了页面大小、边距等属性。`...

    ITextPdf之绝对位置添加文本

    要实现在PDF中的绝对位置添加文本,我们需要使用`PdfCanvas`的`beginText()`和`endText()`方法来开启和结束文本绘制模式,然后通过`moveTo()`和`showTextAligned()`或`showText()`方法来设定文本的起始位置和显示...

    用itextg5.9在已有pdf上添加文字

    `showTextAligned`方法用于在指定位置绘制文本,这里的坐标(36, 792)表示页面上的左下角位置(PDF坐标系统从左下角开始)。 在`My_itexpdf`这个压缩包文件中,可能包含了示例代码、字体文件、输入和输出的PDF文件...

    ITEXT 目录生成的第二种方法源码

    这可以通过`ColumnText.showTextAligned()`方法实现,同时设置`PdfAction`和`PdfWriter`的`setBookmark()`方法。 8. **关闭目录**:最后,确保在文档关闭前调用`PdfWriter`的`closeOutlines()`方法,完成目录的构建...

    itextpdf.zip

    本文将详细介绍这两个库在处理PDF时的核心功能和使用方法。 iTextPDF 5.5.10是iText库的一个版本,提供了全面的PDF生成和编辑功能。首先,我们来看如何生成PDF。在Java中,可以通过创建PdfWriter实例,然后通过...

    itext生成PDF水印

    通过`showTextAligned`方法,我们可以将水印文本居中放置在每一页上。字体大小、颜色和角度可以根据需求调整。 对于图像水印,我们可以使用`Image.getInstance`方法加载图像,并将其添加到PDF页面的覆盖内容层上。...

    android Itext生产PDF文件添加图片页眉的简单例子

    ColumnText.showTextAligned(document.getDirectContent(), Element.ALIGN_CENTER, new Phrase("页眉"), (document.getPageSize().getWidth() / 2), 36, 0); ColumnText.showImage(image, document....

    Java用iText5生成PDF、操作pdf、水印

    ColumnText.showTextAligned(canvas, Element.ALIGN_CENTER, new Phrase("水印", font), 300, 750, 0); stamper.close(); reader.close(); ``` 这里,我们首先读取一个已有的PDF文件(`input.pdf`),然后创建一个...

    在页脚显示PDF的总页数

    使用`setFontAndSize()`方法设置字体大小和类型,`beginText()`和`showTextAligned()`方法来定位和显示文本。对于“第X页/共X页”的显示,我们可以计算当前页码(即事件调用的次数)并更新总页数。 4. **计算总页数...

    htmltopdf.zip使用itext5将html转换为PDF并添加水印

    ColumnText.showTextAligned( canvas, Element.ALIGN_CENTER, new Phrase("水印文本"), document右边界/2, document顶端边界/2, 45); } } writer.setPageEvent(new WatermarkEventListener()); ``` 5....

    itextpdf实现页眉页角

    例如,`ColumnText.showTextAligned()`方法可以方便地在页面的特定位置放置文本,形成页眉或页脚。 5. **设置样式**:除了纯文本,我们还可以设置字体、大小、颜色等样式。`BaseFont`类可以加载系统字体,`Font`类...

    itextpdf-5.5.12

    在本文中,我们将深入探讨iTextPDF的核心特性、主要用途、API使用方法以及如何实现水印功能。 ### iTextPDF概述 iTextPDF由iText Software公司开发,它提供了全面的API,使得开发者能够轻松地在Java应用程序中操作...

Global site tag (gtag.js) - Google Analytics