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(含水印文字及图片)的源代码,操作说明详细,代码完整可用。
在实际应用中,你可能需要根据实际需求对水印的透明度、角度、字体等进行更复杂的调整。此外,如果处理大量PDF,记得使用`PdfCopy`类批量处理以提高效率。 通过以上步骤,你可以使用iText PDF库为PDF文档添加中文...
以下是一个简单的示例,展示如何使用iText添加文字水印: ```java public void addTextWatermark(String srcPdfPath, String destPdfPath, String watermarkText) { try { PdfReader reader = new PdfReader...
使用itext开发包对pdf文件进行去水印操作,包括删除图片水印和文字水印。通过遍历pdf的contents对象和xobjects对象,进行对象删除,速度快,效率高
3. **定义水印内容和样式**:创建一个`ColumnText`对象,设置字体、大小、颜色和旋转角度等属性,这将用于创建水印文本。 ```java Font font = new Font(Font.FontFamily.UNDEFINED, 24, Font.NORMAL, BaseColor....
9. 运行demo:提供的`itext图片转pdf的demo`可能是一个完整的Java程序,包含了上述步骤的实现。运行这个示例,可以直观地看到如何使用`iText`库生成高清PDF。 在实际应用中,可能还需要考虑其他因素,如图片的原始...
`iText`库提供了丰富的API,可以方便地对PDF进行各种操作,包括添加水印。以下是一些关于使用`iText`添加PDF水印的关键知识点: 1. **安装和引入iText库**:首先,你需要将`iText`的JAR包添加到你的项目类路径中。...
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 ...
这些示例代码通常会展示如何初始化PDF文档、添加页面、设置字体和样式、插入文本、绘制图形、创建表格和列表、处理图像以及添加链接等操作。通过研究这些示例,开发者能够快速理解和掌握iText库的使用方法,从而在...
这个资源中包含了itext7操作图片的案例代码,包括:添加图片到PDF中、旋转图片、平铺图片、图片的宽度和高度自适应。详细的教程可以查看文章:https://blog.csdn.net/qq_39826207/article/details/140328872。
这是一个itext生成pdf水印的例子。其中需要几个文件。
然而,有时我们需要对PDF进行编辑,比如在已有的PDF页面上添加图片。这里我们将深入探讨如何使用Java和iTextPDF库来实现这一功能。 iTextPDF是一个开源的Java库,专门用于创建、修改和处理PDF文档。它提供了丰富的...
在IT行业中,iText是一个广泛使用的Java和.NET库,用于创建、编辑和处理PDF文档。在最新的版本iText 7中,它提供了丰富的功能,包括将PDF文档转换为图像。这个话题涉及到PDF处理和图像转换两个核心领域。下面将详细...
本资源包包含了iText 5.5.11版本的组件,以及专门针对亚洲语言支持的itext-asian5.20.jar,同时提供了加水印和去水印的代码示例,为开发者提供了强大的PDF处理能力。 1. iText 5.5.11:这是iText的一个稳定版本,...
IText5 Excel转pdf ,带有添加文字水印,图片水印实例。 文件中含有依赖的jar,代码,下载后你直接可以用了,花了2天时间整理完成。 共3个方法,一个是生成pdf,第2个是加文字水印,第3个是加图片水印 public static...
总的来说,Java通过Apache POI和PDFBox等库,为开发者提供了强大的工具来操作Word和PDF文档,并生成图片水印。这不仅可以提高工作效率,也能有效地保护和标记文档内容。通过深入学习和实践,开发者可以掌握这些技能...
本篇将详细介绍如何使用iText5库来生成PDF,以及如何对PDF进行操作,如添加水印等。 首先,我们需要引入iText的相关库。在提供的文件列表中,我们看到有`itext-asian-5.2.0.jar`、`itextpdf-5.5.5.jar`和`itext-...
同时,为了提高效率,可以考虑使用多线程或者异步操作来处理大量图片的转换。 总的来说,iText是一个强大且灵活的PDF处理库,对于需要将图片转换为PDF的场景,它提供了高效且易于使用的解决方案。通过熟练掌握iText...
5. **保存图片**:`renderImageWithDPI`方法返回一个`BufferedImage`对象,你可以使用Java的`ImageIO`类将其保存为JPG、PNG等常见图片格式。 ```java File outputFolder = new File("output_images"); if (!output...
`iText`提供了丰富的API,可以方便地进行PDF操作。在C#中,我们需要引入`iTextSharp`库,这是`iText`的.NET版本。可以通过NuGet包管理器安装`iTextSharp`,在项目中添加引用。 接下来,让我们看看如何创建一个简单...