none
[C#] 輸出pdf問題 RRS feed

  • 問題

  • 我應用IBM的一套產品的SDK,要包裝一個小功能成為dll檔,大致的描述為,我運用它的一個物件為chart(是一個activeX物件)->載入它對應的檔案->由sdk所提供方式的可以匯出pdf檔,以上的步驟寫程視窗程式都沒有問題。

    所以我就照此改成dll,在背後執行,手動產生chart物件(視窗程式是用拖曳到ui上),載入檔案也沒問題,要到匯出pdf時,程式就自動關閉了,沒有任何的錯誤訊息,也沒做成什麼事。

    經幾次測試,大概只能確認,載入檔案一定要放到看得見(視窗上)後,才能正常匯出pdf檔。所以在猜想它開發的activeX物件是不是因為什麼因素限制,一定要載入到視窗程式上,才能匯出pdf檔。

    其實也有發question給IBM不過沒有得到好的回應,希望在此能得到一些方向測試其問題。

    LNPrintSettings2 print = (LNPrintSettings2)chart.PrintSettings;
    print.Adjust(PrintAdjustment.AdjustBestFit);
    print.OutputFilename = saveName;
    print.PrintToPDF = true;
    
    chart.Commands.CallCommand((int)ChartCommands.i2FilePrintDirect);
    以上是輸出pdf的code,在視窗程式中可正常執行,但如果改寫成dll的話(無視窗界面),程式就會自己關閉,無錯誤訊息

    2013年7月2日 上午 06:10

所有回覆

  • 有試過在DLL手動產生Chart物件之後, 將Chart物件加入到手動建立的Form物件的Controls集合後再匯出成PDF文件嗎?

    2013年7月3日 上午 02:13
  • 我猜想:它應該是有做類似 paint 的行為, 所以如果沒有在 UI 上, 它沒辦法畫, 看來就是如 tihs 講的, 你還是得 Form.Controls.Add (那個玩意 ..)

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2013年7月4日 上午 07:16
    版主
  • 那如果DLL去建立一個form出來執行也會發生錯誤嗎?

    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2013年7月7日 下午 02:02
  • 恩 是的...所以迫於無奈,還是得用視窗程式來執行,我只好把透明度設0這樣的爛招了~~

    也沒辦法跑多執行緒,會出現「不支援windowless activex…」的錯誤,也參考了http://tlcheng.wordpress.com/category/%E6%9B%B4%E6%96%B0%E8%88%87%E5%9B%9E%E5%A0%B1/ 的方法,也沒辦法。

    所以目前就是透明視窗+mutil-programe,然後想一個定時偵測是否以輸出完成。

    招是爛了一點,不過也沒辦法囉

    2013年7月11日 上午 05:13