年末將至,又到了一年一度的收集發票時間,平時零零碎碎的花錢都是不在意開發票,現在好了,到處找發票來報銷,簡直頭大, 東拼西湊,終於搞定了全部發票,大伙多餘的發票,麻煩艾特我一下啊,不限日期,能開發票的都可以,謝謝啦。文章後有彩蛋~ 這麼多的發票,一張一張列印,要浪費我多少時間,就想著合併這些PDF文 ...
年末將至,又到了一年一度的收集發票時間,平時零零碎碎的花錢都是不在意開發票,現在好了,到處找發票來報銷,簡直頭大,
東拼西湊,終於搞定了全部發票,大伙多餘的發票,麻煩艾特我一下啊,不限日期,能開發票的都可以,謝謝啦。文章後有彩蛋~
這麼多的發票,一張一張列印,要浪費我多少時間,就想著合併這些PDF文件(發票)一起列印,節省時間。
還尋思這網上找一個軟體來使使,都很(méi)委(līang)婉(xīn)的想收費,線上轉PDF的還給我打水印,恰巧今天公司網速不行。
來吧,自己搞!程式猿沒有什麼不可能!
Spire.PDF
NPOI、DocX、Epplus……這些開源且免費的優秀組件,大家應該是耳熟能詳的,而Spire是一款企業級的收費組件,Spire.PDF for .NET
是一個專業的PDF組件,用於在.NET應用程式中創建,編寫,編輯,處理和閱讀PDF文件,功能十分豐富…………
提取關鍵詞:收費、穩定、高效
具體我不再過多的啰嗦了,詳細我推薦看這篇《 高效而穩定的企業級.NET Office 組件Spire(.NET組件介紹之二)》
合併PDF
回到今天的問題,合併發票,合併PDF,然後一次性列印。其實吧,主要代碼就兩行:
1 var doc = PdfDocument.MergeFiles(allFiles.ToArray()); 2 doc.Save(DateTime.Now.ToString("yyyyMMddHHmmss") + ".pdf", FileFormat.PDF);
然後,你們輸出之後會發現,很(méi)漂(līang)亮(xīn)的水印:
“Evaluation Warning:The document was created with Spire.PDF for .NET”
簡直玷污我心愛的發票!!!!
解決
既然隱藏不了,那合併的第一頁加入一個空頁不就行了?!生成PDF後,然後從第二頁開始列印或是刪去第一頁不就行了?!就這麼乾!
1 var first = new PdfDocument(); 2 first.AppendPage(); //加入一個空頁 3 for (int idx = 0; idx < allFiles.Count; idx++) 4 { 5 var next = new PdfDocument(allFiles[idx]); 6 first.AppendPage(next); 7 } 8 first.SaveToFile(DateTime.Now.ToString("yyyyMMddHHmmss")+".pdf", FileFormat.PDF);
需要的下載去用吧。