자바,PPT 를 PDF 로 변환
JACOB 는 JAVA 와 마이크로소프트 를 연결 하 는 다리 로 모든 해석 은 마이크로소프트 가 분석한다.POI 는 마이크로소프트 가 해석 한 것 처럼 오리지널 맛 이 없 기 때문에 요구 가 높 으 면 JACOB 를 사용한다.
대체적인 사고방식 은 매우 간단 하 다.PPT 를 먼저 그림 으로 바 꾼 다음 에 그림 을 PDF 에 쓴다.그림 전환 은 POI 를 사용 하고 PDF 를 조작 할 때 ITEX 를 사용 합 니 다.하지만 이 방법의 버그 는 그림 을 바 꾸 는 POI 효과 가 좋 지 않다 는 것 이다.
가 져 온 가방 은 itextpdf-5.1.3.jar,poi-3.8-2010326.jar,poi-scratchpad-3.8-2010326.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 < slide.length; i++) {
System.out.print(" " + i + " 。");
if (slide[i].getNotesSheet() != null
&& slide[i].getNotesSheet().getTextRuns() != null) {
//
System.out.println(" :"
+ slide[i].getNotesSheet().getTextRuns()[0]
.getText());
}
TextRun[] truns = slide[i].getTextRuns();
for (int k = 0; k < truns.length; k++) {
RichTextRun[] rtruns = truns[k].getRichTextRuns();
for (int l = 0; l < rtruns.length; l++) {
rtruns[l].setFontIndex(1);
rtruns[l].setFontName(" ");
//
System.out.println(rtruns[l].getText());
}
}
BufferedImage img = new BufferedImage(pgsize.width,
pgsize.height, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = img.createGraphics();
graphics.setPaint(Color.white);
graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width,
pgsize.height));
slide[i].draw(graphics);
// (jpeg,png,bmp ),
FileOutputStream out = new FileOutputStream("D:/testImage/pict_"
+ (i + 1) + ".jpeg");
javax.imageio.ImageIO.write(img, "jpeg", out);
out.close();
}
System.out.println("ok");
return true;
} catch (FileNotFoundException e) {
System.out.println(e);
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
// function PPT
public static boolean checkFile(File file) {
boolean isppt = false;
String filename = file.getName();
String suffixname = null;
if (filename != null && filename.indexOf(".") != -1) {
suffixname = filename.substring(filename.indexOf("."));
if (suffixname.equals(".ppt")) {
isppt = true;
}
return isppt;
} else {
return isppt;
}
}
}
두 번 째 코드:
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();
}
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.