原文出处:http://www.cnblogs.com/star-studio/archive/2012/01/04/2312238.html
1.txt转换swf,发生中文乱码。
txt转换为utf-8编码,或txt格式手动改为odt,上传就不会发生乱码。从根源上解决,暂时就算了...暂时不想去纠结这些鸡毛。
2.加密的pdf可能导致转换为swf失败。
3.Microsoft Excel在公式运算中支持文本型的数值,而OpenOffice.org Calc不支持
此问题暂无解,请手动将Excel中文本型的数值修改为数值型的数值。
4.部分Excel存在过于丰富的样式(大部分指没有数据的单元格也填充了各种样式),即使用专业Adobe Acrobat 7(或9) Pro来进行转换,
本来可能预计将产生20-30分页的pdf,结果却产生800-900分页的pdf。此类文档在线转换,难以避免的将导致转换死锁。
请在你的Excel文档中删除多余的,毫无必要的样式,或者你有更灵活的做法。
5.有些中文PDF文件转换为SWF后,出现乱码(特别一些专业期刊)
1.下载XPDF:xpdf-chinese-simplified.tar.gz
2.下载字体:gkai00mp.rar
3.修改xpdf-chinese-simplified目录下的add-to-xpdfrc文件。将里面的路径设为自己的路径:
#----- begin Chinese Simplified support package (2011-sep-02)
cidToUnicode Adobe-GB1 C:\xpdf-chinese-simplified\Adobe-GB1.cidToUnicode
unicodeMap ISO-2022-CN C:\xpdf-chinese-simplified\ISO-2022-CN.unicodeMap
unicodeMap EUC-CN C:\xpdf-chinese-simplified\EUC-CN.unicodeMap
unicodeMap GBK C:\xpdf-chinese-simplified\GBK.unicodeMap
cMapDir Adobe-GB1 C:\xpdf-chinese-simplified\CMap
toUnicodeDir C:\xpdf-chinese-simplified\CMap
fontDir C:\WINDOWS\Fonts
displayCIDFontTT Adobe-GB1 C:\xpdf-chinese-simplified\CMap\gkai00mp.ttf
#fontFileCC Adobe-GB1 /usr/..../gkai00mp.ttf
#----- end Chinese Simplified support package
4.参照上面的代码,在调用pdf2swf命令中加入“ -s languagedir=D:\\xpdf\\xpdf-chinese-simplified ”参数。
PDF2SWFUtil.java
String cmd = exePath + " \"" + fileDir + "\" -o \"" + filePath + "/" + fileName + ".swf\" -T 9 -s languagedir=c:\\xpdf-chinese-simplified";
这样乱码的问题就解决了。
(如果下载不到字体文件,需要的朋友可以找我发给你。)
=========================================================
以下为本人遇到的问题及解决方案:
利用openOffile、FlexPaper显示文档预览问题汇总:
Q:connection failed: socket,host=localhost,port=8100,tcpNoDelay=1: java.net.ConnectException: Connect
JAVA、openOffice、myeclipse
报错原因:没有启动openOffice服务。
解决办法:
运行→cmd,输入:
cd C:\Program Files\OpenOffice 4\program
回车
再输入
soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
回车
再重新run as/debug asjava源码,就好了。
======================================================================
Q:本地swf文件,不能正常读取,右上角一直转圈。
一、生成swf时,需要生成版本为9的文件,生成工具只有7、8两个版本。需要自己手动执行cmd。
输入cd 本地安装pdf2swf.exe路径 回车
跳转到路径下后:
输入:pdf2swf.exe -t 源文件路径 -s flashversion=9 -0 目标路径
例:pdf2swf.exe -t D:\file.pdf -s flashversion=9 -0 D:\file.swf
回车即可。
-----------------------------------------------------------------------
二、因为没有把FlexPaper添加到adobe信任列表里。解决如下:
http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04a.html#119065
跳转到此页面后,点击左侧"Global Security Settings panel"按照提示操作,把FlexPaperViewer.swf添加到信任列表,始终允许。如下图
完成后重新运行项目。即可。
===========================================================
Q:文件很大,怎样在预览时异步加载。
A:在pdf转swf的时候,原执行cmd
String cmd = exePath + " \"" + fileDir + "\" -s flashversion=9 -o \"" + filePath + "/" + fileName + ".swf\"";
修改为:
String cmd = exePath + " \"" + fileDir + "\" -s flashversion=9 -o \"" + filePath + "/" + fileName + "%.swf\"";
大家可以看到上面的命令行比原来只多了一个%符号,这个符号表示PDF2SWF转换文档时,将为每一页创建一个swf文件。如:"Paper1.swf", "Paper2.swf"。然后在FlexPaper控件配置加载SwfFile的地方,采用:{filename[*,padding],total pages}这种语法表明。
var fp = new FlexPaperViewer( 'FlexPaperViewer', 'viewerPlaceHolder', { config : { SwfFile : "{Paper[*,0].swf,28}", Scale : 0.6, ZoomTime : 0.5, ZoomInterval : 0.1, FitPageOnLoad : false, FitWidthOnLoad : false, PrintEnabled : false, MinZoomSize : 0.2, MaxZoomSize : 5, localeChain : "en_US" }});
在这个例子中,我们指示FlexPaper按分页的方法来加载一个共有28页的文档,不需要用0填充文件名。假如你的文件是按"Paper01.swf", "Paper02.swf", .. 这种形式拆分时,要将padding设置成1,意思是用一个零来填充文件名。