`

itext对水印图片的旋转、放大、缩小等操作的示例

 
阅读更多
package test1;

import java.awt.Color;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;

import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Font;
import com.lowagie.text.HeaderFooter;
import com.lowagie.text.Image;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Phrase;
import com.lowagie.text.Rectangle;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfGState;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfStamper;
import com.lowagie.text.pdf.PdfWriter;

public class PdfConvertor {
 

   // txt原始文件的路径
    private static final String txtFilePath = "c:/test/01.txt";
    // 生成的pdf文件路径
    private static final String pdfFilePath = "c:/test/01.pdf";
    // 添加水印图片路径
    private static final String imageFilePath = "c:/test/images/psue.jpg";
    // 生成临时文件前缀
    private static final String prefix = "tempFile";
    // 所有者密码
    private static final String OWNERPASSWORD = "123456";

    
    public static void generatePDFWithTxt(String txtFile, String pdfFile,
            String userPassWord, String waterMarkName, int permission) {
        try {
            // 生成临时文件
            File file = File.createTempFile(prefix, ".pdf");
            // 创建pdf文件到临时文件
            if (createPDFFile(txtFile, file)) {
                // 增加水印和加密
                waterMark(file.getPath(), pdfFile, userPassWord, OWNERPASSWORD,
                        waterMarkName, permission);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    
    private static boolean createPDFFile(String txtFilePath, File file) {
        // 设置纸张
        Rectangle rect = new Rectangle(PageSize.A4);
        // 设置页码
        HeaderFooter footer = new HeaderFooter(new Phrase("页码:", PdfConvertor
                .setChineseFont()), true);
        footer.setBorder(Rectangle.NO_BORDER);
        // step1
        Document doc = new Document(rect, 50, 50, 50, 50);
        doc.setFooter(footer);
        try {
            FileReader fileRead = new FileReader(txtFilePath);
            BufferedReader read = new BufferedReader(fileRead);
            // 设置pdf文件生成路径 step2
            PdfWriter.getInstance(doc, new FileOutputStream(file));
            // 打开pdf文件 step3
            doc.open();
            // 实例化Paragraph 获取写入pdf文件的内容,调用支持中文的方法. step4
            while (read.ready()) {
                // 添加内容到pdf(这里将会按照txt文件的原始样式输出)
                doc.add(new Paragraph(read.readLine(), PdfConvertor
                        .setChineseFont()));
            }
            // 关闭pdf文件 step5
            doc.close();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    
    private static void waterMark(String inputFile, String outputFile,
            String userPassWord, String ownerPassWord, String waterMarkName,
            int permission) {
        try {
            PdfReader reader = new PdfReader(inputFile);
            PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(
                    outputFile));
            // 设置密码
            //stamper.setEncryption(userPassWord.getBytes(), ownerPassWord.getBytes(), permission, false);
            BaseFont base = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",
                    BaseFont.NOT_EMBEDDED);
            int total = reader.getNumberOfPages() + 1;
            Image image = Image.getInstance(imageFilePath);
            image.setAbsolutePosition(50, 400);//坐标
            image.setRotation(-20);//旋转 弧度
            image.setRotationDegrees(-45);//旋转 角度
//            image.scaleAbsolute(200,100);//自定义大小
            image.scalePercent(50);//依照比例缩放
            PdfContentByte under;
            int j = waterMarkName.length();
            char c = 0;
            int rise = 0;
            for (int i = 1; i < total; i++) {
                rise = 500;
                under = stamper.getUnderContent(i);
                // 添加图片
                under.addImage(image);
                PdfGState gs = new PdfGState();
                gs.setFillOpacity(0.2f);// 设置透明度为0.2
                under.setGState(gs);
                under.beginText();
                under.setColorFill(Color.CYAN);
                under.setFontAndSize(base, 30);
                // 设置水印文字字体倾斜 开始
                if (j >= 15) {
                    under.setTextMatrix(200, 120);
                    for (int k = 0; k < j; k++) {
                        under.setTextRise(rise);
                        c = waterMarkName.charAt(k);
                        under.showText(c + "");
                        rise -= 20;
                    }
                } else {
                    under.setTextMatrix(180, 100);
                    for (int k = 0; k < j; k++) {
                        under.setTextRise(rise);
                        c = waterMarkName.charAt(k);
                        under.showText(c + "");
                        rise -= 18;
                    }
                }
                // 字体设置结束
                under.endText();
                // 画一个圆
                // under.ellipse(250, 450, 350, 550);
                // under.setLineWidth(1f);
                // under.stroke();
            }
            stamper.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    
    private static Font setChineseFont() {
        BaseFont base = null;
        Font fontChinese = null;
        try {
            base = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",
                    BaseFont.EMBEDDED);
            fontChinese = new Font(base, 12, Font.NORMAL);
        } catch (DocumentException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return fontChinese;
    }

    public static void main(String[] args) {
        generatePDFWithTxt(txtFilePath, pdfFilePath, "123", "", 16);
    }
}

 

分享到:
评论

相关推荐

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

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

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

    在实际应用中,你可能需要根据实际需求对水印的透明度、角度、字体等进行更复杂的调整。此外,如果处理大量PDF,记得使用`PdfCopy`类批量处理以提高效率。 通过以上步骤,你可以使用iText PDF库为PDF文档添加中文...

    itext生成PDF水印

    以下是一个简单的示例,展示如何使用iText添加文字水印: ```java public void addTextWatermark(String srcPdfPath, String destPdfPath, String watermarkText) { try { PdfReader reader = new PdfReader...

    去除pdf的图片水印和文字水印

    使用itext开发包对pdf文件进行去水印操作,包括删除图片水印和文字水印。通过遍历pdf的contents对象和xobjects对象,进行对象删除,速度快,效率高

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

    3. **定义水印内容和样式**:创建一个`ColumnText`对象,设置字体、大小、颜色和旋转角度等属性,这将用于创建水印文本。 ```java Font font = new Font(Font.FontFamily.UNDEFINED, 24, Font.NORMAL, BaseColor....

    itext将图片生成PDF(高清版)

    9. 运行demo:提供的`itext图片转pdf的demo`可能是一个完整的Java程序,包含了上述步骤的实现。运行这个示例,可以直观地看到如何使用`iText`库生成高清PDF。 在实际应用中,可能还需要考虑其他因素,如图片的原始...

    itext-pdf添加pdf水印的jar包,实例代码,支持中文水印

    `iText`库提供了丰富的API,可以方便地对PDF进行各种操作,包括添加水印。以下是一些关于使用`iText`添加PDF水印的关键知识点: 1. **安装和引入iText库**:首先,你需要将`iText`的JAR包添加到你的项目类路径中。...

    IText5 Excel转pdf ,带有添加文字水印,图片水印实例poi-3.9,itextpdf-5.5.9

    IText5 Excel转pdf ,带有添加文字水印,图片水印实例。 * jar版本:poi-3.9-20121203.jar, poi-ooxml-3.9-20121203.jar, * poi-ooxml-schemas-3.9-20121203.jar, itextpdf-5.5.9.jar, itext-asian-5.2.0.jar ...

    iTextjar程序示例代码

    这些示例代码通常会展示如何初始化PDF文档、添加页面、设置字体和样式、插入文本、绘制图形、创建表格和列表、处理图像以及添加链接等操作。通过研究这些示例,开发者能够快速理解和掌握iText库的使用方法,从而在...

    itext7操作图片案例代码(旋转、平铺、自适应).rar

    这个资源中包含了itext7操作图片的案例代码,包括:添加图片到PDF中、旋转图片、平铺图片、图片的宽度和高度自适应。详细的教程可以查看文章:https://blog.csdn.net/qq_39826207/article/details/140328872。

    itext生成PDF水印例子

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

    itextpdf在已有pdf指定页及位置添加图片(包含jar及实例)

    然而,有时我们需要对PDF进行编辑,比如在已有的PDF页面上添加图片。这里我们将深入探讨如何使用Java和iTextPDF库来实现这一功能。 iTextPDF是一个开源的Java库,专门用于创建、修改和处理PDF文档。它提供了丰富的...

    itext7 pdf转图片

    在IT行业中,iText是一个广泛使用的Java和.NET库,用于创建、编辑和处理PDF文档。在最新的版本iText 7中,它提供了丰富的功能,包括将PDF文档转换为图像。这个话题涉及到PDF处理和图像转换两个核心领域。下面将详细...

    iText PDF pdf文档生成itext5.5.11.zip,itxt-asian5.20.jar,加水印,去水印代码,功能强大。

    本资源包包含了iText 5.5.11版本的组件,以及专门针对亚洲语言支持的itext-asian5.20.jar,同时提供了加水印和去水印的代码示例,为开发者提供了强大的PDF处理能力。 1. iText 5.5.11:这是iText的一个稳定版本,...

    IText5 Excel转pdf ,带有添加文字水印,图片水印实例

    IText5 Excel转pdf ,带有添加文字水印,图片水印实例。 文件中含有依赖的jar,代码,下载后你直接可以用了,花了2天时间整理完成。 共3个方法,一个是生成pdf,第2个是加文字水印,第3个是加图片水印 public static...

    java操作wordpdf图片生成图片水印

    总的来说,Java通过Apache POI和PDFBox等库,为开发者提供了强大的工具来操作Word和PDF文档,并生成图片水印。这不仅可以提高工作效率,也能有效地保护和标记文档内容。通过深入学习和实践,开发者可以掌握这些技能...

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

    本篇将详细介绍如何使用iText5库来生成PDF,以及如何对PDF进行操作,如添加水印等。 首先,我们需要引入iText的相关库。在提供的文件列表中,我们看到有`itext-asian-5.2.0.jar`、`itextpdf-5.5.5.jar`和`itext-...

    itext图片转pdf

    同时,为了提高效率,可以考虑使用多线程或者异步操作来处理大量图片的转换。 总的来说,iText是一个强大且灵活的PDF处理库,对于需要将图片转换为PDF的场景,它提供了高效且易于使用的解决方案。通过熟练掌握iText...

    利用ITEXT、PDFBOX将PDF转为图片

    5. **保存图片**:`renderImageWithDPI`方法返回一个`BufferedImage`对象,你可以使用Java的`ImageIO`类将其保存为JPG、PNG等常见图片格式。 ```java File outputFolder = new File("output_images"); if (!output...

    itext 增加水印

    `iText`提供了丰富的API,可以方便地进行PDF操作。在C#中,我们需要引入`iTextSharp`库,这是`iText`的.NET版本。可以通过NuGet包管理器安装`iTextSharp`,在项目中添加引用。 接下来,让我们看看如何创建一个简单...

Global site tag (gtag.js) - Google Analytics