`

openOffice+pdf2swf类百度文库):pdf转swf(Linux,window)

    博客分类:
  • java
阅读更多

1:工具准备
swftools.exe 下载
http://www.swftools.org/download.html
安装至D盘
SWFTools提供了一系列将各种文件转成swf的工具:
font2swf.exe
gif2swf.exe
jpeg2swf.exe
pdf2swf.exe
png2swf.exe
wav2swf.exe
这里我们只使用pdf2swf.exe
我用的版本是:swftools-0.9.1.exe


flexpaper下载
http://code.google.com/p/flexpaper/
这里我们使用已经编译好的FlexPaper的flash版本

 

我用的版本是:FlexPaper_1.4.7_flash.zip

把FlexPaper下载解压到项目的webRoot目录下

    	<div style="position:absolute;left:10px;top:10px;">
	        <a id="viewerPlaceHolder" style="width:660px;height:480px;display:block"></a>
	        
	        <script type="text/javascript"> 
				var fp = new FlexPaperViewer(	
						 'FlexPaper/FlexPaperViewer',
						 'viewerPlaceHolder', { config : {
						 SwfFile : escape(Paper.swf'),
						 Scale : 0.6, 
						 ZoomTransition : 'easeOut',
						 ZoomTime : 0.5,
						 ZoomInterval : 0.2,
						 FitPageOnLoad : true,
						 FitWidthOnLoad : false,
						 FullScreenAsMaxWindow : false,
						 ProgressiveLoading : false,
						 MinZoomSize : 0.2,
						 MaxZoomSize : 5,
						 SearchMatchAll : false,
						 InitViewMode : 'Portrait',
						 PrintPaperAsBitmap : false,
						 
						 ViewModeToolsVisible : true,
						 ZoomToolsVisible : true,
						 NavToolsVisible : true,
						 CursorToolsVisible : true,
						 SearchToolsVisible : true,
  						
  						 localeChain: 'en_US'
						 }});
	        </script>
        </div>

 

 

 

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.List;

/*
* PDF转SWF工具
* @author tangs
*
*/
public class Converter {
	public static int convertPDF2SWF(String sourcePath, String destPath, String fileName) throws IOException {
//		//目标路径不存在则建立目标路径
		File dest = new File(destPath);
		if (!dest.exists()) dest.mkdirs();
		
		//源文件不存在则返回
		File source = new File(sourcePath);
		if (!source.exists()) return 0;
		
		//调用pdf2swf命令进行转换
//		String command = "D:\\swftools\\pdf2swf.exe" + " -o \"" + destPath  + fileName +"\"  <SPAN style='COLOR: #ff0000'>-s languagedir=D:\\xpdf\\xpdf-chinese-simplified</SPAN> -s flashversion=9 \"" + sourcePath + "\"";
//		String command = "D:\\swftools\\pdf2swf.exe" + " -o \"" + destPath  +  fileName +"\" -s flashversion=9 \"" + sourcePath + "\"";
		String command= "D:/SWFTools/pdf2swf.exe  -t \""+destPath+"\\Java.pdf\" -o  \""+destPath+"\\test.swf\" -s flashversion=9 -s languagedir=D:\\xpdf\\xpdf-chinese-simplified ";  
		System.out.println("cmd:"+command);
		Process process = Runtime.getRuntime().exec(command); // 调用外部程序   
		final InputStream is1 = process.getInputStream();   
		new Thread(new Runnable() {   
		    public void run() {   
		        BufferedReader br = new BufferedReader(new InputStreamReader(is1));    
		        try {
					while(br.readLine()!= null) ;
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}   
		    }   
		}).start(); // 启动单独的线程来清空process.getInputStream()的缓冲区   
		InputStream is2 = process.getErrorStream();   
		BufferedReader br2 = new BufferedReader(new InputStreamReader(is2));    
		StringBuilder buf = new StringBuilder(); // 保存输出结果流   
		String line = null;   
		while((line = br2.readLine()) != null) buf.append(line); // 循环等待ffmpeg进程结束   
		System.out.println("输出结果为:" + buf);
		
//		BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(pro.getInputStream()));
		while (br2.readLine() != null); 
		
		try {
			process.waitFor();
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return process.exitValue();

		
	}

	
	public static void main(String []args) throws IOException {
		String sourcePath = "D:\\Java.pdf";
		String destPath = "D:\\";
		String fileName = "Javssa.swf";
		try{
		Converter.convertPDF2SWF(sourcePath, destPath, fileName);
		
		}catch(Exception ex)
		{
			System.out.println("error");
		}
		System.out.println("success");
	
		
		
	}
}

 

如果错误:

Error: Unknown character collection 'Adobe-GB1'Error: Couldn't find 'GBK-EUC-H' CMap file for 'Adobe-GB1' collectionError: Unknown CMap 'GBK-EUC-H' for character collection 'Adobe-GB1'Error: Unknown character collection 'Adobe-GB1'Error: Couldn't find 'GBK-EUC-H' CMap file for 'Adobe-GB1' collectionError: Unknown CMap 'GBK-EUC-H' for character collection 'Adobe-GB1'Error: Unknown character collection 'Adobe-GB1'Error: Couldn't find 'GBK-EUC-H' CMap file for 'Adobe-GB1' collectionError: Unknown CMap 'GBK-EUC-H' for character collection 'Adobe-GB1'Error: Unknown character collection 'Adobe-GB1'Error: Couldn't find 'GBK-EUC-H' CMap file for 'Adobe-GB1' collectionError: Unknown CMap 'GBK-EUC-H' for character collection 'Adobe-GB1'Error: Unknown font tag 'F2'Truetype wasn't able to load glyph 0, error 160Truetype wasn't able to load glyph 0, error 160Truetype wasn't able to load glyph 0, error 160Truetype wasn't able to load glyph 0, error

 

改错方法:

swf2pdf转swf时字符集问题

 终于碰到swf2pdf字符集问题呢,今天转一个老的pdf是出现字符集问题,并转换的swf为乱码。
出现的错误如下。

错误现象

 

错误的原因是缺少中文字符集GBK-EUC-H。解决方法使用xpdf增加缺少的字符集。解决步骤如下:

(一) 下载相关的xpdf及字符集

xpdf-3.02pl5-win32.zip
下载地址为
ftp://ftp.foolabs.com/pub/xpdf/xpdf-3.02pl5-win32.zip
xpdf-chinese-simplified.tar.gz
下载地址为
ftp://ftp.foolabs.com/pub/xpdf/xpdf-chinese-simplified.tar.gz

也可以去http://www.foolabs.com/xpdf/download.html查找你自己需要的字符集

以上两个文件我已经放到附件里面有用的话可以下载

(二) 配置xpdf及字符集

       1:解压xpdf-3.02pl5-win32.zip,解压后修改名称为xpdf,并将其考到c盘根目录下【路径可以随意指定,但是执行pdf2swf指令时要指定到当前目录】。

      

 

       2:解压xpdf-chinese-simplified,将xpdf-chinese-simplified放置xpf目录下

    

       3:修改xpdf-chinese-simplified目录下的add-to-xpdfrc文件

Add-to-xpdfrc代码
#----- begin Chinese Simplified support package (2004-jul-27)
cidToUnicode        Adobe-GB1         D:\xpdf\xpdf-chinese-simplified\Adobe-GB1.cidToUnicode 
unicodeMap            ISO-2022-CN    D:\xpdf\xpdf-chinese-simplified\ISO-2022-CN.unicodeMap 
unicodeMap    EUC-CN        D:\xpdf\xpdf-chinese-simplified\EUC-CN.unicodeMap 
unicodeMap    GBK     D:\xpdf\xpdf-chinese-simplified\GBK.unicodeMap 
cMapDir     Adobe-GB1    D:\xpdf\xpdf-chinese-simplified\CMap 
toUnicodeDir  D:\xpdf\xpdf-chinese-simplified\CMap 
fontDir C:\WINDOWS\Fonts 
displayCIDFontTT Adobe-GB1 C:\WINDOWS\Fonts\simhei.ttf 
#displayCIDFontTT	Adobe-GB1	/usr/..../gkai00mp.ttf
#----- end Chinese Simplified support package

 (三) 执行pdf2swf命令时增加字符集指令

      java代码修改为

 

String command= "D:/swftools/pdf2swf.exe  -t \""+path+"\\test.pdf\" -o  \""+path+"\\test.swf\" -s flashversion=9 -s languagedir=C:\\xpdf\\xpdf-chinese-simplified ";

  以上完成关于字符集乱码的配置。

增加完成后执行命令可以看到adding命令

以上不能全部解决字符集乱码的问题可能还会缺少字符

可以看缺少什么字符集就加什么字符集

displayCIDFontTT Adobe-GB1 C:\WINDOWS\Fonts\你的字符集

附件xpf.rar为我的配置可以参考

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    (Linux,window)openOffice+pdf2swf+flexpaper

    总结起来,这个项目通过整合OpenOffice、pdf2swf和FlexPaper,实现了跨平台的在线文档预览功能,使得用户可以方便地在网页上查看各种格式的文档,类似于百度文库的体验。通过不断优化这些工具的参数和配置,可以...

    flexpaper+openoffice+pdf2swf.exe

    总结来说,"flexpaper+openoffice+pdf2swf.exe"组合提供了从多种格式的文档到适合在线预览的SWF文件的转换解决方案。通过合理部署和集成,可以构建一个高效、安全的在线文档预览系统。在线预览不仅简化了用户操作,...

    java + openOffice + swfTools + flexpaper 实现的仿百度文库文档在线浏览(源码)

    鉴于网上找的在线浏览都略去了flexpaper ,于是自己花费几个小时完成了openOffice + swfTools + flexpaper 技术实现仿百度文库的在线浏览。功能已经实现,需要的自己下去优化一下,修改下openoffice和SWFTOOLS安装...

    java实现附件预览(openoffice+PDF.js)

    java实现附件预览(openoffice+PDF.js),将office文档,通过openoffice工具转换为PDF文件,使用PDF.js进行前端展示 是对openoffice+swftools+flexpaper的升级版,减少一次swf文件转换,及flexpaper只能预览十页内容...

    OPenOffice 实现用Java实现文件转换PDF和SWF

    总的来说,利用OpenOffice和Java可以方便地实现文件转换功能,无论是简单的PDF转换还是更复杂的格式互转。在实际应用中,你可能需要考虑并发转换、错误处理、性能优化等问题,以适应大规模的文件处理需求。

    个人整理的openOffice与pdf2swf与flashpaper弄的类似百度在线浏览文档主要类与工具.zip

    个人整理的openOffice与pdf2swf与flashpaper弄的类似百度在线浏览文档主要类与工具,只需要下载 openOffice 3.4.1 安装,注意版本一定要与调用该工具的ddl版本一致,不然会出现 外部组件错误,我的压缩包里的调用sdk ...

    openoffice+swftools+flexpaper在线预览文档

    标题 "openoffice+swftools+flexpaper在线预览文档" 涉及到的是一个技术解决方案,用于在Web环境中实现文档的在线预览。这个方案主要包括三个关键组件:OpenOffice、SwfTools和FlexPaper。 1. **OpenOffice**: ...

    java实现访百度文库、道客巴巴、豆丁阅读

    经本人测试,在线预览效果还不错 真正实现在线预览 PDF SWF flexpaper 文库 在线预览 文件上传转pdf再转swf然后实现在线预览PDF,SWF文件 Txt/Word/Excel/PPT=&gt;PDF(OpenOffice+JodConverter)=&gt;SWF(pdf2swf)=&gt;...

    java实现类似百度文库预览pdf功能

    根据给定的文件信息,以下是对“java实现类似百度文库预览pdf功能”的详细解析与相关知识点: ### Java实现在线预览PDF功能的核心技术与流程 #### 转换方式概览 实现类似百度文库在线预览文档功能,核心在于将多种...

    OpenOffice 实现JPG.DOC转PDF转SWF在线预览(Java版)

    总结,通过OpenOffice和相关的Java库,我们可以实现Java环境下的文件格式转换,包括JPG图片和DOC文档转PDF,以及PDF转SWF。这些操作对于构建在线文档预览系统至关重要。同时,确保正确配置和安装相关软件、字体以及...

    OpenOffice+swftools+启动命令(文档在线预览解决方案pdf+swf)

    01-Apache_OpenOffice_4.1.7_Win_x86_install_zh-CN.exe 02-swftools-2013-04-09-1007.exe 03-OpenOfficeRun.txt

    Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现.pdf

    ### Java+FlexPaper+swfTools 仿百度文库文档在线预览系统设计与实现 本文将详细介绍如何使用Java结合FlexPaper和swfTools技术来实现一个类似百度文库的文档在线预览系统。该系统的主要功能是允许用户在线浏览各种...

    Java+FlexPaper+swfTools仿百度文库文档在线预览系统设计与实现.docx

    根据提供的文档标题、描述、标签以及部分内容,本文将详细介绍如何使用Java、FlexPaper及swfTools来设计并实现一个类似于百度文库的文档在线预览系统。本系统旨在让用户能够在线预览各种类型的文档,无需下载或安装...

    java实现类似百度文库功能(linux).pdf

    总结来说,实现类似百度文库功能在Linux环境下,涉及到的技术点包括OpenOffice的安装与操作、JodConverter库的使用、PDF与SWF文件的转换、FlexPaper在线阅读器的集成以及Linux下的文件操作和字体配置等。这些知识点...

    word(office)转换PDF转swf

    本篇将详细讲解如何使用OpenOffice工具进行“Word(Office)转换PDF”以及“PDF转SWF”的过程。 首先,我们来探讨“Word(Office)转换PDF”。在日常工作中,Word文档通常用于撰写报告、论文或创建各种文本内容。...

    仿百科文库(Flex+openoffice+swftools等)QQ 1211058129

    标题中的“仿百科文库(Flex+openoffice+swftools等)”是一个项目或技术解决方案的概述,它涉及了三个主要的技术组件:Flex、OpenOffice和SwfTools。接下来我们将详细探讨这三个技术及其在创建类似百科文库的应用中的...

    使用openoffice转换PDF工具类及所有jar包

    首先,我们需要理解`openoffice 转PDF工具类`的核心概念。OpenOffice的Java接口主要由JODConverter库提供,这是一个基于LibreOffice或OpenOffice的Java转换工具,支持多种文档格式之间的转换,包括将ODT、DOC、XLS等...

    使用openoffice将pdf转成图片

    值得注意的是,OpenOffice的PDF转图片功能可能无法完美地保留原始PDF的所有元素,特别是复杂的排版、超链接和交互性。对于这些要求较高的情况,可能需要使用更专业的PDF转换工具,如Adobe Acrobat。 总的来说,使用...

Global site tag (gtag.js) - Google Analytics