[Office|C#]Word開啟PDF文件時,以程式方式避免彈出PDF轉換格式的確認視窗(Close PDF conversion Dialog by program)

  • 1938
  • 0
  • C#
  • 2014-12-21

不知道各位有沒有遇到一些需求是需要透過Office的automation自動化完成的需求呢?前陣子遇到一個需求是,客戶需要寫類似批次的作業,並且要透過Word開啟PDF檔案後在裡面做一些內容加工,可是沒想到!再開啟PDF文件時,Word會主動談出一個PDF轉換文件警告的視窗!
這篇文章就來告訴各位,我們要如何不讓他再次顯示出來!

 

前言

 


好久一段時間沒有發文章了,最近開始工作了,不過真沒想到一開始接觸的開發,就是每次開啟Visual Studio時,總是會在範本中出現的Office專案!以前總是覺得這個專案我應該這輩子不會有機會接觸到,沒想到…

再加上其實這部分算是屬於業界才會有的需求,所以學習時遇到相關問題,在網路上的相關技術文章也不算多,因此遇到許多Detail的問題真的要自己想辦法,接下來也會暫時把在專案開發中所遇到的所有狀況也努力記錄下來,讓各位可以參考 :)

 

情境解說

 


 

不知道各位有沒有遇到一些需求是需要透過Office的automation自動化完成的需求呢?前陣子遇到一個需求是,客戶需要寫類似批次的作業,並且要透過Word開啟PDF檔案後在裡面做一些內容加工,可是沒想到!再開啟PDF文件時,Word會主動談出一個PDF轉換文件警告的視窗@@ 如下:

PDF轉換問題

 

好的,其實這也不難,只要按下「不要再顯示此訊息」就可以一勞永逸了,可是!總不可能每次拿到一台新的環境上,第一份文件打開後還要事先做一次這樣的動作吧…

其實這個是有解的!

以下提供兩種解法,如果再撰寫Office程式的各位有需要時,快速的搞定他吧!

 

實作方式

 


 

當初遇到這個問題時,就在想,這類的設定,應該有一個類似config的檔案在記錄吧,可是去Office的資料夾下怎麼翻都翻不到,很苦惱,後來想到,不對!Windows不是有機碼(Registry) 這玩意嗎?! 機碼就是用來記錄一些使用者操作資訊跟應用程式資訊的地方,所以說有可能以類似true or false的方式寫入吧!

一但提到了機碼,那麼在基碼中兩大項就有區分成Local Machine與Current User,是最常會去動到的部分,於是便開始測試,「如果是Current_User的話,那麼我切換另一個使用者登入,應該會再跳出一次視窗?」,果不其然真是如此!

便開始鎖定Current_User的資料夾下,結果非常巧的!真被我挖到了哈哈

Office使用者的相關設定選項路徑在:

HKEY_CURRENT_USER\\software\\Microsoft\\Office\\15.0\\Word\\Options下!

只要把DisablePdfWarning設為1即可!

key-path

 

附註:這邊我是使用Office 2013去做開發,所以使用的組件是15.0版本,不過其實Office能支援PDF轉Word也是到2010開始,而且2010還要另外安裝插件!

 

這樣便知道怎麼做囉!

方法如下,兩種方式可以挑選

1.撰寫登陸機碼的程式


string path = "software\\Microsoft\\Office\\15.0\\Word\\Options";
RegistryKey key = Registry.CurrentUser;
RegistryKey wordPath = key.CreateSubKey(path);
if (wordPath != null)
{
        wordPath.SetValue("DisableConvertPdfWarning", 1);
        Console.WriteLine("Done");
}
else
        Console.WriteLine("Not Exist Key Folder");
Console.ReadKey();

 

2.製作佈署用安裝檔時,插入機碼路徑

完整的佈署與部署到IIS的步驟會再另外撰寫相關系列文章,一堆環境的測試,那個過程真是搞死人= =

本人是透過Windows Insatller去做佈署的,因為是開發2013增益集,所以使用Visual Studio 2013,而在2013上製作安裝檔案,可以下載Microsoft Visual Studio Installer Projects便可以開始使用在VS2010時好用的安裝檔製作囉!

設定路徑如下範例:

PDF_Registery_Key_path

 

補充-如果想要開啟檔案時,強制彈出轉換檔案格式視窗,如下圖:

conversionFile

 

可以設定此機碼值:

ConfirmFileConversion為1即可!

 

後記

 


 

結果當我嘗試完後才發現篇官方文章有提到,就把他列在參考了

 

參考

 


 

當您開啟文字檔時,就會出現 [檔案轉換編碼] 對話方塊

 


 

文章中的敘述如有觀念不正確錯誤的部分,歡迎告知指正 謝謝 =)

另外要轉載請附上出處 感謝