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相关推荐

  1. photoshop 图片转 pdf

    photoshop 图片转 pdf

  2. python 图片 转 pdf

    图片 转 pdf 代码 import glob import fitz import os def img2pdf(img_path):pdf_path = img_path.replace(&quo ...

  3. 编辑器的合并用不了_为什么图片和PDF合并后的PDF页面大小不一

    很多时候我们需要将图片和PDF文件合并后变成一个PDF文件,但经常会出现合并后的新PDF文件页面大小不一,这是怎么回事呢?要怎么处理呢? 可能有些小伙伴还不知道如何将图片和PDF进行合并,先简单说一下 ...

  4. python 怎么将数组转为列表_图片转换成pdf格式怎么操作?什么软件能将图片转为pdf?...

    伙伴们好,你们知道如何把图片转为pdf格式吗?前一阵子我参加了一个家居行业大会,在会议上拍摄了不少会议照片,包括主持人讲话.嘉宾出席.观众提问.产品推广等环节都拍摄了不同的角度.拍摄好后,需要传送给写 ...

  5. 转图片_图片怎么转PDF?图片转PDF就用这些方法吧!

    图片怎么转PDF?在处理各种文件的过程中,我们有时会需要将文件转换成PDF格式来保存,就比如将Word转成PDF.PPT转成PDF.图片转成PDF等.如果是图片转PDF,我们该怎么操作呢?下面我们主要 ...

  6. java ppt 转图片格式_Java PPT(X)转图片、PDF和SVG

    (一)简介: 工作中,PowerPoint文档有时需要被转换为PDF/图像文件来存档.因为PDF或图片的页面布局是固定的,很难被修改且能被大多数设备打开,所以PDF或者图片比起PowerPoint格式 ...

  7. 转pdf wps_华为手机自带图片转PDF的功能?今天才知道,当了5年花粉白当了

    使用了这么久的华为手机,以前需要用到图片转PDF功能的时候都是要打开电脑去转,今天被同事秀了一技,原来我的手机自己就有图片转PDF的功能,真是白用了.下面我们一起来看这个神奇的功能吧! 一.华为图片转 ...

  8. Java实现图片转PDF

    1.导入依赖 <!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf -->         <dependenc ...

  9. .net pdf转图片_图片转PDF怎么转?推荐两种图片转PDF方法

    在我们的工作和学习中,我们有时候需要将图片转换为PDF格式的文件.因为PDF格式的文件查看起来很不容易,所以它可以确保图片文件中的信息不被泄露.那么图片转PDF怎么转呢?大家可以参考下面这两种方法,一 ...

最新文章

  1. Android•Lottie动画库填坑记
  2. java切换系统输入法_java - 关于Android输入法切换的问题
  3. java结果集分页太慢_巨大结果集的分页错误
  4. 浅谈Junit测试中反射和Jmock的应用
  5. YBTOJ:消除格子(二分图匹配)
  6. runtime无法执行grep_如何使管道使用Runtime.exec()?
  7. oracle用游标drop多个表,Oracle Procedure中使用游标cursor更新多表?
  8. 树状数组相关应用之区间更新单点查询问题
  9. 苏宁入局区块链;山东用阿里的AI抓违建;印度拟让苹果退网 | 极客头条
  10. [Java设计模式]单例模式
  11. php英文书籍在线,php英语四级在线练习系统
  12. struts教程笔记3
  13. 用户体验与可用性测试_读书笔记
  14. 无人机基础知识:多旋翼无人机自动控制原理与算法
  15. JS 表单提交信息加密
  16. Kaggle TMDB 票房预测挑战赛
  17. 何以创新和体验升维?百度输入法用虚拟博主给出了答案
  18. 多人网络游戏服务器开发基础学习笔记 I:基本知识 | 游戏设计模式 | 网游服务器层次结构 | 游戏对象序列化 | 游戏 RPC 框架 | 帧同步和状态同步
  19. linux 设备命名规则,cisco设备命名规则
  20. SOLIDWORKS零件与装配体模板制作

热门文章

  1. 3、深潜KafkaProducer —— 核心架构
  2. mqttclient连接到OneNET云平台
  3. HCIA——OSI模型
  4. Image Thresholding
  5. MySQL数据库查看表占用空间大小及碎片整理
  6. Linux:进程地址空间管理(图文详解总结)
  7. windows下简单的音频采集示例
  8. typecho设置文章密码保护
  9. 用Python计算一元二次方程 求根公式法
  10. 神雕侠侣服务器维修时间,《神雕侠侣》2020年5月21日更新维护新服开启公告