天天看點

C#進行Visio二次開發之檔案導出及另存Web頁面

在我前面很多關于Visio的開發過程中,介紹了各種Visio的C#開發應用場景,包括對Visio的文檔、模具文檔、形狀、屬性資料、各種事件等相關的基礎處理,以及Visio本身的整體項目應用,雖然時間過去很久,不過這些技術依舊還在使用中,最近應客戶教育訓練的需要,我對所有的内容進行了重新整理,把一些沒有介紹的很詳細或者很少的内容進行了豐富,是以本文介紹的主題-Visio二次開發之檔案導出及另存Web頁面,介紹一下Visio檔案另存為其他幾種格式的處理,以及另存為Web檔案等相關操作。

在一般情況下,PDF格式是較為常用的内容格式,是以Visio文檔(Vsd格式)導出為PDF也是很常見的一件事情,Office文檔本身很好支援PDF格式的輸出,是以對于Visio來說,也不是什麼難事,基本上利用它現有的API就可以導出為PDF格式了。

在Visio的Document文檔對象中,就有ExportAsFixedFormat這個方法,可以導出為PDF或者XPS的格式的,這個格式有很多參數,用來确定導出那頁,以及格式等設定。

expression.ExportAsFixedFormat(FixedFormat, OutputFileName, Intent, PrintRange, FromPage, ToPage, ColorAsBlack, IncludeBackground, IncludeDocumentProperties, IncludeStructureTags, UseISO19005_1, FixedFormatExtClass)

同時,這些參數的相關說明如下所示。

Name

Required/Optional

Data Type

Description

FixedFormat

Required

VisFixedFormatTypes

The format type in which to export the document. See Remarks for possible values.

OutputFileName

Optional

String

The name and path of the file to which to output, enclosed in quotation marks.

Intent

VisDocExIntent

The output quality. See Remarks for possible values.

PrintRange

VisPrintOutRange

The range of document pages to be exported. See Remarks for possible values.

FromPage

Long

If PrintRange is visPrintFromTo , the first page in the range to be exported. The default is 1, which indicates the first page of the drawing.

ToPage

If PrintRange is visPrintFromTo , the last page in the range to be exported. The default is -1, which indicates the last page of the drawing.

ColorAsBlack

Boolean

True to render all colors as black to ensure that all shapes are visible in the exported drawing. False to render colors normally. The default is False.

IncludeBackground

Whether to include background pages in the exported file. The default is True.

IncludeDocumentProperties

Whether to include document properties in the exported file. The default is True.

IncludeStructureTags

Whether to include document structure tags to improve document accessibility. The default is True.

UseISO19005_1

Whether the resulting document is compliant with ISO 19005-1 (PDF/A). The default is False.

FixedFormatExtClass

[UNKNOWN]

A pointer to a class that implements the IMsoDocExporter interface for purposes of creating custom fixed output. The default is a null pointer.

 我們在代碼裡面導出PDF如下所示。

這樣,我們通過指定PDF格式,以及導出檔案名,以及起止頁碼等資訊後,就可以順利導出對應的Visio文檔了,這種方式導出的Visio文檔,效果非常好,可以放大到最大清晰都很好的。

C#進行Visio二次開發之檔案導出及另存Web頁面
C#進行Visio二次開發之檔案導出及另存Web頁面

Visio和CAD之間是比較好的相容模式的,Visio和CAD本身都是基于矢量圖形的繪制,是以轉換為CAD在繼續進行編輯也是很常見的事情,是以在較早時期,Visio本身就對CAD格式(dwg格式)就提供了很好的支援,它可以通過下面代碼進行CAD格式的導出。

如果CAD檔案順利導出,那麼會有一個日志檔案提示使用者操作的結果的,如下所示。

C#進行Visio二次開發之檔案導出及另存Web頁面

Visio還可以導出為JPG格式,這個和CAD操作類似,都是通過Page對象的Export方法進行導出,操作代碼如下所示。

雖然這個導出的JPG格式,也是比較不錯的,不過相對PDF的矢量效果來說,JPG放大的話,一般來說沒有PDF格式那麼清晰,但總體效果也還是可以。

C#進行Visio二次開發之檔案導出及另存Web頁面

對于Visio文檔的另存為Web頁面的操作,就沒有上述幾個方法那麼簡單了,一般需要更加複雜一點的處理方式。

雖然對于Visio文檔來說,在IE上可以通過ActiveX的Visio Viewer來進行檢視,不過其他浏覽器都不支援,是以對于另存為Web頁面的檔案,這種方式顯得比較通用一些,可以在各個浏覽器上檢視HTML頁面,裡面就包含了對Visio檔案的顯示了。

Visio的文檔另存為Web頁面的操作,主要思路是利用Application對象的SaveAsWebObject屬性,并通過VisWebPageSettings對象進行一些導出屬性的設定,如頁面範圍,文檔分辨率等屬性設定,以及是否在完成後使用浏覽器打開檔案等設定。

如獲得對象的操作如下所示。

通過獲得頁面參數對象,我們可以設定導出的起始頁面,如下所示。

然後在綁定到具體導出的文檔裡面就确定對應導出的文檔了。

為了提高導出Web頁面的Visio清晰度,我們需要設定文檔的顯示比例,如下所示為使用源格式大小。

這個VISWEB_DISP_RES裡面有很多參數可以設定的。

Constant

Value

resSource

Use resolution of the source image for output.

res180x260

1

180 x 260 pixels

res544x376

2

544 x 376 pixels

res640x480

3

640 x 480 pixels

res720x512

4

720 x 512 pixels

res768x1024

5

768 x 1024 pixels

res800x600

6

800 x 600 pixels

res1024x768

7

1024 x 768 pixels

res1152x882

8

1152 x 882 pixels

res1152x900

9

1152 x 900 pixels

res1280x1024

10

1280 x 1024 pixels

res1600x1200

11

1600 x 1200 pixels

res1800x1440

12

1800 x 1440 pixels

res1920x1200

13

1920 x 1200 pixels

resINVALID

14

Reserved.

另外還有一個參數确定是批處理方式(靜默方式)還是完成後通過浏覽器打開檔案的方式,如下所示。

如果一切順利,那麼通過方法直接建立頁面就可以了,如下所示。

以上的方法處理,我們一般封裝在一個類裡面,友善調用處理,那麼在界面上,我們處理的方法就可以簡單化一些。

 最後,我們就可以在各個浏覽器裡面檢視相關的Visio檔案了,這種方式比Visio Viewer的處理更通用,效果也很不錯哦。

C#進行Visio二次開發之檔案導出及另存Web頁面