pdf加水印,文字和图片,超链接, java itext, 这里有你想要的一切

最近公司网站的pdf需要加上我们自己的水印,多番review打水印加链接的方法, windows上的A-PDF可以满足需求, 之前网站组也是用这种方法做的, 但是效率较低, 因为公司的pdf的其他处理逻辑我们都部署到了分布式的linux系统上,为了一致性和提高效率,多番谷歌和度娘–(发现多数blog只是实现了在pdf里打上文字水印的功能, 而且大同小异, 一看就是相互抄袭), 偶然发现了java的itext包, 并在github下载了一个开源可运行的jar包,给力!!修改了他的部分代码, 实现需求。

jar包地址:https://github.com/CrossRef/pdfstamp

废话不多说, 贴代码, 有用的话, 记得手动点赞
注: 需要itext包

package org.crossref.pdfstamp;

import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Image;

import java.awt.geom.AffineTransform;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.kohsuke.args4j.Argument;
import org.kohsuke.args4j.CmdLineException;
import org.kohsuke.args4j.CmdLineParser;
import org.kohsuke.args4j.Option;

import com.itextpdf.text.BadElementException;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfAction;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;

// -u "http://blah.com" -i somefile.jpeg -l 1,44.5,22.3,3,22.2,22.2 some/dir
//                                                          or some.file

// or:
//-u "http://blah.com" -i somefile.jpeg -l 1,44.5,22.3 -l 3,22.2,22.2 some/dir
//                                                          or some.file
public class Main {
   
// 各类参数
    @Option(name="-p", usage="Optional. Page numbers to stamp. -1 is the last page.",
            required=false, multiValued=true, metaVar="P1,P2...")
    private List<Integer> pages = new ArrayList<Integer>();

    @Option(name="-l", usage="Required. Location on page to apply stamp.",
            required=true, multiValued=false, metaVar="X,Y")
    private StampTuple stampLocation = new StampTuple();

    @Option(name="-e", usage="Optional. Extension appended to the PDF filename.",
            required=false, multiValued=true, metaVar="EXT")
    private String outputExtension = "stamped";

    @Option(name="-r", usage="Optional. Descend recursively into directories.")
    private boolean recursive = false;

    @Option(name="-u", usage="Optional. Target URL of the stamp.",
            required=false, multiValued=
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值