700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Java中为PDF文件生成二维码/增加文字水印/图片水印/PDF转为base64/base64转为PDF文件等

Java中为PDF文件生成二维码/增加文字水印/图片水印/PDF转为base64/base64转为PDF文件等

时间:2021-09-10 08:06:53

相关推荐

Java中为PDF文件生成二维码/增加文字水印/图片水印/PDF转为base64/base64转为PDF文件等

目录

为PDF文件生成二维码

为PDF文件增加文字水印

为PDF文件增加图片水印

PDF文件转为base64

将base64转为PDF文件

​​​​​​​

为PDF文件生成二维码

@GetMapping("createQrcodeOfPdf")public void createQrcodeOfPdf() throws IOException, DocumentException {//生成PDF文件的路径String path = "/Users/mudisheng/Desktop/mudisheng/";//生成PDF文件FileOutputStream fileOutputStream = new FileOutputStream(path+"qrCodePdf.pdf");//PDF文件所用字体BaseFont baseFont = BaseFont.createFont("STSong-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);//PDF文件中所用字体大小Font fontOne = new Font(baseFont,16,Font.NORMAL);Font fontTwo = new Font(baseFont,15,Font.NORMAL);Font fontThree = new Font(baseFont,22,Font.BOLD);Font fontFour = new Font(baseFont,16,Font.BOLD);Font fontFive = new Font(baseFont,10,Font.NORMAL);Document document = new Document(PageSize.A4,53,53,45,20);PdfWriter pdfWriter = PdfWriter.getInstance(document,fileOutputStream);document.open();Paragraph textTitle = new Paragraph("这是我测试为PDF文件增加二维码的文件",fontThree);textTitle.setAlignment(Element.ALIGN_CENTER);document.add(textTitle);String linkString = "/mudisheng0202?spm=1001.2101.3001.5343";//生成的二维码BarcodeQRCode barcodeQRCode = new BarcodeQRCode(linkString,100,100,null);Image qrCodeImage = barcodeQRCode.getImage();qrCodeImage.setAbsolutePosition(40,720);qrCodeImage.scalePercent(120f);document.add(qrCodeImage);Phrase phrase = new Phrase("扫一下可关注",fontFive);Paragraph paragraph = new Paragraph();paragraph.add(phrase);paragraph.setIndentationLeft(20);paragraph.setLeading(40f);document.add(paragraph);document.close();}

效果展示:

为PDF文件增加文字水印

public static void setTextWaterMarkForPdf(String inputFile,String outputFile,String textWaterMark){try {PdfReader pdfReader = new PdfReader(inputFile);PdfStamper pdfStamper = new PdfStamper(pdfReader,new FileOutputStream(outputFile));BaseFont baseFont = BaseFont.createFont("STSong-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);int pdfNumber = pdfReader.getNumberOfPages()+1;PdfContentByte pdfContentByte = null;for (int i=1;i<pdfNumber;i++){//在内容下方加水印OverContentpdfContentByte = pdfStamper.getUnderContent(i);PdfGState pdfGState = new PdfGState();//设置透明度pdfGState.setStrokeOpacity(0.5f);pdfContentByte.setGState(pdfGState);pdfContentByte.beginText();//修改水印颜色pdfContentByte.setColorFill(BaseColor.LIGHT_GRAY);//修改水印文字大小pdfContentByte.setFontAndSize(baseFont,30);//x轴坐标,y轴坐标,角度pdfContentByte.showTextAligned(Element.ALIGN_CENTER,textWaterMark,350,600,55);pdfContentByte.endText();}pdfStamper.close();pdfReader.close();} catch (IOException | DocumentException e) {e.printStackTrace();}}

为PDF文件增加图片水印

public static void imageWaterMark(String inputFile,String outputFile,String imageFile){try {PdfReader pdfReader = new PdfReader(inputFile);PdfStamper pdfStamper = new PdfStamper(pdfReader,new FileOutputStream(outputFile));Image image = Image.getInstance(imageFile);image.setAbsolutePosition(0,0);Rectangle rectangle = new Rectangle(PageSize.A4);image.scaleToFit(rectangle);int pdfNumber = pdfReader.getNumberOfPages()+1;PdfContentByte pdfContentByte = null;PdfGState pdfGState = new PdfGState();//设置透明度pdfGState.setFillOpacity(0.2f);for (int i=1;i<pdfNumber;i++){//在内容下方加水印OverContentpdfContentByte = pdfStamper.getUnderContent(i);pdfContentByte.setGState(pdfGState);pdfContentByte.addImage(image);}pdfStamper.close();pdfReader.close();} catch (IOException | DocumentException e) {e.printStackTrace();}}

效果展示:

PDF文件转为base64

/*** 将PDF文件转化为base64* @param filePath* @return*/public static String pdfFileToBase64(String filePath){File file = new File(filePath);if(!file.exists()){return null;}FileInputStream fileInputStream = null;BufferedInputStream bufferedInputStream = null;ByteArrayOutputStream byteArrayOutputStream = null;BufferedOutputStream bufferedOutputStream = null;try {fileInputStream = new FileInputStream(file);bufferedInputStream = new BufferedInputStream(fileInputStream);byteArrayOutputStream = new ByteArrayOutputStream();bufferedOutputStream = new BufferedOutputStream(byteArrayOutputStream);byte [] buffer = new byte[1024];int length = bufferedInputStream.read(buffer);while(length != -1){bufferedOutputStream.write(buffer,0,length);length = bufferedInputStream.read(buffer);}bufferedOutputStream.flush();byte [] bytes = byteArrayOutputStream.toByteArray();BASE64Encoder base64Encoder = new BASE64Encoder();return base64Encoder.encodeBuffer(bytes).trim();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally {try {fileInputStream.close();bufferedInputStream.close();bufferedOutputStream.close();} catch (IOException e) {e.printStackTrace();}}return null;}

将base64转为PDF文件

/*** 将base64转为PDF文件* @param base64*/public static void base64ToPdf(String base64){BASE64Decoder base64Decoder = new BASE64Decoder();BufferedInputStream bufferedInputStream = null;ByteArrayInputStream byteArrayInputStream = null;BufferedOutputStream bufferedOutputStream = null;FileOutputStream fileOutputStream = null;try {byte [] bytes = base64Decoder.decodeBuffer(base64);byteArrayInputStream = new ByteArrayInputStream(bytes);bufferedInputStream = new BufferedInputStream(byteArrayInputStream);//文件存储路径String filePath = "/Users/mudisheng/Desktop/mudisheng/base64Pdf.pdf";File file = new File(filePath);fileOutputStream = new FileOutputStream(file);bufferedOutputStream = new BufferedOutputStream(fileOutputStream);byte [] buffer = new byte[1024];int length = bufferedInputStream.read(buffer);while(length != -1){bufferedOutputStream.write(buffer,0,length);length = bufferedInputStream.read(buffer);}bufferedOutputStream.flush();} catch (IOException e) {e.printStackTrace();}finally {try {bufferedInputStream.close();bufferedOutputStream.close();fileOutputStream.close();} catch (IOException e) {e.printStackTrace();}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。