Java编辑PDF写入文字 插入图片

package com.test;

import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Font;
import com.itextpdf.text.Image;
import com.itextpdf.text.pdf.*;
import org.junit.Test;

import java.io.FileOutputStream;

/**
 *编辑PDF
 */
public class PDFTest {
    @Test
    public void testPDF(){
        generatePDF("D:/1.pdf","D:/2.pdf","D:1.png");
    }

    /**
     * 生成新的PDF
     * @param pdfPath 要编辑的PDF路径
     * @param newPDFPath 生成新的PDF路径
     * @param imagePath 插入图片路径
     */
    public void generatePDF(String pdfPath,String newPDFPath,String imagePath){
        try{
            //创建一个pdf读入流
            PdfReader reader = new PdfReader(pdfPath);
            //根据一个pdfreader创建一个pdfStamper.用来生成新的pdf.
            PdfStamper stamper = new PdfStamper(reader,new FileOutputStream(newPDFPath));
            //这个字体是itext-asian.jar中自带的 所以不用考虑操作系统环境问题.
            BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
            //baseFont不支持字体样式设定.但是font字体要求操作系统支持此字体会带来移植问题.
            Font font = new Font(bf,10);
            font.setStyle(Font.BOLD);
            font.getBaseFont();
            PdfContentByte over;
            //页数是从1开始的
            for (int i=1; i<=reader.getNumberOfPages(); i++){
                //获得pdfstamper在当前页的上层打印内容.也就是说 这些内容会覆盖在原先的pdf内容之上.
                over = stamper.getOverContent(i);
                //当前页的下层打印内容  按自己需求选择
                //over = stamper.getUnderContent(i);
                //用pdfreader获得当前页字典对象.包含了该页的一些数据.比如该页的坐标轴信息.
                PdfDictionary p = reader.getPageN(i);
                //拿到mediaBox 里面放着该页pdf的大小信息.
                PdfObject po =  p.get(new PdfName("MediaBox"));
                //po是一个数组对象.里面包含了该页pdf的坐标轴范围.
                PdfArray pa = (PdfArray) po;
                //开始写入文本
                over.beginText();
                //设置字体和大小
                over.setFontAndSize(font.getBaseFont(), 90);
                //设置字体颜色
                over.setColorFill(new BaseColor(0,110,107,100));
                com.itextpdf.text.pdf.PdfGState gState = new PdfGState();
                gState.setStrokeOpacity(0.1f);
                over.setGState(gState);
                //要输出的text          对齐方式          写的字        设置字体的输出位置  字体是否旋转
                over.showTextAligned(0,"HELLO WORLD",0,100,100);
                over.endText();
                //创建一个image对象.
                Image image = Image.getInstance(imagePath);
                //设置image对象的输出位置pa.getAsNumber(pa.size()-1).floatValue() 是该页pdf坐标轴的y轴的最大值  0, 0, 841.92, 595.32
                image.setAbsolutePosition(0,pa.getAsNumber(pa.size()-1).floatValue());
                //设置插入的图片大小
                image.scaleToFit(50,50);
                over.addImage(image);
                //画一个圈.
                over.setRGBColorStroke(0xFF, 0x00, 0x00);
                over.setLineWidth(5f);
                over.ellipse(250, 450, 350, 550);
                over.stroke();
            }
            stamper.close();
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}
PDF开发包下载地址:http://pdfbox.apache.org/

原文地址:https://www.cnblogs.com/qinxu/p/8270310.html

时间: 2024-08-26 09:37:05

Java编辑PDF写入文字 插入图片的相关文章

怎样编辑PDF的文字和图片

PDF文件在便携性上要优于word和其他的办公格式文档,所谓有得必有失,PDF文件在编辑操作上去不如那些文档简单.如今PDF文件的应用也是很广的,很多时候在网上或是其他途径获取的文档都是PDF格式,这在需要文档内容在进行编辑修改时会有很大影响,那我们有没有办法可以简单编辑PDF中的文字图片内容呢. PDF文件的编辑和浏览查看是分开操作的,需要用不同工具来操作,所以编辑PDF文件的话还需要先安装PDF编辑工具,然后用编辑工具打开文档进行编辑. 打开文档后可以在编辑区来修改pdf文件的内容,通过页面

MVC 生成PDf表格并插入图片

最近做的项目中有一个功能,将最终的个人信息生成PDF表格,并插入图片.对于没接触过的程序员来说回一片茫然,网上有多种生成PDf的方法,我给大家介绍一下我认为比较简单,好操作的一种. iTextSharp组件 使用方法. 1,引入itextsharp.dll 2,  引入命名空间 ? 1 2 3 using iTextSharp; using iTextSharp.text; using iTextSharp.text.pdf; ? 1 2 3 4 5 6 7 8 9 10 11 12     D

使用lowagie给pdf添加文字和图片水印

package com.xian.util; import java.awt.Color;import java.io.FileOutputStream;import java.io.IOException; import com.lowagie.text.DocumentException;import com.lowagie.text.Element;import com.lowagie.text.Image;import com.lowagie.text.pdf.BaseFont;impo

c# iText 生成PDF 有文字,图片,表格,文字样式,对齐方式,页眉页脚,等等等,

#region 下载说明书PDF protected void lbtnDownPDF_Click(object sender, EventArgs e) { int pid = ConvertHelper.GetInteger(Request["PID"]); pds = p.GetModel(pid); #region 第一种方法 DataTable datatable = new DataTable(dt.ToString()); try { string Url1 = &quo

C#中如何创建PDF网格并插入图片

这篇文章我将向大家演示如何以编程的方式在PDF文档中创建一个网格,并将图片插入特定的网格中. 网上有一些类似的解决方法,在这里我选择了一个免费版的PDF组件.安装控件后,创建新项目,添加安装目录下的dll文件作为项目的引用以及命名空间,如下: using Spire.Pdf; using Spire.Pdf.Graphics; using Spire.Pdf.Grid; 接下来是详细步骤及代码片段: 步骤1: 首先创建一个PDF文档,并添加一个新页面. PdfDocument doc = new

在Java的图形界面中插入图片

class pictureShow{ JFrame fr1,fr2; JLabel pictureLabel1,pictureLabel2; JPanel pan1,pan2; pictureShow(){ } public void Show1() { fr1=new JFrame("根据酒店地理位置分簇的展示图"); pan1=new JPanel(); pictureLabel1=new JLabel(new ImageIcon(".\\picture1.png&quo

ios 视频编辑,添加文字、图片(CA动画)水印,合成视频

参考link: 1,http://stackoverflow.com/questions/15932041/how-can-i-add-a-watermark-in-a-captured-video-on-ios(添加水印) 2,https://abdulazeem.wordpress.com/2012/04/02/video-manipulation-in-ios-resizingmerging-and-overlapping-videos-in-ios(合成视频) 3,http://www.

如何编辑PDF文件?PDF编辑的基础教程

如何编辑PDF呢?其实大多数人都不知道该如何下手,部分人会选择将PDF文件转换成Word然后进行编辑,其实这种方法比较麻烦,大大拉低了我们的工作效率.如果想要提高工作效率更加快速的编辑PDF文件,就可以选择迅捷PDF编辑器来完成,下面我们就一起来揭晓PDF文件编辑的奥秘!使用软件:PDF编辑器http://bianji.xjpdf.com/软件介绍:迅捷PDF编辑器是一款专业的pdf编辑软件.支持对PDF文件内容进行添加.修改.绘图.标注等操作.是pdf编辑器中功能较全.效果较好的一款中文版PD

mysql插入图片数据

import java.sql.*; import java.util.Scanner; import java.io.*; public class mysql插入图片 { private static final File File = null; private static String String; public static Connection getConn() { Connection conn = null; try { Class.forName("com.mysql.j