本發明涉及一種文檔轉換方法,特別是一種將docuworks文檔轉換為pdf文檔的方法,屬于軟件。
背景技術:
1、docuworks?是富士施樂公司開發的一款文檔管理軟件,其文檔通常以.xdw為擴展名。docuworks文檔是類似于pdf文檔的版式文檔。由于docuworks文檔使用度不高,因此對外使用的電子圖紙都需要轉換成pdf格式送出。
2、docuworks軟件自帶將docuworks文檔轉換成pdf文檔的功能,但是對于多頁docuworks文檔,只能識別a3或a4尺寸,其他非標尺寸頁面只能按a4輸出,轉換后的文檔尺寸失真,無法正常使用。如果通過手動方式處理,單個文檔就需要大量的時間,面對公司每天巨量的圖紙轉換需求,通過手動方式去轉換無法滿足。
技術實現思路
1、本發明所要解決的技術問題是提供一種將docuworks文檔轉換為pdf文檔的方法,解決多頁docuworks文檔轉換為pdf文檔非標尺寸失真的問題。
2、為解決上述技術問題,本發明所采用的技術方案是:
3、一種將docuworks文檔轉換為pdf文檔的方法,包含以下步驟:
4、s1、通過讀取數據庫找到需要進行轉換的圖紙清單,通過隊列方式依次等待轉換;
5、s2、通過docuworks軟件操作sdk中提供的接口獲取docuworks文檔的頁面數,循環所有docuworks文檔的頁面并獲取所有docuworks文檔頁面尺寸,并判斷每一頁docuworks文檔頁面尺寸是否為標準尺寸;
6、s3、若docuworks文檔中所有頁面的docuworks文檔頁面尺寸均為標準尺寸,則將docuworks軟件自帶的打印pdf虛擬打印機設置為默認打印機,打印整本docuworks文檔;
7、s4、若docuworks文檔中存在非標準尺寸的docuworks文檔頁面尺寸,則執行單張打印生成單頁pdf,然后將單頁pdf合并成完整pdf文檔。
8、進一步地,所述步驟s2具體為,
9、2.1、通過docuworks軟件操作sdk中提供的接口獲取docuworks文檔的頁面數;
10、2.2、循環所有docuworks文檔頁面并獲取docuworks文檔頁面尺寸;
11、2.3、將獲取的每一頁docuworks文檔頁面尺寸與a3文件頁面尺寸和a4文件頁面尺寸進行對比;
12、2.4、若一頁docuworks文檔頁面尺寸與a3文件頁面尺寸或a4文件頁面尺寸對比結果相同,則該頁docuworks文檔頁面尺寸為標準尺寸;
13、2.5、若一頁docuworks文檔頁面尺寸與a3文件頁面尺寸和a4文件頁面尺寸對比結果均不相同,則該頁docuworks文檔頁面尺寸為非標準尺寸。
14、進一步地,所述步驟s4具體為,
15、4.1、使用sdk:xdwapiwn接口將docuworks文檔拆分成docuworks單頁文件;
16、4.2、獲取docuworks單頁文件的頁面尺寸;
17、4.3、拷貝注冊表鍵值模板文件;
18、4.4、替換注冊表鍵值模板文件中的頁面參數,修改docuworks單頁文件的尺寸和方向;
19、4.5、調用批處理將注冊表倒入系統;
20、4.6、將docuworks軟件自帶的打印pdf虛擬打印機設置為默認打印機,打印當前docuworks單頁文件得到pdf單頁文件并以頁碼命名pdf單頁文件;
21、4.7、將pdf單頁文件按命名順序存入pdf文檔數組;
22、4.8、通過控件將打印完成的pdf單頁文件按照pdf文檔數組合成成完整pdf文檔。
23、進一步地,所述步驟4.1具體為,
24、4.1.1、在c#程序中調用docuworks軟件sdk:xdwapiwn接口;
25、4.1.2、定義docuworks文檔句柄變量handle,定義docuworks文檔打開方式變量mode,docuworks文檔打開方式設置為更新,定義docuworks文檔信息變量info;
26、4.1.3、通過xdw_opendocumenthandle接口打開docuworks文檔,并將句柄變量handle賦值;
27、4.1.4、通過xdw_getdocumentinformation接口將docuworks文檔信息賦值給信息變量info;
28、4.1.5、從docuworks文檔屬性里獲取docuworks文檔頁數;
29、4.1.6、從第一頁開始循環到最后一頁,通過xdw_getpage接口將每一頁的docuworks文檔頁面另存成以頁碼命名的docuworks單頁文件。
30、進一步地,所述步驟4.4具體為,
31、4.4.1、把頁面高度鍵值轉換成毫米單位下的頁面高度后取整數部分得到第一頁面高度值n22,頁面高度剩余的小數部分經過四舍五入并放大10倍得到第二頁面高度值n21;
32、4.4.2、把頁面寬度鍵值轉換成毫米單位下的頁面寬度后取整數部分得到第一頁面寬度值n12,頁面寬度剩余的小數部分經過四舍五入并放大10倍得到第二頁面寬度值n11;
33、4.4.3、將第一頁面高度值n22、第二頁面高度值n21、第一頁面寬度值n12、第二頁面寬度值n11分別轉換為16進制得到16進制第一頁面高度值n4、16進制第二頁面高度值n3、16進制第一頁面寬度值n2、16進制第二頁面寬度值n1;
34、4.4.4、定義第一字符串replace1=n1、n2、n3、n4,定義第二字符串repace2=n3、n4、n1、n2;
35、4.4.5、若頁面高度鍵值小于等于頁面寬度鍵值,則將第一字符串replace1填入注冊表替換參數parta;
36、4.4.6、若頁面高度鍵值大于頁面寬度鍵值,則將第二字符串replace2填入注冊表替換參數parta。
37、進一步地,所述步驟4.5具體為,在系統中建立一個批處理文檔input.bat,批處理文檔input.bat內容為:regedit?/s?c:\regedit\new.reg,其中new.reg為替換過的參數parta的reg文件,在c#程序中運行process.start(@"c:\regedit\input.bat")。
38、進一步地,所述步驟4.8具體為,運用spire控件的mergefiles接口將pdf文檔數組中的所有pdf單頁文檔按照命名順序合并成一個完整pdf文檔。
39、本發明與現有技術相比,具有以下優點和效果:本發明提供了一種將docuworks文檔轉換為pdf文檔的方法,通過將docuworks文檔拆分并判斷是否為非標準尺寸,對非標準尺寸頁面,調用接口修改注冊表參數實現非標準尺寸頁面的轉換,然后單頁打印,實現了非標準尺寸頁面的docuworks文檔向pdf文檔的原尺寸的自動轉換,提高了文檔轉換效率,解決了現有技術多頁面轉換尺寸失真的問題。