国产高清在线免费观看-国产高清在线免费无码-国产高清在线男人的天堂-国产高清在线视频-国产高清在线视频精品视频-国产高清在线视频伊甸园

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

[點晴永久免費OA]C#中調用PDFCreator生成PDF文件

admin
2020年4月3日 22:12 本文熱度 3542
前一陣子做了一個生成報表的小project,生成的報表是關于股價的記錄。沒有什么現成的包和第三方程序給我們用,聽說WPF渲染的頁面可以之間存成PDF,不過只是道聽途說,沒敢真正實踐,最后還是用了自己以前搞過的方法,Office Interop,在一個word文檔中插入很多placeholder搞成template,然后用C#代碼動態把PlaceHolder變成數據,然后保存。這個方法其實挺強大,不過有幾個限制和不爽的地方。第一,程序運行的機器上要有Office安裝,word是必須的,如果要生成圖的話,還需要Excel. 第二,.NET Office Interop本質上還是COM的封裝,性能和穩定性就不能太苛求了。第三,Office Interop搞起來還是挺煩的。抱怨了半天,不過這個方法還是可行的。不過最后要求生成PDF形式的報表,但是Office沒有PDF生成的支持,這怎么辦?想起自己每每需要生成PDF文件的時候直接用PDFCreator虛擬打印機就可以了,查了一下,果然,PDFCreator有COM API. 這下問題解決了。

在C#中如何調用PDFCreator生成PDF文件呢?

第一步:安裝PDFCreator (這個好像是廢話)

第二步:創建C#項目,加入PDFCreator.exe COM引用

第三步:參見如下代碼:

public override void Process(ITask task, int index)
        {
            if (!File.Exists(Path.Combine(FromLocation, FromFilename)))
            {
                throw new FileNotFoundException("File: " + Path.Combine(FromLocation, FromFilename) + " does not exists");
            }
 
            Monitor.Enter(lockObject);
 
            clsPDFCreator creator = null;
 
            try
            {
                creator = new clsPDFCreator();
                creator.eError += new __clsPDFCreator_eErrorEventHandler(creator_eError);
                creator.eReady += new __clsPDFCreator_eReadyEventHandler(creator_eReady);
                String paramters = "/NoProcessingAtStartup";
 
                if (!creator.cStart())
                {
                    throw new Exception("Cannot launch PDFCreator. Error: " + Error);
                }
 
                var opt = creator.cOptions;
                opt.UseAutosave = 1;
                opt.UseAutosaveDirectory = 1;
                opt.AutosaveDirectory = this.ToLocation;
                opt.AutosaveFormat = 0;
                opt.AutosaveFilename = this.ToFilename;
                creator.cOptions = opt;
 
                creator.cClearCache();
 
                creator.cDefaultPrinter = "PDFCreator";
 
                if (!creator.cIsPrintable(Path.Combine(FromLocation, FromFilename)))
                {
                    throw new Exception("File: " + Path.Combine(FromLocation, FromFilename) + " is not printable.");
                }
 
                creator.cPrintFile(Path.Combine(FromLocation, FromFilename));
                creator.cPrinterStop = false;
 
                Ready = false;
                var duration = new TimeSpan(0, 0, 0, TimeoutInSec);
 
                DateTime lastCheck = DateTime.Now;
                DateTime startTime = lastCheck;
              
                while (!Ready && ((lastCheck - startTime) < duration))
                {
                    System.Threading.Thread.Sleep(500);
                    lastCheck = DateTime.Now;
                }
 
                creator.cPrinterStop = true;
                Thread.Sleep(1000);
                creator.cClose();
 
                if (!Ready)
                {
                    throw new Exception("PDF creation failed. This maybe due to timeout.");
                }
            }
            finally
            {
                Monitor.Exit(lockObject);
            }
        }
 
        void creator_eReady()
        {
            this.Ready = true;
        }
 
        void creator_eError()
        {
            Error = creator.cError.Description;
        }
代碼很好懂,自己很懶,沒有把代碼重新寫成一個Project,直接把Project中的代碼貼上了,大家要用的話,還要稍微修改一下。要說的一點是PDFCreator不支持多線程,所以如果程序本身是多線程的話,需要在代碼中增加一個鎖機制,保證PDF生成的調用是單線程的。還有打印機的名字用的是默認值,沒有修改,不過這些問題是難不倒各位看官的。

該文章在 2020/4/3 22:12:39 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 亚洲av无码一区二区乱子仑 | 制服丝袜中文无码人妻97 | 日韩精品影视 | 色天使色护士在线视频 | 曰本女同互慰高清在线观看 | 亚洲毛片无码专区亚洲乱 | 国产精品系列在线一区 | 国产综合久久久久 | 国产在线精品成人一区二区 | 亚洲欧美一区二区三区蜜芽 | 国产精品黄在线观看免费软件 | 国产成人精品无码播放 | 国产伦精品免编号公布 | 亚州精品中文字幕在线 | 亚洲精品va在线 | 熟妇人妻va精品中文字幕欧美成人在线观看在线邻居的 | 免费a级毛片无码无遮挡 | 国产国拍亚洲精品永久不卡 | 无码专区久久综合久综合字幕 | 在线播放一区二区不卡三区 | 国产偷抇久久一级精品a片 国产偷国产偷精品高清尤物 | 欧美日韩精品国产—区在线 | 中文亚洲av片在线观看 | 亚洲色欲综合一区二区三区 | 人妻无码久久精品人妻 | 性感美女视频在线观看一区二区 | 一级国产片网站 | 无码h黄动漫在线播放网站 无码h动漫在线播放 | 日韩A片无码一区二区三区电影 | 亚洲国产精品久久久久秋霞66 | 亚洲欧美日韩国产综合一区二区 | 大山里真实刮伦 | 亚洲成a人片在线观看中文 亚洲成a人片在线观看中文无码 | 亚洲国产精品一区二区第一页 | 日本午夜精品理论片A级APP发布 | 98久久无码一区人妻A片蜜 | 中文av岛国无码免费播放 | 麻豆果冻传媒2025精品传媒一区 | 免费看黑人男阳茎进女阳道视频 | 亚欧洲精品在线入口 | 国产无码一二三区中文字幕 |