返回顶部
首页 > 资讯 > 精选 >Java操作pdf的工具类itext怎么处理
  • 844
分享到

Java操作pdf的工具类itext怎么处理

2023-06-30 06:06:55 844人浏览 八月长安
摘要

这篇“Java操作pdf的工具类itext怎么处理”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java操作pdf的工具类i

这篇“Java操作pdf工具类itext怎么处理”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java操作pdf的工具类itext怎么处理”文章吧。

一、什么是iText?

在企业的信息系统中,报表处理一直占比较重要的作用,iText是一种生成PDF报表的Java组件。通过在服务器端使用jsp或JavaBean生成PDF报表,客户端采用超链接显示或下载得到生成的报表,这样就很好的解决了B/S系统的报表处理问题。

二、引入jar

项目要使用iText,必须引入jar包

<dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.6</version></dependency>

输出中文,还要引入下面itext-asian.jar

<dependency>     <groupId>com.itextpdf</groupId>     <artifactId>itext-asian</artifactId>     <version>5.2.0</version> </dependency>

设置pdf文件密码,还要引入下面bcprov-jdk15on.jar

<dependency>    <groupId>org.bouncycastle</groupId>    <artifactId>bcprov-jdk15on</artifactId>    <version>1.47</version></dependency>

三、iText常用类

  • com.itextpdf.text.Document:这是iText库中最常用的类,它代表了一个 pdf 实例。如果你需要从零开始生成一个pdf文件,你需要使用这个Document类。首先创建该实例,然后打开它,并添加内容,最后关闭该实例,即可生成一个pdf文件。

  • com.itextpdf.text.Paragraph:表示一个缩进的文本段落,在段落中,你可以设置对齐方式,缩进,段落前后间隔等

  • com.itextpdf.text.Chapter:表示 pdf 的一个章节,他通过一个Paragraph类型的标题和整形章数创建

  • com.itextpdf.text.Font:这个类包含了所有规范好的字体,包括family of font,大小,样式和颜色,所有这些字体都被声明为静态常量

  • com.itextpdf.text.List:表示一个列表;com.itextpdf.text.Anchor:表示一个锚,类似于html页面的链接。

  • com.itextpdf.text.pdf.PdfWriter:当这个PdfWriter被添加到PdfDocument后,所有添加到Document的内容将会写入到与文件或网络关联的输出流中。

  • com.itextpdf.text.pdf.PdfReader:用于读取 pdf 文件;

四、生成PDF步骤

创建文档

Document document = new Document();

通过书写器将文档写入磁盘

PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(FILE_DIR + "createPDFWithColor.pdf"));

打开文档

document.open();

向文档中添加内容

document.add(new Paragraph("i love CSDN"));

关闭文档

document.close();

五、Java操作pdf的工具类itext

package com.neusoft.guor.itext;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.net.MalfORMedURLException;import java.util.ArrayList;import java.util.Iterator;import java.util.zip.ZipEntry;import java.util.zip.ZipOutputStream;import com.itextpdf.text.*;import com.itextpdf.text.pdf.BaseFont;import com.itextpdf.text.pdf.ColumnText;import com.itextpdf.text.pdf.PdfAction;import com.itextpdf.text.pdf.PdfAnnotation;import com.itextpdf.text.pdf.PdfContentByte;import com.itextpdf.text.pdf.PdfImportedPage;import com.itextpdf.text.pdf.PdfName;import com.itextpdf.text.pdf.PdfOutline;import com.itextpdf.text.pdf.PdfPageEventHelper;import com.itextpdf.text.pdf.PdfReader;import com.itextpdf.text.pdf.PdfStamper;import com.itextpdf.text.pdf.PdfString;import com.itextpdf.text.pdf.PdfTransition;import com.itextpdf.text.pdf.PdfWriter;import com.itextpdf.text.pdf.draw.DottedLineSeparator;import com.itextpdf.text.pdf.draw.LineSeparator;import com.itextpdf.text.pdf.draw.VerticalPositionMark;public class PDFInit {    public static final String FILE_DIR = "E:\\guor\\itext\\";    public static final String const_JPG_JAVA = FILE_DIR + "java.jpg";    public static final String const_JPG_Nginx = FILE_DIR + "nginx.jpg";    private static final String const_NEZHA = "哪吒编程";    private static final String const_NEZHA_PROGRAM = "获取Java学习资料请关注公众号:哪吒编程";    private static final String const_BIBIDONG = "比比东";    private static final String const_YUNYUN = "云韵";    private static final String const_BaiDU = "百度一下 你就知道";    private static final String const_BAIDU_URL = "https://www.baidu.com";    private static final String const_PAGE_FIRST = "第一页";    private static final String const_PAGE_SECOND = "第二页";    private static final String const_PAGE_THIRD = "第三页";    private static final String const_PAGE_FOUR = "第四页";    private static final String const_PAGE_FIVE = "第五页";    private static final String const_TITLE_FIRST = "一级标题";    private static final String const_TITLE_SECOND = "二级标题";    private static final String const_CONTENT = "内容";    // 普通中文字体    public static Font static_FONT_CHINESE = null;    // 超链字体    public static Font static_FONT_LINK = null;    private static void pdfFontInit() throws IOException, DocumentException {        // 微软雅黑        BaseFont chinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);        // 普通中文字体        static_FONT_CHINESE = new Font(chinese, 12, Font.NORMAL);// Font.BOLD为加粗        // 超链字体        static_FONT_LINK = new Font(chinese, 12, Font.NORMAL, BaseColor.BLUE);    }    public static Document document;    public static void main(String[] args) throws Exception {        pdfFontInit();        //createPDF();// 生成一个 PDF 文件        //createPDFWithColor();// 设置PDF的页面大小和背景颜色        //createPDFWithPassWord();// 创建带密码的PDF        //createPDFWithNewPages();// 为PDF添加页        //createPDFWithWaterMark();// 为PDF文件添加水印,背景图        //createPDFWithContent();//插入块Chunk, 内容Phrase, 段落Paragraph, List        //createPDFWithExtraContent();//插入Anchor, Image, Chapter, Section        //draw();//画图        //createPDFWithAlignment();//设置段落        //createPDFToDeletePage();//删除 page        //insertPage();// 插入 page        //splitPDF();//分割 page        //mergePDF();// 合并 PDF 文件        //sortpage();// 排序page        //setHeaderFooter();// 页眉,页脚        //addColumnText();// 左右文字        //setView();// 文档视图        //pdfToZip();// 压缩PDF到Zip        addAnnotation();// 注释        public static void createPDF() throws IOException, DocumentException {        // 实例化 document        document = new Document();        // 生成文件        String path = FILE_DIR + "createPDF.pdf";        File file = new File(path);        if(!file.exists()){            file.createNewFile();        }        PdfWriter.getInstance(document, new FileOutputStream(FILE_DIR + "createPDF.pdf"));        // 打开 document        document.open();        // 添加文本 此处无法写入中文 TODO        document.add(new Paragraph(const_NEZHA));        document.add(new Paragraph(const_NEZHA, static_FONT_CHINESE));        // 关闭 document        document.close();     * 创建PDF文件,修改文件的属性    public static void createPDFWithColor() throws FileNotFoundException, DocumentException {        // 页面大小        Rectangle rect = new Rectangle(PageSize.A5.rotate());        // 页面背景色        rect.setBackgroundColor(BaseColor.YELLOW);        document = new Document(rect);        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(FILE_DIR + "createPDFWithColor.pdf"));        // PDF版本(默认1.4)        writer.setPdfVersion(PdfWriter.VERSION_1_6);        // 文档属性        document.addAuthor(const_NEZHA);        document.addTitle("我的第一个pdf");        // 页边空白        document.setMargins(10, 10, 10, 10);        // 打开        // 关闭     * 创建带密码的PDF    public static void createPDFWithPassWord() throws FileNotFoundException, DocumentException {        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(FILE_DIR + "createPDFWithPassWord.pdf"));        // userPassword打开密码:"123"        // ownerPassword编辑密码: "123456"        writer.setEncryption("123".getBytes(), "123456".getBytes(), PdfWriter.ALLOW_SCREENREADERS, PdfWriter.STANDARD_ENCRYPTION_128);     * 为PDF添加页    public static void createPDFWithNewPages() throws FileNotFoundException, DocumentException {        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(FILE_DIR + "createPDFAddNewPages.pdf"));        document.add(new Paragraph(const_PAGE_FIRST, static_FONT_CHINESE));        document.newPage();        document.add(new Paragraph(const_PAGE_SECOND, static_FONT_CHINESE));        writer.setPageEmpty(true);        document.add(new Paragraph(const_PAGE_THIRD, static_FONT_CHINESE));     * 为PDF文件添加水印,背景图    public static void createPDFWithWaterMark() throws IOException, DocumentException {        FileOutputStream out = new FileOutputStream(FILE_DIR + "createPDFWithWaterMark.pdf");        PdfWriter.getInstance(document, out);        // 图片水印        PdfReader reader = new PdfReader(FILE_DIR + "createPDFWithWaterMark.pdf");        PdfStamper stamp = new PdfStamper(reader, new FileOutputStream(FILE_DIR + "createPDFWithWaterMark2.pdf"));        Image img = Image.getInstance(const_JPG_JAVA);        img.setAbsolutePosition(200, 200);        PdfContentByte under = stamp.getUnderContent(1);        under.addImage(img);        // 文字水印        PdfContentByte over = stamp.getOverContent(2);        // 加载字库来完成对字体的创建        BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.EMBEDDED);        over.beginText();        // 设置颜色 默认为蓝色        over.setColorFill(BaseColor.RED);        // 设置字体字号        over.setFontAndSize(bf, 50);        // 设置起始位置        over.setTextMatrix(30, 30);        // 开始写入水印 左-下-倾斜度        over.showTextAligned(Element.ALIGN_LEFT, "nezha", 245, 400, 30);        over.endText();        // 背景图        Image img2 = Image.getInstance(const_JPG_NGINX);        img2.setAbsolutePosition(0, 0);        PdfContentByte under2 = stamp.getUnderContent(3);        under2.addImage(img2);        stamp.close();        reader.close();     * 插入Chunk, Phrase, Paragraph, List     * Chunk : 块,PDF文档中描述的最小原子元素     * Phrase : 短语,Chunk的集合     * Paragraph : 段落,一个有序的Phrase集合    public static void createPDFWithContent() throws DocumentException, FileNotFoundException {        FileOutputStream out = new FileOutputStream(FILE_DIR + "createPDFWithContent.pdf");        // 添加块        document.add(new Chunk(const_NEZHA, static_FONT_CHINESE));        Font font = new Font(Font.FontFamily.HELVETICA, 8, Font.BOLD, BaseColor.WHITE);        Chunk id = new Chunk("SpringBoot", font);        id.setBackground(BaseColor.BLACK, 1f, 0.5f, 1f, 1.5f);        id.setTextRise(7);        document.add(id);        Font font2 = new Font(Font.FontFamily.HELVETICA, 6, Font.BOLD, BaseColor.WHITE);        Chunk id2 = new Chunk("SpringCloud", font2);        id2.setBackground(BaseColor.BLACK, 1f, 0.5f, 1f, 1.5f);        id2.setTextRise(3);        id2.setUnderline(0.2f, -2f);        document.add(id2);        document.add(Chunk.NEWLINE);        // 添加一页,添加短语        document.add(new Phrase("Phrase page"));        // 添加短语        Phrase director = new Phrase();        Chunk name = new Chunk(const_BIBIDONG, static_FONT_CHINESE);        // 添加下划线(thickness:下划线的粗细,yPosition:下划线离字的距离)        name.setUnderline(0.5f, -1f);        director.add(name);        director.add(new Chunk(","));        director.add(new Chunk(" "));        director.add(new Chunk(const_YUNYUN, static_FONT_CHINESE));        director.setLeading(24);        document.add(director);        // 添加一页        Phrase director2 = new Phrase();        Chunk name2 = new Chunk(const_BIBIDONG, static_FONT_CHINESE);        name2.setUnderline(0.2f, -2f);        director2.add(name2);        director2.add(new Chunk(","));        director2.add(new Chunk(" "));        director2.add(new Chunk(const_YUNYUN, static_FONT_CHINESE));        director2.setLeading(24);        document.add(director2);        // 添加段落        document.add(new Paragraph("Paragraph page"));        Paragraph info = new Paragraph();        info.add(new Chunk(const_NEZHA));        info.add(new Chunk(const_BIBIDONG));        info.add(Chunk.NEWLINE);        info.add(new Phrase(const_NEZHA));        document.add(info);        // 通过循环添加段落信息        List list = new List(List.ORDERED);        for (int i = 0; i < 5; i++) {            ListItem item = new ListItem(String.format("%s: %d "+const_NEZHA, const_YUNYUN + (i + 1), (i + 1) * 100), new Font(Font.FontFamily.HELVETICA, 6, Font.BOLD, BaseColor.WHITE));            List girllist = new List(List.ORDERED, List.ALPHABETICAL);            girllist.setLowercase(List.LOWERCASE);            for (int j = 0; j < 3; j++) {                ListItem girlitem = new ListItem("girls" + (j + 1));                List rolelist = new List(List.UNORDERED);                for (int k = 0; k < 2; k++) {                    rolelist.add(String.format("%s, %s", const_NEZHA + (k + 1), const_BIBIDONG + (k + 1)));                }                girlitem.add(rolelist);                girllist.add(girlitem);            }            item.add(girllist);            list.add(item);        document.add(list);     * 插入锚Anchor, Image, 章节Chapter, 子列表Section    public static void createPDFWithExtraContent() throws DocumentException, MalformedURLException, IOException {        FileOutputStream out = new FileOutputStream(FILE_DIR + "createPDFWithExtraContent.pdf");        String content = "you can get anything from : ";        Paragraph paragraph = new Paragraph(content);        // 创建一个链接到外部网站的新锚点        // 并将此锚点添加到段落中。        Anchor anchor = new Anchor(const_BAIDU, static_FONT_LINK);        anchor.setReference(const_BAIDU_URL);        paragraph.add(anchor);        document.add(paragraph);        // Image对象        Image img = Image.getInstance(const_JPG_NGINX);        img.setAlignment(Image.LEFT | Image.TEXTWRAP);        img.setBorder(Image.BOX);        img.setBorderWidth(10);        img.setBorderColor(BaseColor.WHITE);        img.scaleToFit(800, 50);// 大小        img.setRotationDegrees(-50);// 旋转        document.add(img);        // 章节Chapter -- 目录        Paragraph title = new Paragraph(const_TITLE_FIRST,static_FONT_CHINESE);        // 标题和序号        Chapter chapter = new Chapter(title, 1);        // 子列表Section        title = new Paragraph(const_TITLE_SECOND,static_FONT_CHINESE);        Section section = chapter.addSection(title);        section.setBookmarkTitle(const_NEZHA);        section.setIndentation(10);        section.setBookmarkOpen(false);        section.setNumberStyle(Section.NUMBERSTYLE_DOTTED_WITHOUT_FINAL_DOT);        Section subsection1 = section.addSection(new Paragraph(const_CONTENT,static_FONT_CHINESE));        subsection1.setIndentationLeft(10);        subsection1.setNumberDepth(1);        document.add(chapter);     * 画图    public static void draw() throws Exception {        FileOutputStream out = new FileOutputStream(FILE_DIR + "draw.pdf");        // 左右箭头        document.add(new VerticalPositionMark() {            public void draw(PdfContentByte canvas, float llx, float lly, float urx, float ury, float y) {            canvas.beginText();            BaseFont bf = null;            try {                bf = BaseFont.createFont(BaseFont.ZAPFDINGBATS, "", BaseFont.EMBEDDED);            } catch (Exception e) {                e.printStackTrace();            canvas.setFontAndSize(bf, 12);            // LEFT            canvas.showTextAligned(Element.ALIGN_CENTER, String.valueOf((char) 220), llx - 10, y, 0);            // RIGHT            canvas.showTextAligned(Element.ALIGN_CENTER, String.valueOf((char) 220), urx + 10, y + 8, 180);            canvas.endText();        });        // 直线        Paragraph p1 = new Paragraph(const_NEZHA ,static_FONT_CHINESE);        p1.add(new Chunk(new LineSeparator()));        p1.add(const_BIBIDONG);        document.add(p1);        // 点线        Paragraph p2 = new Paragraph(const_NEZHA ,static_FONT_CHINESE);        p2.add(new Chunk(new DottedLineSeparator()));        p2.add(const_BIBIDONG);        document.add(p2);        // 下滑线        LineSeparator UNDERLINE = new LineSeparator(1, 100, null, Element.ALIGN_CENTER, -2);        Paragraph p3 = new Paragraph(const_NEZHA_PROGRAM ,static_FONT_CHINESE);        p3.add(UNDERLINE);        document.add(p3);     * 设置段落    public static void createPDFWithAlignment() throws Exception {        FileOutputStream out = new FileOutputStream(FILE_DIR + "createPDFWithAlignment.pdf");        Paragraph p = new Paragraph("Never frown, even when you are sad, because you never know who is falling in love with your smile;" +                "You will see exactly what life is worth, when all the rest has Gone;" +                "It is very simple to be happy, but it is very difficult to be simple.");        // 默认        p.setAlignment(Element.ALIGN_JUSTIFIED);        document.add(p);        // 慢慢的向右移动        p.setIndentationLeft(1 * 15f);        p.setIndentationRight((5 - 1) * 15f);        // 居右        p.setAlignment(Element.ALIGN_RIGHT);        p.setSpacingAfter(15f);        // 居左        p.setAlignment(Element.ALIGN_LEFT);        p.setSpacingBefore(15f);        // 居中        p.setAlignment(Element.ALIGN_CENTER);     * 删除页    public static void createPDFToDeletePage() throws Exception {        FileOutputStream out = new FileOutputStream(FILE_DIR + "createPDFToDeletePage.pdf");        PdfWriter writer = PdfWriter.getInstance(document, out);        PdfReader reader = new PdfReader(FILE_DIR + "createPDFToDeletePage.pdf");        reader.selectPages("1,3");        PdfStamper stamp = new PdfStamper(reader, new FileOutputStream(FILE_DIR + "createPDFToDeletePage2.pdf"));     * 插入 page    public static void insertPage() throws Exception {        FileOutputStream out = new FileOutputStream(FILE_DIR + "insertPage.pdf");        PdfReader reader = new PdfReader(FILE_DIR + "insertPage.pdf");        PdfStamper stamp = new PdfStamper(reader, new FileOutputStream(FILE_DIR + "insertPage2.pdf"));        stamp.insertPage(2, reader.getPageSize(1));        ColumnText ct = new ColumnText(null);        ct.addElement(new Paragraph(24, new Chunk("INSERT PAGE")));        ct.setCanvas(stamp.getOverContent(2));        ct.setSimpleColumn(36, 36, 559, 770);     * 分割 page    public static void splitPDF() throws Exception {        FileOutputStream out = new FileOutputStream(FILE_DIR + "splitPDF.pdf");        document.add(new Paragraph(const_PAGE_FOUR, static_FONT_CHINESE));        PdfReader reader = new PdfReader(FILE_DIR + "splitPDF.pdf");        Document dd = new Document();        PdfWriter writer = PdfWriter.getInstance(dd, new FileOutputStream(FILE_DIR + "splitPDF1.pdf"));        dd.open();        PdfContentByte cb = writer.getDirectContent();        dd.newPage();        cb.addTemplate(writer.getImportedPage(reader, 1), 0, 0);        cb.addTemplate(writer.getImportedPage(reader, 2), 0, 0);        dd.close();        writer.close();        Document dd2 = new Document();        PdfWriter writer2 = PdfWriter.getInstance(dd2, new FileOutputStream(FILE_DIR + "splitPDF2.pdf"));        dd2.open();        PdfContentByte cb2 = writer2.getDirectContent();        dd2.newPage();        cb2.addTemplate(writer2.getImportedPage(reader, 3), 0, 0);        cb2.addTemplate(writer2.getImportedPage(reader, 4), 0, 0);        dd2.close();        writer2.close();     * 合并 PDF 文件    public static void mergePDF() throws Exception {        PdfReader reader1 = new PdfReader(FILE_DIR + "splitPDF1.pdf");        PdfReader reader2 = new PdfReader(FILE_DIR + "splitPDF2.pdf");        FileOutputStream out = new FileOutputStream(FILE_DIR + "mergePDF.pdf");        Document document = new Document();        java.util.List<PdfReader> readers = new ArrayList<PdfReader>();        readers.add(reader1);        readers.add(reader2);        int pageOfCurrentReaderPDF = 0;        Iterator<PdfReader> iteratorPDFReader = readers.iterator();        while (iteratorPDFReader.hasNext()) {            PdfReader pdfReader = iteratorPDFReader.next();            // 在目标中为每个源页面创建一个新页面            while (pageOfCurrentReaderPDF < pdfReader.getNumberOfPages()) {                document.newPage();                pageOfCurrentReaderPDF++;                PdfImportedPage page = writer.getImportedPage(pdfReader, pageOfCurrentReaderPDF);                cb.addTemplate(page, 0, 0);            pageOfCurrentReaderPDF = 0;        out.flush();        out.close();     * 排序page    public static void sortpage() throws Exception {        FileOutputStream out = new FileOutputStream(FILE_DIR + "sortpage.pdf");        writer.setLinearPageMode();        document.add(new Paragraph(const_PAGE_FIVE, static_FONT_CHINESE));        int[] order = { 4, 3, 2, 1 };        writer.reorderPages(order);     * 页眉页脚    public static void setHeaderFooter() throws Exception {        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(FILE_DIR + "setHeaderFooter.pdf"));        writer.setPageEvent(new PdfPageEventHelper() {            public void onEndPage(PdfWriter writer, Document document) {                PdfContentByte cb = writer.getDirectContent();                cb.saveState();                cb.beginText();                BaseFont bf = null;                try {                    bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.EMBEDDED);                } catch (Exception e) {                    e.printStackTrace();                cb.setFontAndSize(bf, 10);                // Header                float x = document.top(-20);                // 左                cb.showTextAligned(PdfContentByte.ALIGN_LEFT, "H-Left", document.left(), x, 0);                // 中                cb.showTextAligned(PdfContentByte.ALIGN_CENTER, writer.getPageNumber() + " page", (document.right() + document.left()) / 2, x, 0);                // 右                cb.showTextAligned(PdfContentByte.ALIGN_RIGHT, "H-Right", document.right(), x, 0);                // Footer                float y = document.bottom(-20);                cb.showTextAligned(PdfContentByte.ALIGN_LEFT, "F-Left", document.left(), y, 0);                cb.showTextAligned(PdfContentByte.ALIGN_CENTER, writer.getPageNumber() + " page", (document.right() + document.left()) / 2, y, 0);                cb.showTextAligned(PdfContentByte.ALIGN_RIGHT, "F-Right", document.right(), y, 0);                cb.endText();                cb.restoreState();        document.add(new Paragraph("1 page"));        document.add(new Paragraph("2 page"));        document.add(new Paragraph("3 page"));        document.add(new Paragraph("4 page"));    public static void addColumnText() throws Exception {        FileOutputStream out = new FileOutputStream(FILE_DIR + "addColumnText.pdf");        PdfContentByte canvas = writer.getDirectContent();        Phrase phrase1 = new Phrase(const_BIBIDONG + " is a beauty!left", static_FONT_CHINESE);        Phrase phrase2 = new Phrase(const_BIBIDONG + " is a beauty!right", static_FONT_CHINESE);        Phrase phrase3 = new Phrase(const_BIBIDONG + " is a beauty!center", static_FONT_CHINESE);        ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, phrase1, 200, 700, 0);        ColumnText.showTextAligned(canvas, Element.ALIGN_RIGHT, phrase2, 200, 600, 0);        ColumnText.showTextAligned(canvas, Element.ALIGN_CENTER, phrase3, 200, 500, 0);     * 文档视图    public static void setView() throws Exception {        FileOutputStream out = new FileOutputStream(FILE_DIR + "setView.pdf");        writer.setPdfVersion(PdfWriter.VERSION_1_5);        writer.setViewerPreferences(PdfWriter.PageModeFullScreen);// 全屏            public void onStartPage(PdfWriter writer, Document document) {                writer.setTransition(new PdfTransition(PdfTransition.DISSOLVE, 3));                writer.setDuration(5);// 间隔时间     * 压缩PDF到Zip    public static void pdfToZip() throws Exception {        ZipOutputStream zip = new ZipOutputStream(new FileOutputStream(FILE_DIR + "pdfToZip.zip"));        for (int i = 1; i <= 3; i++) {            ZipEntry entry = new ZipEntry(const_NEZHA + i + ".pdf");            zip.putNextEntry(entry);            document = new Document();            PdfWriter writer = PdfWriter.getInstance(document, zip);            writer.setCloseStream(false);            document.open();            document.add(new Paragraph(const_NEZHA + i, static_FONT_CHINESE));            document.close();            zip.closeEntry();        zip.close();     * 添加注释    public static void addAnnotation() throws Exception {        FileOutputStream out = new FileOutputStream(FILE_DIR + "addAnnotation.pdf");        Document doc = new Document();        PdfWriter writer = PdfWriter.getInstance(doc, out);        doc.open();        doc.add(new Paragraph(const_PAGE_FIRST, static_FONT_CHINESE));        doc.add(new Annotation("title", "this is a annotation!"));        doc.newPage();        doc.add(new Paragraph(const_PAGE_SECOND, static_FONT_CHINESE));        Chunk chunk = new Chunk(const_NEZHA);        chunk.setAnnotation(PdfAnnotation.createText(writer, null, "Title", "this is a another annotation!", false, "Comment"));        doc.add(chunk);        // 添加附件        //doc.newPage();        //doc.add(new Paragraph(const_PAGE_THIRD, static_FONT_CHINESE));        //Chunk chunk2 = new Chunk(const_BIBIDONG, static_FONT_CHINESE);        //PdfAnnotation annotation = PdfAnnotation.createFileAttachment(writer, null, "Title", null, const_JPG_JAVA, const_JPG_NGINX);        //annotation.put(PdfName.NAME, new PdfString("Paperclip"));        //chunk2.setAnnotation(annotation);        //doc.add(chunk2);        doc.close();}

以上就是关于“Java操作pdf的工具类itext怎么处理”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

--结束END--

本文标题: Java操作pdf的工具类itext怎么处理

本文链接: https://lsjlt.com/news/327637.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java操作pdf的工具类itext怎么处理
    这篇“Java操作pdf的工具类itext怎么处理”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java操作pdf的工具类i...
    99+
    2023-06-30
  • Java操作pdf的工具类itext的处理方法
    目录一、什么是iText?二、引入jar三、iText常用类四、生成PDF步骤五、Java操作pdf的工具类itext六、更多的Java代码实例一、什么是iText? 在企业的信息系...
    99+
    2024-04-02
  • Java流式操作之Collectors工具类操作指南
    目录方法实践说明一、前提条件二、操作总结方法 ● maxBy:获取流中最大元素;minBy:获取流中最小元素 ● joining:合并,将流中的元素,以字符串的形式拼接起来 ● su...
    99+
    2023-05-18
    java 流式 java流式操作 java collectors工具类
  • Java协议字节操作工具类详情
    前言: 由于最近有解析协议的一些业务场景,需要用到一些字节操作工具,这里封装了一些比较常用的转换方法,测试后基本没有问题,可能一些比较偏门的数据会出现数据转换错误 int与数组相互转...
    99+
    2024-04-02
  • Java怎么实现的文本字符串操作工具类实例
    这篇文章将为大家详细讲解有关Java怎么实现的文本字符串操作工具类实例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。本文实例讲述了Java实现的文本字符串操作工具类。分享给大家供大家参考,具体如下:pac...
    99+
    2023-05-30
    java 工具类
  • Java如何实现操作JSON的便捷工具类
    这篇文章将为大家详细讲解有关Java如何实现操作JSON的便捷工具类,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体如下:对于JSON数据格式的处理,自开发Java以来,已用过多种JSON的开源工具,用...
    99+
    2023-05-30
    java json
  • Java中文件操作工具类fileUtil的示例分析
    小编给大家分享一下Java中文件操作工具类fileUtil的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体如下:package com.gc...
    99+
    2023-05-30
    java
  • Java日期操作方法工具类的示例分析
    这篇文章将为大家详细讲解有关Java日期操作方法工具类的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。本文实例讲述了Java日期操作方法工具类,具体如下:package com.gclo...
    99+
    2023-05-30
    java
  • 基于Java手写一个好用的FTP操作工具类
    目录前言windows服务器搭建FTP服务工具类方法代码展示使用示例前言 网上百度了很多FTP的java 工具类,发现文章代码都比较久远,且代码臃肿,即使搜到了代码写的还可以的,封装...
    99+
    2024-04-02
  • 新的Java访问mysql数据库工具类的操作代码
    这是之前软工课设我写的java访问mysql工具类,它经过了多轮的测试,应该能够适应大多数的操作需求。比之前大二写的更鲁棒,更易用。 package util; import ...
    99+
    2024-04-02
  • Linux桌面中的图形化操作PDF的工具有哪些
    这篇文章主要讲解了“Linux桌面中的图形化操作PDF的工具有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux桌面中的图形化操作PDF的工具有哪些”吧!PDF-Shuffler顾...
    99+
    2023-06-16
  • Java时间工具类Date的常用处理方法
    目录前言Date 类构造方法常用方法前言 Date 类 Date 类表示系统特定的时间戳,可以精确到毫秒。Date 对象表示时间的默认顺序是星期、月、日、小时、分、秒、年。 构造方法...
    99+
    2024-04-02
  • Java中操作Xml使用备忘[ Hutool工具类XmlUtil、XStream ]
    List item 文章目录 Java中操作Xml使用备忘[ Hutool工具类XmlUtil、XStream ]1. Hutool中XmlUtil的使用简介2. Hutool中XmlUti...
    99+
    2023-09-01
    java xml 开发语言
  • Android开发中文件操作工具类FileUtil怎么用
    这篇文章将为大家详细讲解有关Android开发中文件操作工具类FileUtil怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体如下:package com.ymerp.android.t...
    99+
    2023-05-30
    android
  • Python数据处理pandas读写操作IO工具CSV怎么使用
    这篇“Python数据处理pandas读写操作IO工具CSV怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Pytho...
    99+
    2023-07-02
  • Java如何实现日期处理工具类DateUtils
    小编给大家分享一下Java如何实现日期处理工具类DateUtils,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体内容如下import java.sq...
    99+
    2023-05-30
    java dateutils
  • token工作机制及原理附Java生成token工具类
    目录什么是token基于 Token 的身份验证token的优势1.无状态、可扩展2.安全性3.可扩展性4.多平台跨域5.基于标准token原理token实现思路token代码生成工...
    99+
    2024-04-02
  • Java工具类RelativeDateFormat怎么使用
    要使用Java工具类RelativeDateFormat,您可以按照以下步骤进行操作:1. 下载RelativeDateFormat...
    99+
    2023-10-20
    Java
  • Java日期工具类操作字符串Date和LocalDate互转
    目录字符串转DateDate转字符串字符串转LocalDateDate转LocalDateLocalDate转字符串两个日期的时间差一天的开始和结束时间工具类前言: 避免重复造轮子,...
    99+
    2024-04-02
  • 怎么使用Java工具类库hutool
    本篇内容介绍了“怎么使用Java工具类库hutool”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!简介Hutool是Hu + tool的自造...
    99+
    2023-06-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作