「昨是而今非」,是今天最好的註解。透過 Aspose 合併後的 PDF 檔案,裡面竟然是空白的,我發誓,還沒合併前,每一份 PDF 的確是有資料的啊!
原來,我的 PDF 是透過 VS2010 所產生的,報表的產生語法如下:
byte[] tBytes = viewer.LocalReport.Render(pType, null, out tMimeType, out tEncoding, out tExtension, out tStreamids, out tWarnings);
Render() 裡的第二個參數,本應該放 deviceInfo,我原先覺得很像沒什麼好設定的,於是就簡單放了 null。在「PDF Sharp can't handle SQL Server 2008 PDF reports」文章中提到,Reporting Service 2008 之後,開始有了 HumanReadablePDF 這個參數設定,指示是否 PDF 匯出時應該被壓縮,使得檔案更容易閱讀,預設值為 False。因為我把 devideInfo 設為 null,所以 HumanReadablePDF = false。這個致命的關鍵設定,造成讓 Aspose 在合併 PDF 時,無法正確的取得原先 PDF 內容。所以,要手動去定義 HumanReadablePDF,並將它設為 true。
透過下面語法,就可以完成:
string devInfo = @"<DeviceInfo><HumanReadablePDF>True</HumanReadablePDF></DeviceInfo>"; byte[] tBytes = viewer.LocalReport.Render("PDF", devInfo, out tMimeType, out tEncoding, out tExtension, out tStreamids, out tWarnings);
參考:
01:PDF Sharp can't handle SQL Server 2008 PDF reports
02:[SQL Server 2008R2][SSRS] URL Access 報表轉譯格式設定(二)
沒有留言:
張貼留言