真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

pdf調(diào)用javascript,PDF讀取

在acrobat9.0中如何用javascript實(shí)現(xiàn)pdf文檔自動(dòng)翻頁(yè),或鼠標(biāo)點(diǎn)擊畫(huà)面翻頁(yè)?

大綱"視圖 打開(kāi)PPT演示文稿,單擊"大綱",在左側(cè)"幻燈片/大綱”任務(wù)窗格的“大綱”選項(xiàng)卡里單擊一下鼠標(biāo),按"Ctrl+A"組合健全選內(nèi)容,然后使用"Ctrl+C"組合鍵或右鍵單擊在快捷菜單中選擇"復(fù)制"命令,然后粘貼到Word里。

在新民等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作定制網(wǎng)站設(shè)計(jì),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),全網(wǎng)營(yíng)銷(xiāo)推廣,外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè),新民網(wǎng)站建設(shè)費(fèi)用合理。

提示:這種方法會(huì)把原來(lái)幻燈片中的行標(biāo)、各種符號(hào)原封不動(dòng)的復(fù)制下來(lái)。

2.利用"發(fā)送"功能巧轉(zhuǎn)換 打開(kāi)要轉(zhuǎn)換的PPT幻燈片,單擊"文件"→"發(fā)送"→"MicrosoftWord"菜單命令。然后選擇"只使用大綱"單選按鈕并單擊"確定"按鈕,等一會(huì)就發(fā)現(xiàn)整篇PPT文檔在一個(gè)Word文檔里被打開(kāi)。

提示: 在轉(zhuǎn)換后會(huì)發(fā)現(xiàn)Word有很多空行。在Word里用替換功能全部刪除空行可按"Ctrl+H"打開(kāi)"替換"對(duì)話框,在"查找內(nèi)容"里輸入"^p^p",在"替換為"里輸入"^p",多單擊幾次"全部替換"按鈕即可。("^"可在英文狀態(tài)下用"Shift+6"鍵來(lái)輸入。)3.利用"另存為"直接轉(zhuǎn)換 打開(kāi)需要轉(zhuǎn)換的幻燈片,點(diǎn)擊"文件"→"另存為",然后在"保存類(lèi)型"列表框里選擇存為"rtf"格式。現(xiàn)在用Word打開(kāi)剛剛保存的rtf文件,再進(jìn)行適當(dāng)?shù)木庉嫾纯蓪?shí)現(xiàn)轉(zhuǎn)換。

4.PPTConverttoDOC軟件轉(zhuǎn)換 PPTConverttoDOC是綠色軟,解壓后直接運(yùn)行,在運(yùn)行之前請(qǐng)將Word和PPT程序都關(guān)閉。選中要轉(zhuǎn)換的PPT文件,直接拖曳到"PPTConverttoDOC"程序里。單擊工具軟件里的"開(kāi)始"按鈕即可轉(zhuǎn)換,轉(zhuǎn)換結(jié)束后程序自動(dòng)退出。

提示: 如果選中"轉(zhuǎn)換時(shí)加分隔標(biāo)志",則會(huì)在轉(zhuǎn)換好的word文檔中顯示當(dāng)前內(nèi)容在原幻燈片的哪一頁(yè)。轉(zhuǎn)換完成后即可自動(dòng)新建一個(gè)Word文檔,顯示該P(yáng)PT文件中的所有文字。

ps:

第四種慎用,百度上很多所謂的那個(gè)軟件都是有病毒的,毒性不小,一般的殺毒軟件查不出~~

PDF文檔的規(guī)范性使得瀏覽者在閱讀上方便了許多,但倘若要從里面提取些資料,實(shí)在是麻煩的可以。

二、把PDF轉(zhuǎn)換成Word的方法

Adobe Acrobat 7.0 Professional 是編輯PDF的軟件。

用Adobe Acrobat 7.0 Professional 打開(kāi)他另存為WORD試試看。

或者用ScanSoft PDF Converte,安裝完成后不須任何設(shè)置,它會(huì)自動(dòng)整合到Word中。當(dāng)我們?cè)赪ord中點(diǎn)擊“打開(kāi)”菜單時(shí),在“打開(kāi)”對(duì)話框的“文件類(lèi)型”下拉菜單中可以看到“PDF”選項(xiàng),這就意味著我們可以用Word直接打開(kāi)PDF文檔了!

ScanSoft PDF Converter的工作原理其實(shí)很簡(jiǎn)單,它先捕獲PDF文檔中的信息,分離文字、圖片、表格和卷,再將它們統(tǒng)一成Word格式。由于Word在打開(kāi) PDF文檔時(shí),會(huì)將PDF格式轉(zhuǎn)換成DOC格式,因此打開(kāi)速度會(huì)較一般的文件慢。打開(kāi)時(shí)會(huì)顯示PDF Converter轉(zhuǎn)換進(jìn)度。轉(zhuǎn)換完畢后可以看到,文檔中的文字格式、版面設(shè)計(jì)保持了原汁原味,沒(méi)有發(fā)生任何變化,表格和圖片也完整地保存下來(lái)了,可以輕松進(jìn)行編輯。

除了能夠在Word中直接打開(kāi)PDF文檔外,右擊PDF文檔,在彈出菜單中選擇“Open PDF in Word”命令也可打開(kāi)該文件。另外,它還會(huì)在Outlook中加入一個(gè)工具按鈕,如果收到的電子郵件附件中有PDF文檔,就可以直接點(diǎn)擊該按鈕將它轉(zhuǎn)換成Word文件。

有時(shí)我們?cè)诰W(wǎng)上搜索到PDF格式的文件,同樣可以通過(guò)右鍵菜單的相關(guān)命令直接在Word中打開(kāi)它

本地運(yùn)行javascript怎么操作pdf-CSDN論壇

這個(gè)你可以看下firefox瀏覽器的pdf.js,,不過(guò)這個(gè)有個(gè)問(wèn)題,只支持火狐瀏覽器,google瀏覽器上操作pdf是基于Foxit reader,封裝在瀏覽器底層的,無(wú)法通過(guò)js操作,或者使用PDFObject.js,這個(gè)支持IE,不過(guò)是ie9以上的版本

[img]

如何在java中用javascript來(lái)打印pdf

純Java的解決方案:

我們首先想到的自然就是JDK1.4提供的JPS(Java Printing Service)啦,不過(guò),這東西雖然說(shuō)支持PDF的Flavor,但是,不管是個(gè)人實(shí)驗(yàn)還是網(wǎng)上他人的評(píng)論,好像根本就是useless,可能如果說(shuō)你 的打印機(jī)Driver支持PDF的Flavor的話,JPS會(huì)檢測(cè)到你的driver的這個(gè)特性,能夠成功的打印PDF文檔出來(lái),但是,大部分情況下,這 種情形是不成立的,故此JPS死路一條啦!

讓我們看看PDF的老家Adobe那里有沒(méi)有什么法寶,我們發(fā)現(xiàn)一個(gè)Viewer Bean的組件,說(shuō)是可以將PDF以Bean組件的方式潛入到Swing中,哇,太爽了,不過(guò)慢著,協(xié)議上說(shuō)不提供任何支持,也不保證不出任何問(wèn)題,管那 么些,試過(guò)再說(shuō),一實(shí)驗(yàn)才知道,靠,Exception頻發(fā),而且這個(gè)組件較為陳舊,還是扔一邊吧!

還有一個(gè)PDFBox,Open Source的,不過(guò)對(duì)中文支持不好,而且好像開(kāi)發(fā)進(jìn)度也不是很好,沒(méi)有發(fā)布一個(gè)正式的版本,基本上不能用于生產(chǎn)環(huán)境;

最后,求助于Commercial的產(chǎn)品吧,實(shí)驗(yàn)了一下ActiveTree的JPrint,感覺(jué)不錯(cuò),完全可以勝任我們的需求而且恰到好處,不過(guò)授權(quán)費(fèi) 很貴,Email問(wèn)過(guò)之后的答復(fù)是2000USD的最低購(gòu)買(mǎi),呵呵,雖然日本人很有錢(qián),但也心疼這個(gè)銀子啊,所以最終也得作罷?。ˋctiveTree的 授權(quán)其實(shí)挺令我ft的,他其實(shí)在2003年的時(shí)候是可以免費(fèi)使用的,但之后就變卦了,呵呵,當(dāng)時(shí)記得我還給提過(guò)一些bug之類(lèi),算了,人家做出這個(gè)東西也 不容易)

其他商業(yè)產(chǎn)品也是價(jià)格不菲,所以,基本上純Java的solution到這里就否決了,讓我們看Java-Com的解決方案吧!

Java-Com 的解決方案:

在前一條路走不通之后,我痛定思痛,決定轉(zhuǎn)向自己不熟悉的領(lǐng)域,ms的領(lǐng)地,我打算從Java中調(diào)用Com組件,由Com組件來(lái)幫助我們實(shí)現(xiàn)PDF的打印 工作,不夠這條路也不是一帆風(fēng)順那!

我們知道,Acrobat Reader在發(fā)布的時(shí)候會(huì)隨同發(fā)布一個(gè)支持瀏覽器的com組件用來(lái)manipulate他的這個(gè)PDF文檔格式,所以,我們想要本地調(diào)用這個(gè)隨同發(fā)布的 Com組件來(lái)實(shí)現(xiàn)PDF打印。雖然Version5,6,7的這個(gè)組件格式不一樣(5,6是以ocx的格式發(fā)布,7是以dll的格式發(fā)布),但是,不管那 么些,先從7開(kāi)始吧!

要調(diào)用com,那么我們需要一個(gè)從java到com的Bridge,所以,jacob第一個(gè)躍入我的腦海,因?yàn)橹熬陀眠^(guò)嘛!但是麻煩來(lái)了,我們并不知道 這個(gè)com組件提供了那些調(diào)用接口啊!哎,沒(méi)辦法,回學(xué)校求教熟悉.net的同學(xué),給好不容易弄出幾個(gè)需要的調(diào)用方法(哎,可憐我的周末?。瞧谝痪突?來(lái)用jacob調(diào)用啦,可是左試右試就是一直拋異常,我那個(gè)氣??!難道是jacob的為問(wèn)題?!我就又找了jcom和jcom2等類(lèi)似的產(chǎn)品,但jcom 全是日文文檔,沒(méi)有辦法,而jcom2估計(jì)也是一個(gè)德行(我忘了為什么當(dāng)初否決了這個(gè)),所以就決定試一試商業(yè)產(chǎn)品吧!

這方面的商業(yè)產(chǎn)品主要有J-Integra,JPanel(好像叫這個(gè)名字)以及一個(gè)叫JNIWrapper的產(chǎn)品(這個(gè)是一個(gè)人用用來(lái)演示在java中 使用Acrobat5打印PDF的時(shí)候提到的)。這些商業(yè)產(chǎn)品好的地方就是他可以根據(jù)某個(gè)你要調(diào)用的com組件為你自動(dòng)生成相應(yīng)的Proxy對(duì)象java 代碼,這樣你就可以直接調(diào)用你熟悉的java代碼了。像jacob等開(kāi)源項(xiàng)目,如果給出一個(gè)類(lèi)似的code generation工具的話,就完全不遜于這些商業(yè)產(chǎn)品啦。鑒于商業(yè)產(chǎn)品的價(jià)格,我最終還是否決了這些(日本人其實(shí)也聽(tīng)摳門(mén)的)。

這樣,Java-com也對(duì)這個(gè)問(wèn)題沒(méi)轍了。

不過(guò),最后在我的解決方案中,我還是使用了Jacob,這是后話,暫且不提...

那我們考慮一下,如果PDF打印不行,打印其他格式行不行?!比如圖片,這個(gè)JPS可以完全打印,所以,我們找一下有沒(méi)有將PDF格式轉(zhuǎn)換為其他格式的工 具吧!

PDF格式轉(zhuǎn)換的解決方案:

在這個(gè)領(lǐng)域,主要的就是有GhostScript/GView和ImageMagick,前者可以將PDF格式轉(zhuǎn)換為PostScript格式,但是好像 GhostScript也不能用JPS完全打印出來(lái);而后者是一個(gè)將PDF轉(zhuǎn)換為Image的API工具,他的Java實(shí)現(xiàn)叫JMagick,但他有一個(gè) 跟GhostScript同樣的問(wèn)題,就是要轉(zhuǎn)換,就必須在本地安裝,然后通過(guò)命令行的方式調(diào)用,這個(gè)顯然也不是很好,而且集成性很差,還是作罷!

剩下的一個(gè)是命令行調(diào)用啦,這是從itext網(wǎng)站找到的,你可以通過(guò)在命令行運(yùn)行AcroRd32 /p /h "path to PDF file"這樣的命令來(lái)打印你要打印的PDF文件,當(dāng)然,你可以在PDF文件生成后就將他們依次放入一個(gè)批處理文件來(lái)執(zhí)行這些打印命令,但是這個(gè)方案唯一 的問(wèn)題就是,每打印一個(gè)文件都會(huì)啟動(dòng)一個(gè)Acrobat Reader窗口而且必須手動(dòng)關(guān)閉,這現(xiàn)在不能滿足目前的系統(tǒng)要求。

好了,所有的方案基本上都羅列完了,也沒(méi)有找到一個(gè)可行的方案:-(

(沒(méi)有銀子嘛,不然Activetree的JPrint不錯(cuò)的說(shuō))

這些東西差不多郁悶了我3,4天吧,那幾天簡(jiǎn)直就是bored to death.

不過(guò),在郁悶的這幾天的結(jié)尾,卻有一道靈光閃過(guò)我的腦海...

能不能說(shuō)啟動(dòng)一個(gè)打印service,當(dāng)文檔要打印的時(shí)候,直接發(fā)送給它就行了那?!而恰好我發(fā)現(xiàn)一段在網(wǎng)頁(yè)中加載PDF文檔的Javascript代 碼,而且完全可以使用js來(lái)控制PDF的打印,所以,最終的這個(gè)方案就浮出水面了 ...

1-使用jacob啟動(dòng)一個(gè)IE進(jìn)程,并隱藏IE窗口;

if(ieAutomation == null)

ieAutomation = new ActiveXComponent("InternetExplorer.Application");

ieAutomation.setProperty("Visible",new Variant(false));

2-PDF前端在生成PDF文件之后發(fā)送生成后的文件到JacobPDFPrinter,JacobPDFPrinter根據(jù)出入的PDF文件的全路徑使 用Velocity模板引擎動(dòng)態(tài)生成一個(gè)包含使用Javascript代碼實(shí)現(xiàn)的PDF打印邏輯的HTML文檔(當(dāng)然,使用Velocity生成文檔這部 分邏輯我們單獨(dú)抽出到VeloIEPrinterGenerator類(lèi)中);

3-在HTML生成之后,在JacobPDFPrinter中就可以使用jacob調(diào)用IE的Navigate2,將IE重定向到剛才生成的這個(gè)HTML 文件啦,這樣,IE就會(huì)在后臺(tái)調(diào)用JS代碼將PDF打印到默認(rèn)打印機(jī);

4-打印成功之后,清除臨時(shí)動(dòng)態(tài)生成的HTML文件;

5-當(dāng)主程序退出之前,Quit后臺(tái)IE進(jìn)程。

以上就是我能給出的一個(gè)solution,并不完美,但it works.

需要注意的幾個(gè)問(wèn)題是:

(1)需要設(shè)置IE的一個(gè)高級(jí)選項(xiàng),運(yùn)行本地腳本運(yùn)行;

(2)因?yàn)镴ava和Com線程模型的不一致,導(dǎo)致在最終Quit后臺(tái)IE進(jìn)程的時(shí)候會(huì)拋出Com調(diào)用異常,因?yàn)閷?duì)于Win平臺(tái)API以及相關(guān)編程模型不 是很熟悉,所以,這個(gè)問(wèn)題需要求助于別人幫忙解決;

(3)IE在執(zhí)行JS打印PDF的時(shí)候,同樣會(huì)后臺(tái)啟動(dòng)Acrobat的一個(gè)進(jìn)程,而這個(gè)進(jìn)程我們程序中無(wú)法控制其生命周期,所以,主程序退出后,我們沒(méi) 有辦法同時(shí)kill這個(gè)進(jìn)程,好在不管我們運(yùn)行多少次,這個(gè)進(jìn)程在后臺(tái)只有一個(gè),所以,性能負(fù)擔(dān)不是很大;

轉(zhuǎn)載

解決pdf.js無(wú)法完全顯示pdf文件內(nèi)容的問(wèn)題

一、遇到的問(wèn)題 :預(yù)覽pdf文件時(shí),很多內(nèi)容未顯示。****

查看控制臺(tái),出現(xiàn)以下警告

二、跟蹤源碼,排查原因

從下圖可以發(fā)現(xiàn)baseUrl取值為params.cMapUrl

找到調(diào)用WorkerTransport方法處:

該問(wèn)題的原因是因?yàn)槿鄙倭瞬糠肿煮w包,也可使用CDN方式加載字體包。

此處提供cmaps的2個(gè)CDN地址(2.2.228為pdfjs-dist的版本號(hào)):

加載字體包后,效果如下圖(部分內(nèi)容已打馬賽克):

如何在PDF文件中調(diào)用JAVASCRIPT

java可以利用iText(也有其他語(yǔ)言的)來(lái)加入:

PdfReader reader = new PdfReader("c://1.pdf");

PdfStamper stamper = new PdfStamper(reader,new FileOutputStream(“c://new1.pdf”), '\0',true);

PdfWriter writer = stamper.getWriter();

PushbuttonField button = new PushbuttonField(writer, new Rectangle(450, 750, 530, 800), "post");

PdfFormField submit = button.getField();

submit.setAction( PdfAction.javaScript("app.alert(‘hello,lec’)", writer));

stamper.addAnnotation(submit, 1);

具體就可以去查看iText是怎么使用的

如何創(chuàng)建pdf的buffer,讓pdf.js實(shí)現(xiàn)預(yù)覽pdf文件

pdf.js VS 傳統(tǒng)瀏覽器讀取pdf

一般來(lái)說(shuō),PDF檔案格式都是在瀏覽器中由外掛程式來(lái)描繪,通常是Adobe自己的PDF reader或來(lái)自其他供應(yīng)商的描繪工具,但這些外掛通常無(wú)法充分運(yùn)用PDF的特點(diǎn),而且由于含有大量的受信任代碼,使得Google Chrome瀏覽器必須運(yùn)用SandBox沙箱原理,來(lái)檢查PDF描繪工具是否遭到未知病毒感染。

使用adobe,必須在本地安裝軟件才能使用,而pdf.js不依賴環(huán)境、渲染速度快(測(cè)試過(guò),確實(shí)很快)、安全性高。

pdf.js渲染PDF文件

pdf.js渲染PDF文件的流程:Fetch pdf (url / buffer) —— canvas —— 渲染

如果要深入pdf的渲染,需要去研究pdf.js源代碼。pdf.js可通過(guò)pdf文件的地址或pdf數(shù)據(jù)流獲取pdf,具體實(shí)現(xiàn)是調(diào)用接口函數(shù) PDFJs.getDoc(url/buffer)將pdf載入html,通過(guò)canvas處理, 然后渲染pdf文件。網(wǎng)上給出的都是通過(guò)url來(lái)獲取pdf的例子,而我在做項(xiàng)目的時(shí)候,后臺(tái)(python)要求是發(fā)pdf的數(shù)據(jù)流給前臺(tái),前臺(tái)接收pdf的buffer,然后通過(guò)pdf.js來(lái)渲染。當(dāng)然最初嘗試buffer出現(xiàn)了很多問(wèn)題,具體問(wèn)題總結(jié)如下:

1)如何通過(guò)$.ajax接收后臺(tái)發(fā)給前臺(tái)的buffer數(shù)據(jù);

2)如何將buffer傳給pdf.js來(lái)處理(這里我使用了viewer.js, 所以需要考慮的是如何將buffer傳給viewer.js來(lái)處理);

3)如何將pdf.js轉(zhuǎn)換成pdf.js可以接收的buffer格式;

(對(duì)應(yīng)問(wèn)題解決見(jiàn)代碼注釋?zhuān)?/p>

注:viewer.js是pdf.js的擴(kuò)展,其將打印、翻頁(yè)、縮放等功能進(jìn)行了實(shí)現(xiàn),且界面非常好看。也就是說(shuō)如果你引入了viewer.js,pdf的渲染和渲染之后的功能界面都已經(jīng)幫你實(shí)現(xiàn)了,你不用自己去寫(xiě)界面。


網(wǎng)站標(biāo)題:pdf調(diào)用javascript,PDF讀取
標(biāo)題URL:http://weahome.cn/article/dsophch.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部