基於iTextSharp的PDF文件操作

2021-09-22 16:52:46 字數 2246 閱讀 3019

公司是跨境電商,需要和各種物流打交道,需要把東西交給物流,讓他們發到世界各地。其中需要物流公司提供乙個運單號,來追蹤貨物到達**?!

最近在和dhl物流公司(應該是個大公司)對接,取運單號的方式是呼叫對方提供的api,簡單說,就是我們傳一些發貨位址和客戶資訊,要發的貨物等,對方返回乙個運單號和****(就是我們**快遞上的面單)。過程呢,還是比較順利的,經過一系列溝通,最終還是實現了功能

下面還是說說沒有實現的功能,如果都實現了,也不用寫這篇部落格了。不足之處在於dhl提供的面單,沒有提供要揀哪些貨的面單。本來乙個完整的面單,包括2部分:物流公司需要貼在包裹上的面單(****)和我們自己發貨部門要發哪些東西的面單(揀貨面單),兩部分組合在一起,發貨部門才能正常的完成這個包裹的發貨

好吧,終於要引入正題了,dhl公司將****以pdf檔案流的形式返回,就是我們可以儲存成pdf檔案,這樣就容易處理的多,我們自己的揀貨面單,如果也可以儲存至pdf檔案,這樣就可以將這2個pdf檔案一塊列印出來,這算是乙個折中的解決方案。

首先,要將揀貨資料(含)儲存至pdf文件。技術點如下

1, 將datatable匯出至pdf

2, datatable中包含,也要能匯出

3, pdf類庫,字型的引入(居然需要引用字型的絕對路徑,想不通)

下面分別講解

1, 這點就是直接建立itextsharp中的pdfdatatable物件,直接對映即可。**如下:

private static pdftext.pdf.pdfptable createpdfptabletopickuplabel(listlistdetail, itextsharp.text.font font)

; //設定列寬比例

pdttable.setwidths(colwidth);

//此處,先插入首行,即標題

pdttable.addcell(new itextsharp.text.phrase("", font));

pdttable.addcell(new itextsharp.text.phrase("基本資訊", font));

pdttable.addcell(new itextsharp.text.phrase("單價", font));

pdttable.addcell(new itextsharp.text.phrase("數量", font));

pdttable.addcell(new itextsharp.text.phrase("備註", font));

//再插入真實揀貨資料

int rowcount = listdetail.count;

for (int i = 0; i < rowcount; i++)

return pdttable;

}

/// /// 建立pdf所需影象

///

///

///

///

///

private static itextsharp.text.image createpdfimage(byte imagebytes, float widths = 60f, float heights = 60f)

3, 建立字型

/// /// 建立pdf所需字型

///

///

public static itextsharp.text.font createpdffont(float fontsize = 16f)

/// /// 生成揀貨標籤pdf檔案

///

///

///

///

public static string createpickuplabel(trademodel modeltrade,string dhllabelfoldername)

再將這2個檔案,通過c#**連續列印出來。支援連續列印多個pdf檔案

//直接呼叫cmd命令,實現直接列印

foreach (string printfile in listprintfile)

好了,最後的最後,看看效果圖吧。前2聯是dhl返回的pdf檔案,第3聯是我本地生成的pdf檔案,合併成乙個完整的發貨面單

基於重力補償的 PD 控制

pd 控制是常規的控制方法,設計簡單,用李雅普諾夫方法證明簡單,不需要系統的模型,是無模型控制中的基本方法。令 q tq t 為系統的狀態向量,其中 q qd q 表示期望位姿和實際位姿之間的誤差。選擇一下正定二次型作為李雅普諾夫函式 v q q 1 2q t b q q 1 2q t kpq 0,...

c 使用itextsharp的例項

在程式設計中用到將一些報告生成pdf檔案,用到了itextsharp版本是4.1.2.0和最新的版本的某些函式有出入 document doc new document pagesize.a4,100,100,80,80 文件a4樣式,左右頁邊距100,上下80pdfwriter.getinstan...

pdo mysql的安裝 Linux安裝pdo

不能訪問 檢視apache日誌 php fatal error uncaught exception pdoexception with message could not find driver php 5.3.29 php 是用pdo模組去訪問mysql資料庫 檢視php中pdo是否支援mysq...