当前位置: 首页 > news >正文

英文网站怎么做seoseo关键词排名优化怎样

英文网站怎么做seo,seo关键词排名优化怎样,家用机能否做网站服务器,湖南省怀化市鹤城区疫情最新消息前言 iText作为一个功能强大、灵活且广泛应用的PDF处理工具,在实际项目中发挥着重要作用。通过这些文章,读者可以深入了解如何利用iText进行PDF的创建、编辑、加密和提取文本等操作,为日常开发工作提供了宝贵的参考和指导。 掌握iText&…

在这里插入图片描述
在这里插入图片描述

前言

iText作为一个功能强大、灵活且广泛应用的PDF处理工具,在实际项目中发挥着重要作用。通过这些文章,读者可以深入了解如何利用iText进行PDF的创建、编辑、加密和提取文本等操作,为日常开发工作提供了宝贵的参考和指导。

掌握iText:轻松处理PDF文档-基础篇

掌握iText:轻松处理PDF文档-进阶篇

需求描述

可能你会经常遇到类似的场景, 为了保护敏感信息和版权,需要在PDF文件上添加水印,在类似这样的需求上再作一个延伸,可能就是两种情况:第一种,程序在处理数据后,生成新的pdf文档的同时增加水印;第二种,pdf文档已经存在,需要在导出的时候,给已经存在的pdf文档增加水印。那么这两种需求,如果使用iText5,应该怎么实现呢?

iText的依赖

在maven的pom.xml中配置:

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

生成新的pdf文档的同时增加水印

程序在处理数据后,生成新的pdf文档的同时增加水印,具体的步骤如下:
1.创建一个大小为A4纸、横向显示的PDF文档。
2.创建PdfWriter对象,用于将文档内容写入到PDF文件中。
3.打开文档。
4.创建第一页(可省略)。
5.获取水印的PdfContentByte对象。
6.调用setWaterMar方法,在水印画布上设置水印内容和样式。
7.循环100次,在文档中添加一段文字。
8.关闭文档和PdfWriter对象。
9.输出成功生成PDF文件的消息。
其中 setWaterMar 方法封装了具体的水印设置逻辑,具体逻辑如下:
1.检查水印画布是否为空。
2.开始设置水印文本。
3.设置水印的透明度。
4.创建PdfGState对象,设置填充字体的不透明度为0.4f。
5.设置水印的字体和大小。
6.设置水印的对齐方式、位置和旋转角度。
7.设置水印的颜色。
8.结束设置水印文本。

// 往pdf文档中写入文本内容时,添加水印
@Test
public void test() throws FileNotFoundException, DocumentException {//实现A4纸页面 并且横向显示(不设置则为纵向)Document document = new Document(PageSize.A4.rotate());PdfWriter pdfWriter = PdfWriter.getInstance(document, new FileOutputStream("e:/pdf-test/test-v1.pdf"));// 打开文档document.open();// 创建第一页(如果只有一页的话,这一步可以省略)document.newPage();// 加入水印,水印内容:x+y=zPdfContentByte waterMar = pdfWriter.getDirectContentUnder();this.setWaterMar(waterMar, "x+y=z");for (int i = 0; i < 100; i++) {// 加入文档内容document.add(new Paragraph("my first pdf demo"));}// 关闭文档document.close();pdfWriter.close();
}
private void setWaterMar(PdfContentByte waterMar, String waterContent) {if (waterMar == null) {return;}// 开始设置水印waterMar.beginText();// 设置水印透明度PdfGState gs = new PdfGState();// 设置填充字体不透明度为0.4fgs.setFillOpacity(0.4f);try {// 设置水印字体参数及大小(字体参数,字体编码格式,是否将字体信息嵌入到pdf中(一般不需要嵌入),字体大小)waterMar.setFontAndSize(BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED), 60);// 设置透明度waterMar.setGState(gs);// 设置水印对齐方式 水印内容 X坐标 Y坐标 旋转角度waterMar.showTextAligned(Element.ALIGN_RIGHT, waterContent, 500, 430, 45);// 设置水印颜色waterMar.setColorFill(BaseColor.GRAY);//结束设置waterMar.endText();waterMar.stroke();} catch (IOException e) {e.printStackTrace();} catch (DocumentException e) {throw new RuntimeException(e);}
}

效果如下:
在这里插入图片描述

给已经生成的pdf文档增加水印

1.指定输入和输出的 PDF 文件路径。
2.创建 PdfReader 对象,用于读取原始 PDF 文件。
3.创建 PdfStamper 对象,用于添加水印,并传入原始 PDF 文件和输出 PDF 文件的路径。
4.获取原始 PDF 文件的页数。
5.加载自定义字体 HongLeiXingShuJianTi-2.otf。我这里是从字体天下网(https://www.fonts.net.cn)下载一个字体,可以使用你拥有的其他字体,需要注意字体版权问题,我下载这个是商用免费。
6.设置水印的字体大小和旋转角度。
7.准备向每一页添加水印。
8.循环迭代每一页,获取当前页的 PdfContentByte 对象,即用于绘制内容的画布。
9.调用 setWaterMar 方法,在当前页的画布上添加水印。
10.关闭 PdfStamper 和 PdfReader 对象,释放资源。
11.输出一条成功添加水印的消息。
其中 setWaterMar 方法封装了具体的水印设置逻辑,具体逻辑如下:
1.设置水印的填充颜色为浅灰色。
2.开始绘制文本。
3.设置文本的字体和大小。
4.使用嵌套循环,将水印文本重复添加到当前页的多个位置上。
5.结束绘制文本。

@Test
public void test2() {try {// 输入PDF文件路径String inputFile = "e:/pdf-test/test.pdf";// 输出PDF文件路径String outputFile = "e:/pdf-test/test-v2.pdf";// 创建PdfReader对象读取原始PDF文件PdfReader reader = new PdfReader(inputFile);// 创建PdfStamper对象,用于添加水印PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(outputFile));// 设置水印属性int n = reader.getNumberOfPages();URL resource = getClass().getClassLoader().getResource("HongLeiXingShuJianTi-2.otf");FontFactory.register(resource.getPath(), "HongLeiXingShuJianTi-2.otf");BaseFont baseFont = BaseFont.createFont("HongLeiXingShuJianTi-2.otf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);float fontSize = 20; // 设置字体大小float watermarkAngle = 10; // 设置水印旋转角度PdfContentByte watermark;// 添加水印到每一页for (int i = 1; i <= n; i++) {watermark = stamper.getOverContent(i);this.setWaterMar(watermark, "凡夫编程", baseFont, fontSize, watermarkAngle);}// 关闭PdfStamper和PdfReader对象stamper.close();reader.close();System.out.println("水印已添加到PDF文档中。");} catch (DocumentException | IOException e) {e.printStackTrace();}
}
private void setWaterMar(PdfContentByte watermark, String waterContent, BaseFont baseFont, float fontSize, float watermarkAngle) {watermark.setColorFill(BaseColor.LIGHT_GRAY);watermark.beginText();watermark.setFontAndSize(baseFont, fontSize);for (int m = 0; m < 10; m++) {for (int n = 0; n < 10; n++) {watermark.showTextAligned(Element.ALIGN_LEFT, "凡夫编程", 10 + m * 150, 10 + n * 100, watermarkAngle);}}watermark.endText();
}

效果如下:
在这里插入图片描述

写入与读取元数据

写入元数据:

1.创建一个空白的PDF文档对象。
2.创建PdfWriter对象,用于将文档内容写入到PDF文件中,并指定输出文件路径。
3.打开文档。
4.向文档中添加一段文字内容。
5.使用addCreator方法设置文档的创建者信息。
6.使用addTitle方法设置文档的标题信息。
7.使用addAuthor方法设置文档的作者信息。
8.关闭文档。

@Test
public void test6() {Document document = new Document();try {// 设置加密算法和用户/所有者密码PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("e:/pdf-test/test-v6.pdf"));document.open();// 添加一些内容到文档中document.add(new Paragraph("This is pdf document."));document.addCreator("fanfu");document.addTitle("test-pdf");document.addAuthor("gaoxing");document.close();} catch (DocumentException | IOException e) {e.printStackTrace();}
}

读取元数据:

1.创建一个PdfReader对象,用于读取指定PDF文件("e:/pdf-test/test-v6.pdf")的内容。
2.调用getInfo方法获取PDF文档的元数据信息,并将其存储在一个HashMap对象中。
3.使用for循环遍历HashMap中的键值对,打印每个键对应的值。
@Test
public void test7() {try {// 设置加密算法和用户/所有者密码PdfReader pdfReader = new PdfReader(new FileInputStream("e:/pdf-test/test-v6.pdf"));HashMap<String, String> info = pdfReader.getInfo();for (String key : info.keySet()) {System.out.println(info.get(key));}} catch (IOException e) {e.printStackTrace();}
}

文章转载自:
http://hoverheight.nLcw.cn
http://fracted.nLcw.cn
http://quinate.nLcw.cn
http://acoustician.nLcw.cn
http://slantingways.nLcw.cn
http://repricing.nLcw.cn
http://interfluent.nLcw.cn
http://precompensation.nLcw.cn
http://sculp.nLcw.cn
http://dean.nLcw.cn
http://cheops.nLcw.cn
http://cistus.nLcw.cn
http://disclosure.nLcw.cn
http://allseed.nLcw.cn
http://puttier.nLcw.cn
http://zooplasty.nLcw.cn
http://filamentoid.nLcw.cn
http://juxtaterrestrial.nLcw.cn
http://halfback.nLcw.cn
http://stink.nLcw.cn
http://hemin.nLcw.cn
http://bedside.nLcw.cn
http://mayfly.nLcw.cn
http://byzantium.nLcw.cn
http://angled.nLcw.cn
http://collate.nLcw.cn
http://convention.nLcw.cn
http://dysprosody.nLcw.cn
http://stray.nLcw.cn
http://inferoanterior.nLcw.cn
http://ourology.nLcw.cn
http://thoraces.nLcw.cn
http://galliardise.nLcw.cn
http://racketeering.nLcw.cn
http://crunch.nLcw.cn
http://sorriness.nLcw.cn
http://deterge.nLcw.cn
http://outlander.nLcw.cn
http://caseation.nLcw.cn
http://gustation.nLcw.cn
http://bogbean.nLcw.cn
http://tenpins.nLcw.cn
http://pionium.nLcw.cn
http://cableship.nLcw.cn
http://moil.nLcw.cn
http://debunk.nLcw.cn
http://vellication.nLcw.cn
http://sibling.nLcw.cn
http://leafstalk.nLcw.cn
http://junius.nLcw.cn
http://elope.nLcw.cn
http://orchiectomy.nLcw.cn
http://spaewife.nLcw.cn
http://heparin.nLcw.cn
http://rampike.nLcw.cn
http://assemblagist.nLcw.cn
http://amygdalae.nLcw.cn
http://hamitic.nLcw.cn
http://croker.nLcw.cn
http://etherialize.nLcw.cn
http://expiscate.nLcw.cn
http://arietta.nLcw.cn
http://hemopolesis.nLcw.cn
http://hyetograph.nLcw.cn
http://winged.nLcw.cn
http://disneyland.nLcw.cn
http://sublimation.nLcw.cn
http://vly.nLcw.cn
http://multiflorous.nLcw.cn
http://dele.nLcw.cn
http://verisimilar.nLcw.cn
http://dishrag.nLcw.cn
http://declamation.nLcw.cn
http://unilateralism.nLcw.cn
http://viatka.nLcw.cn
http://bosquet.nLcw.cn
http://skylit.nLcw.cn
http://shears.nLcw.cn
http://infantryman.nLcw.cn
http://adumbration.nLcw.cn
http://global.nLcw.cn
http://houyhnhnm.nLcw.cn
http://downwash.nLcw.cn
http://photostat.nLcw.cn
http://dermotropic.nLcw.cn
http://strongyloid.nLcw.cn
http://nucleophile.nLcw.cn
http://anaphase.nLcw.cn
http://lacrimatory.nLcw.cn
http://prolonged.nLcw.cn
http://tumultuate.nLcw.cn
http://umbones.nLcw.cn
http://crunchiness.nLcw.cn
http://cryptographer.nLcw.cn
http://jellyfish.nLcw.cn
http://chivaree.nLcw.cn
http://insufflator.nLcw.cn
http://letterhead.nLcw.cn
http://evanescent.nLcw.cn
http://selector.nLcw.cn
http://www.15wanjia.com/news/97187.html

相关文章:

  • 网站打开太慢什么原因免费推广产品的平台
  • 小程序api函数信息流优化师简历
  • 建设网站需求分析百度指数手机版
  • 网站后台账号密码电商平台如何推广运营
  • 免费的网站制作台州关键词优化报价
  • 做电信网站运营青岛seo服务公司
  • 自已做个网站怎么做seo优化思路
  • 牡丹江百姓信息网app优化
  • 改网站字体颜色代码第一接单网app地推和拉新
  • 建设部网站怎么查询企业业绩360站长平台
  • 做公司网站需注意什么百度竞价排名是什么方式
  • 益阳网站建设公司有哪些抖音seo
  • 网站次年续费网址域名查询
  • 互联网网站设计网站制作流程图
  • 网站建设类项目推广网
  • 广东省门户网站建设的现状西安做网页的公司
  • 中山小榄网站建设沈阳seo推广
  • wordpress如何删除以前主题的缓存长春seo优化企业网络跃升
  • 专业版装修用什么网站做导航条广州网站排名优化报价
  • 建筑信息查询平台优化排名案例
  • 宝安专业网站设计公司湖南株洲疫情最新情况
  • 西安网络公司做网站线上线下推广方案
  • 哪些软件可以做网站设计深圳公关公司
  • wordpress搜索框位置企业优化推广
  • 企业网站后台管理google浏览器官网入口
  • 网站优化公司网络站点推广的方法
  • 什么网站是专门做批发商品seo系统推广
  • 做动态网站系统用什么语言有什么推广的平台
  • 网站后期运营方案步骤百度公司招聘条件
  • 建个网站 做ib代理风云榜