自个整理的一个生成PDF的常用方法:
package com.huangt.util.function;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import javax.swing.ImageIcon;
import com.lowagie.text.Document;
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.PdfContentByte;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfStamper;
import com.lowagie.text.pdf.PdfWriter;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import de.schlichtherle.io.FileReader;
public class PDFUtils {
/**
* 生成水印的图片
* @author huangt
* @time 2012.6.14
*
*/
public static void createJpgByFont(String str, String jpgName) {
try {
// 宽度 高度
final int smallWidth = 60 ;
BufferedImage bimage = new BufferedImage((str.length() + 3)
* smallWidth/2,smallWidth, BufferedImage.TYPE_INT_RGB);
Graphics2D g = bimage.createGraphics();
g.setColor(Color.WHITE); // 背景色
g.fillRect(0, 0, smallWidth * (str.length() + 2),smallWidth); // 画一个矩形
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
// 去除锯齿(当设置的字体过大的时候,会出现锯齿)
g.setColor(Color.LIGHT_GRAY); // 字的颜色
File file = new File("C:/WINDOWS/Fonts/Arial.ttf"); // 字体文件
Font font = Font.createFont(Font.TRUETYPE_FONT, file);
// 根据字体文件所在位置,创建新的字体对象(此语句在jdk1.5下面才支持)
g.setFont(font.deriveFont((float) smallWidth));
g.drawString(str,0,smallWidth);
//旋转图片
bimage = PDFUtils.rotateImage(bimage, -45);
// 在指定坐标除添加文字
g.dispose();
FileOutputStream out = new FileOutputStream(jpgName); // 指定输出文件
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bimage);
param.setQuality(50f, true);
encoder.encode(bimage, param); // 存盘
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* txt文件转换为pdf文件
* @author huangt
* @time 2012.6.14
* @param txtFile txt文件路径
* @param pdfFile pdf文件路径
* @param userPassWord 用户密码
* @param waterMarkName 水印内容
* @param permission 操作权限
*/
public static void generatePDFWithTxt(String txtFile, String pdfFile,
String userPassWord, String waterMarkName) {
try {
// 生成临时文件
File file = File.createTempFile("huangt", ".pdf");
// 创建pdf文件到临时文件
if (createPDFFile(txtFile, file)) {
// 增加水印和加密
//waterMark(file.getPath(), pdfFile,waterMarkName);
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* @author huangt
* @time 2012.6.14
* 创建PDF文档
*
* @param txtFilePath txt文件路径(源文件)
* @param pdfFilePath pdf文件路径(新文件)
*/
private static boolean createPDFFile(String txtFilePath, File file) {
// 设置纸张
Rectangle rect = new Rectangle(PageSize.A4);
// 设置页码
HeaderFooter footer = new HeaderFooter(new Phrase("页码:"), 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()));
}
// 关闭pdf文件 step5
doc.close();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 在pdf文件中添加水印
* @author huangt
* @time 2012.6.14
* @param inputFile 原始文件
* @param outputFile 水印输出文件
* @param waterMarkName 水印名字
* @param picPath 图片的路径
*/
public static void waterMark(String inputFile,String outputFile,String waterMarkName,String picPath) {
try {
PdfReader reader = new PdfReader(inputFile);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(
outputFile));
int total = reader.getNumberOfPages() + 1;
//生成水印图片
createJpgByFont(waterMarkName, picPath) ;
Image image = Image.getInstance(picPath);
image.setAbsolutePosition(0,100);
PdfContentByte under;
for (int i = 1; i < total; i++) {
under = stamper.getUnderContent(i);
// 添加图片
under.addImage(image);
}
stamper.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 图片旋转
* @author huangt
* @time 2012.6.14
*
*/
public static BufferedImage rotateImage(final BufferedImage bufferedimage,
final int degree){
int w = bufferedimage.getWidth();
int h = bufferedimage.getHeight();
int b = w>h?w:h ;
int type = bufferedimage.getColorModel().getTransparency();
BufferedImage img;
Graphics2D graphics2d;
graphics2d = (img = new BufferedImage(b, b, type))
.createGraphics();
graphics2d.setColor(Color.WHITE); // 背景色
graphics2d.fillRect(0, 0,b,b); // 画一个矩形
graphics2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
graphics2d.setColor(Color.WHITE); // 背景色
graphics2d.rotate(Math.toRadians(degree),w,h);
graphics2d.drawImage(bufferedimage,-(int)(b*0.28)/2,0, null);
graphics2d.dispose();
return img;
}
}
分享到:
相关推荐
`PdfUtils.java`很可能包含了一些关键方法,用于在PDF的指定位置精确地渲染和写入文字或图片。以下是一些相关的知识点: 1. **iText库**:Java中处理PDF通常会使用iText库,这是一个强大的开源库,能够创建、编辑和...
资源分类:Python库 所属语言:Python 资源全名:PDFutils-1.0.4.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
PdfUtils.java
PDFUtils.zip是一个包含C#代码实现的工具集,专门用于处理PDF文档,主要功能是PDF的分割和将PDF转换为图片。在这个项目中,开发者可能使用了开源库或自定义的算法来高效地完成这些任务。PDF(Portable Document ...
django-pdfutils 一个简单的django应用程序,用于生成PDF文档。...报告范例报表基本上是具有自定义方法和属性的视图。 # -*- coding: utf-8 -*-from django . contrib . auth . models import Userf
word转pdf,excel转pdf,ppt转pdf的工具包。springboot项目导入项目开箱即用,可以添加到项目的资源包中使用,也可以安装到maven中使用。
在实际使用"word2pdfUtil"时,开发人员需要按照提供的API接口,将Word文档的路径作为输入参数,然后调用转换方法,最后得到生成的PDF文件。这个过程通常包括以下步骤:加载Word文档、解析文档内容、构建PDF结构、...
用python写了一个工具,可以处理pdf,把多页pdf转成多张jpg或者png,将jpg的选定部分裁剪,将处理好的图片重新生成pdf集合。
然后,创建一个 PdfUtils 工具类,用于生成PDF文档。 四、PDF工具类编写 PdfUtils工具类主要用于生成PDF文档。该类中包含了生成HTML模板、将HTML模板转换为PDF文档的方法。方法上有完整的注释,思路是利用模板引擎...
PDF实用程序要求: 设置: git clone git@github.com:dothealth/pdf-utils.git cd pdf-utils && docker-compose up 打开浏览器到localhost:5052
在Java中,有几种常用的库可以用来处理PDF,例如Apache PDFBox、iText和PDFClown等。其中,Apache PDFBox是Apache软件基金会的一个开源项目,它提供了丰富的API来读取、创建、编辑PDF文档。iText则是一个强大的PDF...
在`PdfUtils.java`中,我们可以看到一些基本的PDF生成和操作方法。例如,创建一个PDF文档通常需要以下步骤: 1. **初始化Document对象**:`Document document = new Document();` 这个对象是整个PDF的容器,用于...
该PdfUtils工具类,是java对pdf文档增加水印,也可以使用该工具模拟实现电子签。提供了两个方法:1添加条码 ;2.添加图片水印
接下来,我们使用`PDFUtils.html2pdf()`方法将这个HTML字符串转化为PDF。这个方法通常会调用iText库中的方法,如`XMLWorker`和`PdfWriter`,将HTML解析并转换为PDF文档。 在服务器端生成PDF后,我们需要将其设置...
在本文中,我们将深入探讨Aspose.Pdf的使用方法,并结合提供的资源来理解其在实际开发中的应用。 首先,`aspose.pdf-11.0.0.jar`是Aspose.Pdf的库文件,包含了所有必要的类和方法,使得Java开发者能够在项目中直接...
2. 文件转换方法:接收输入的源文件路径和目标PDF文件路径,调用JODConverter API执行转换操作。 3. 错误处理:捕获并处理可能发生的异常,如文件找不到、OpenOffice服务未启动等。 `命令行.txt` 文件可能包含了...
一个常用的库是`jsPDF`,它提供了丰富的API来创建和编辑PDF文件。要引入`jsPDF`,你需要先通过npm或yarn将其安装到你的项目中: ```bash npm install jspdf --save # 或者 yarn add jspdf ``` 接着,我们需要处理...