热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

java实现PPT转化为PDF

这篇文章主要为大家详细介绍了java实现PPT转化为PDF的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

JACOB的方法,足可以解决这个问题,但是我既然以前曾经做过报表,就想尝试不同的方法。

JACOB是一座连接JAVA和微软的桥,所有的解析由微软解析。POI是没有微软解析的那么原汁原味的,所以如果要求高的话,还是使用JACOB。

大致思路很简单,将PPT先转化为图片,然后将图片写入PDF。转化图片是用POI,操作PDF使用ITEX。不过这个方法的BUG就是转化图片的POI效果不是很好。

导入的包分别是:itextpdf-5.1.3.jar,poi-3.8-20120326.jar,poi-scratchpad-3.8-20120326.jar。

然后贴代码了:

代码没有进行参数统一,写两个方法:

package com.zzk.cn; 
 
import java.awt.Dimension; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.Graphics2D; 
import java.awt.geom.Rectangle2D; 
import java.awt.image.BufferedImage; 
import org.apache.poi.hslf.model.TextRun; 
import org.apache.poi.hslf.record.Slide; 
import org.apache.poi.hslf.usermodel.RichTextRun; 
import org.apache.poi.hslf.usermodel.SlideShow; 
 
public class PPTtoImage { 
  public static void main(String[] args) { 
    // 读入PPT文件 
    File file = new File("D:/书本JVM总结7-9.ppt"); 
    doPPTtoImage(file); 
  } 
 
  public static boolean doPPTtoImage(File file) { 
    boolean isppt = checkFile(file); 
    if (!isppt) { 
      System.out.println("你指定的文件不是ppt文档!"); 
      return false; 
    } 
    try { 
      FileInputStream is = new FileInputStream(file); 
      SlideShow ppt = new SlideShow(is); 
      is.close(); 
      Dimension pgsize = ppt.getPageSize(); 
      org.apache.poi.hslf.model.Slide[] slide = ppt.getSlides(); 
      for (int i = 0; i 

第二段代码:

package com.zzk.cn; 
 
import java.io.FileOutputStream; 
import java.io.IOException; 
 
import com.itextpdf.text.Document; 
import com.itextpdf.text.DocumentException; 
import com.itextpdf.text.Image; 
import com.itextpdf.text.pdf.PdfWriter; 
 
public class ImagetoPDF { 
   
  public static void main(String[] args) { 
     
    System.out.println("Chapter 6 example 3: using a relative path for HTML"); 
     
    // step 1: creation of a document-object 
    Document document = new Document(); 
     
    try { 
       
      // step 2: 
      // we create a writer that listens to the document 
      // and directs a PDF-stream to a file 
       
      PdfWriter.getInstance(document, new FileOutputStream("D:/测试图片.pdf")); 
     // HtmlWriter writer = HtmlWriter.getInstance(document, new FileOutputStream("Chap0603.html")); 
       
     // writer.setImagepath("../../images/kerstmis/"); 
       
      // step 3: we open the document 
      document.open(); 
       
      for(int i=1;i<=7;i++) { 
      // step 4: we add content 
      Image jpg = Image.getInstance("D:/testImage/pict_"+i+".jpeg"); 
      jpg.scalePercent(50); 
      document.add(jpg); 
      } 
       
    } 
    catch(DocumentException de) { 
      System.err.println(de.getMessage()); 
    } 
    catch(IOException ioe) { 
      System.err.println(ioe.getMessage()); 
    } 
     
    // step 5: we close the document 
    document.close(); 
  } 
} 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • 本文由chszs撰写,详细介绍了Apache Mina框架的核心开发流程及自定义协议处理方法。文章涵盖从创建IoService实例到协议编解码的具体步骤,适合希望深入了解Mina框架应用的开发者。 ... [详细]
  • 搭建个人博客:WordPress安装详解
    计划建立个人博客来分享生活与工作的见解和经验,选择WordPress是因为它专为博客设计,功能强大且易于使用。 ... [详细]
  • 本文介绍了如何利用jQuery实现对网页上多个div元素的显示与隐藏控制,包括基本的toggle方法及更复杂的显示隐藏逻辑。 ... [详细]
  • 本文详细介绍了在 CentOS 系统中如何创建和管理 SWAP 分区,包括临时创建交换文件、永久性增加交换空间的方法,以及如何手动释放内存缓存。 ... [详细]
  • 本文详细介绍了如何在ARM架构的目标设备上部署SSH服务端,包括必要的软件包下载、交叉编译过程以及最终的服务配置与测试。适合嵌入式开发人员和系统集成工程师参考。 ... [详细]
  • 流处理中的计数挑战与解决方案
    本文探讨了在流处理中进行计数的各种技术和挑战,并基于作者在2016年圣何塞举行的Hadoop World大会上的演讲进行了深入分析。文章不仅介绍了传统批处理和Lambda架构的局限性,还详细探讨了流处理架构的优势及其在现代大数据应用中的重要作用。 ... [详细]
  • 本文详细探讨了在Web开发中常见的UTF-8编码问题及其解决方案,包括HTML页面、PHP脚本、MySQL数据库以及JavaScript和Flash应用中的乱码问题。 ... [详细]
  • 提供Scikit-learn中文版官方文档链接,帮助机器学习爱好者和开发者快速上手。 ... [详细]
  • 本文详细介绍了 Java 中 org.w3c.dom.Node 类的 isEqualNode() 方法的功能、参数及返回值,并通过多个实际代码示例来展示其具体应用。此方法用于检测两个节点是否相等,而不仅仅是判断它们是否为同一个对象。 ... [详细]
  • 网络安全实验:Telnet与SSH服务对比及抓包分析
    本实验旨在对比Telnet和SSH两种安全通信协议的服务差异,并通过搭建服务器和使用Wireshark抓包工具进行详细分析。 ... [详细]
  • 本文介绍了Linux系统中的expect命令及其在自动化任务中的应用,同时探讨了Python中的pexpect模块如何实现类似功能。 ... [详细]
  • Vulnhub DC3 实战记录与分析
    本文记录了在 Vulnhub DC3 靶机上的渗透测试过程,包括漏洞利用、内核提权等关键步骤,并总结了实战经验和教训。 ... [详细]
  • 本文介绍了 PHP 的基本概念、服务器与客户端的工作原理,以及 PHP 如何与数据库交互。同时,还涵盖了常见的数据库操作和安全性问题。 ... [详细]
  • 本文介绍了使用Python和C语言编写程序来计算一个给定数值的平方根的方法。通过迭代算法,我们能够精确地得到所需的结果。 ... [详细]
  • Awk是一款功能强大的文本分析与处理工具,尤其在数据解析和报告生成方面表现突出。它通过读取由换行符分隔的记录,并按照指定的字段分隔符来划分和处理这些记录,从而实现复杂的数据操作。 ... [详细]
author-avatar
莫不静了_660
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有