swf 图片转 pdf
pom 依赖
<!-- 操作swf文件 -->
<dependency><groupId>com.flagstone</groupId><artifactId>transform</artifactId><version>3.0.2</version>
</dependency>
<!-- 操作pdf文件 -->
<dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.27</version>
</dependency>
提取 swf 中的图片
package com.xxx.demo.common.util;import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.DataFormatException;import javax.imageio.ImageIO;import com.flagstone.transform.Movie;
import com.flagstone.transform.MovieTag;
import com.flagstone.transform.image.DefineImage;
import com.flagstone.transform.image.DefineImage2;
import com.flagstone.transform.image.DefineJPEGImage;
import com.flagstone.transform.image.DefineJPEGImage2;
import com.flagstone.transform.image.DefineJPEGImage3;
import com.flagstone.transform.image.DefineJPEGImage4;
import com.flagstone.transform.util.image.BufferedImageEncoder;public final class SwfUtils {private SwfUtils () {}public static List<BufferedImage> querySwfImages (final File file) throws DataFormatException, IOException {Movie movie = new Movie();movie.decodeFromFile(file);return querySwfImages(movie);}public static List<BufferedImage> querySwfImages (final URL url) throws DataFormatException, IOException {Movie movie = new Movie();movie.decodeFromUrl(url);return querySwfImages(movie);}public static List<BufferedImage> querySwfImages (final InputStream stream) throws DataFormatException, IOException {Movie movie = new Movie();movie.decodeFromStream(stream);return querySwfImages(movie);}private static List<BufferedImage> querySwfImages (Movie movie) throws DataFormatException, IOException {List<BufferedImage> imageList = new ArrayList<>();List<MovieTag> list = movie.getObjects();for (MovieTag movieTag : list) {BufferedImage bi = getSwfImage(movieTag);if (bi != null) {imageList.add(bi);}}return imageList;}private static BufferedImage getSwfImage (MovieTag movieTag) throws DataFormatException, IOException {BufferedImage bi = null;if (movieTag instanceof DefineImage) {BufferedImageEncoder imageEncoder = new BufferedImageEncoder();imageEncoder.setImage((DefineImage) movieTag);bi = imageEncoder.getBufferedImage();} else if (movieTag instanceof DefineImage2) {BufferedImageEncoder imageEncoder = new BufferedImageEncoder();imageEncoder.setImage((DefineImage2) movieTag);bi = imageEncoder.getBufferedImage();} else if (movieTag instanceof DefineJPEGImage) {try (ByteArrayInputStream bis = new ByteArrayInputStream(((DefineJPEGImage) movieTag).getImage());) {bi = ImageIO.read(bis);}} else if (movieTag instanceof DefineJPEGImage2) {try (ByteArrayInputStream bis = new ByteArrayInputStream(((DefineJPEGImage2) movieTag).getImage());) {bi = ImageIO.read(bis);}} else if (movieTag instanceof DefineJPEGImage3) {try (ByteArrayInputStream bis = new ByteArrayInputStream(((DefineJPEGImage3) movieTag).getImage());) {bi = ImageIO.read(bis);}} else if (movieTag instanceof DefineJPEGImage4) {try (ByteArrayInputStream bis = new ByteArrayInputStream(((DefineJPEGImage4) movieTag).getImage());) {bi = ImageIO.read(bis);}}return bi;}}
多张图片转为 pdf
package com.xxx.demo.common.util;import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.graphics.image.JPEGFactory;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;public final class PdfUtils {private PdfUtils () {}public static void image2pdf (List<BufferedImage> imageList, File outFile) throws IOException {if (imageList.isEmpty()) {throw new IOException("image not found");}try (PDDocument doc = new PDDocument();) {doc.save(outFile);image2pdf(doc, imageList);doc.save(outFile);}}public static void image2pdf (List<BufferedImage> imageList, OutputStream out) throws IOException {if (imageList.isEmpty()) {throw new IOException("image not found");}try (PDDocument doc = new PDDocument();) {image2pdf(doc, imageList);doc.save(out);}}private static void image2pdf (final PDDocument doc, List<BufferedImage> imageList) throws IOException {doc.setAllSecurityToBeRemoved(true);for (BufferedImage image : imageList) {PDImageXObject pdImage = JPEGFactory.createFromImage(doc, image, 0.8f);image.flush();PDPage page = new PDPage(PDRectangle.A4);try (PDPageContentStream contents = new PDPageContentStream(doc, page);) {int width = pdImage.getWidth();int height = pdImage.getHeight();float pageWidth = PDRectangle.A4.getWidth();float pageHeight = PDRectangle.A4.getHeight();float[] bound = getBound(width, height, pageWidth, pageHeight);contents.drawImage(pdImage, bound[0], bound[1], bound[2], bound[3]);}doc.addPage(page);}}private static float[] getBound (int width, int height, float pageWidth, float pageHeight) {float[] bound = new float[] {0.0f, 0.0f, 0.0f, 0.0f};float wh = width * 1.0f / height;float pwh = pageWidth * 1.0f / pageHeight;if (Math.abs(wh - pwh) < 0.02f) {bound[0] = 0.0f;bound[1] = 0.0f;bound[2] = pageWidth;bound[3] = pageHeight;} else if (wh - pwh > 0) {float h = pageWidth / width * height;bound[0] = 0.0f;bound[1] = Math.max(pageHeight / 2 - h / 2, 0.0f);bound[2] = pageWidth;bound[3] = Math.min(h, pageHeight);} else {float w = pageHeight / height * width;bound[0] = Math.max(pageWidth / 2 - w / 2, 0.0f);bound[1] = 0.0f;bound[2] = Math.min(w, pageWidth);bound[3] = pageHeight;}return bound;}}
swf 中的图片转 pdf
package com.xxx.demo.common.util;import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import java.util.zip.DataFormatException;public final class Swf2PdfUtils {private Swf2PdfUtils () {}public static void swfImage2Pdf (File swfFile, File pdfFile) throws DataFormatException, IOException {List<BufferedImage> images = SwfUtils.querySwfImages(swfFile);PdfUtils.image2pdf(images, pdfFile);}public static void swfImage2Pdf (File swfFile, OutputStream out) throws DataFormatException, IOException {List<BufferedImage> images = SwfUtils.querySwfImages(swfFile);PdfUtils.image2pdf(images, out);}public static void swfImage2Pdf (InputStream input, File pdfFile) throws DataFormatException, IOException {List<BufferedImage> images = SwfUtils.querySwfImages(input);PdfUtils.image2pdf(images, pdfFile);}public static void swfImage2Pdf (InputStream input, OutputStream out) throws DataFormatException, IOException {List<BufferedImage> images = SwfUtils.querySwfImages(input);PdfUtils.image2pdf(images, out);}}
测试
public static void main(String[] args) throws DataFormatException, IOException {File swFile = new File("D:/ceshi", "dabf077a8c354a74.swf");File pdfFile = new File("D:/ceshi", "dabf077a8c354a74.pdf");Swf2PdfUtils.swfImage2Pdf(swFile, pdfFile);
}
swf 图片转 pdf相关推荐
- photoshop 图片转 pdf
photoshop 图片转 pdf
- python 图片 转 pdf
图片 转 pdf 代码 import glob import fitz import os def img2pdf(img_path):pdf_path = img_path.replace(&quo ...
- 编辑器的合并用不了_为什么图片和PDF合并后的PDF页面大小不一
很多时候我们需要将图片和PDF文件合并后变成一个PDF文件,但经常会出现合并后的新PDF文件页面大小不一,这是怎么回事呢?要怎么处理呢? 可能有些小伙伴还不知道如何将图片和PDF进行合并,先简单说一下 ...
- python 怎么将数组转为列表_图片转换成pdf格式怎么操作?什么软件能将图片转为pdf?...
伙伴们好,你们知道如何把图片转为pdf格式吗?前一阵子我参加了一个家居行业大会,在会议上拍摄了不少会议照片,包括主持人讲话.嘉宾出席.观众提问.产品推广等环节都拍摄了不同的角度.拍摄好后,需要传送给写 ...
- 转图片_图片怎么转PDF?图片转PDF就用这些方法吧!
图片怎么转PDF?在处理各种文件的过程中,我们有时会需要将文件转换成PDF格式来保存,就比如将Word转成PDF.PPT转成PDF.图片转成PDF等.如果是图片转PDF,我们该怎么操作呢?下面我们主要 ...
- java ppt 转图片格式_Java PPT(X)转图片、PDF和SVG
(一)简介: 工作中,PowerPoint文档有时需要被转换为PDF/图像文件来存档.因为PDF或图片的页面布局是固定的,很难被修改且能被大多数设备打开,所以PDF或者图片比起PowerPoint格式 ...
- 转pdf wps_华为手机自带图片转PDF的功能?今天才知道,当了5年花粉白当了
使用了这么久的华为手机,以前需要用到图片转PDF功能的时候都是要打开电脑去转,今天被同事秀了一技,原来我的手机自己就有图片转PDF的功能,真是白用了.下面我们一起来看这个神奇的功能吧! 一.华为图片转 ...
- Java实现图片转PDF
1.导入依赖 <!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf --> <dependenc ...
- .net pdf转图片_图片转PDF怎么转?推荐两种图片转PDF方法
在我们的工作和学习中,我们有时候需要将图片转换为PDF格式的文件.因为PDF格式的文件查看起来很不容易,所以它可以确保图片文件中的信息不被泄露.那么图片转PDF怎么转呢?大家可以参考下面这两种方法,一 ...
最新文章
- Android•Lottie动画库填坑记
- java切换系统输入法_java - 关于Android输入法切换的问题
- java结果集分页太慢_巨大结果集的分页错误
- 浅谈Junit测试中反射和Jmock的应用
- YBTOJ:消除格子(二分图匹配)
- runtime无法执行grep_如何使管道使用Runtime.exec()?
- oracle用游标drop多个表,Oracle Procedure中使用游标cursor更新多表?
- 树状数组相关应用之区间更新单点查询问题
- 苏宁入局区块链;山东用阿里的AI抓违建;印度拟让苹果退网 | 极客头条
- [Java设计模式]单例模式
- php英文书籍在线,php英语四级在线练习系统
- struts教程笔记3
- 用户体验与可用性测试_读书笔记
- 无人机基础知识:多旋翼无人机自动控制原理与算法
- JS 表单提交信息加密
- Kaggle TMDB 票房预测挑战赛
- 何以创新和体验升维?百度输入法用虚拟博主给出了答案
- 多人网络游戏服务器开发基础学习笔记 I:基本知识 | 游戏设计模式 | 网游服务器层次结构 | 游戏对象序列化 | 游戏 RPC 框架 | 帧同步和状态同步
- linux 设备命名规则,cisco设备命名规则
- SOLIDWORKS零件与装配体模板制作