仿百度文库方案[openoffice.org 3+swftools+flexpaper](八) 之 常见问题集FAQ(转)

原文出处: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,意思是用一个零来填充文件名。 
posted @ 2014-07-14 11:20  李贰白  阅读(498)  评论(0编辑  收藏  举报