2013-01-15 51 views
0

我試圖發送ActiveReports格式的報告到我公司的RightFax服務器,並預先設置了一些傳真字段,如傳真號碼,發件人和收件人。 RightFax文檔說該文檔必須包含嵌入代碼以設置這些值,例如<TOFAXNUM:12345556789><TONAME:Recipient><FROMNAME:Sender>。我在ActiveReports中創建了一個包含此文本的TextBox或Label。但是當RightFax收到文檔並調出RightFax客戶端UI時,這些值不會被設置。嵌入的代碼保留在傳真圖像中。我將RightFax打印機驅動程序設置爲HP LaserJet 4.我正在使用Visual Studio 2010 Professional在C#中進行開發。ActiveReports接口到RightFax

網絡上的一個建議是確保嵌入代碼設置爲Courier或其他「打印機字體」。但是,Visual Studio沒有「Courier」或「Times Roman」,只有這些標準字體的MS True Type版本「Courier New」和「Times New Roman」。

發送傳真的這種方法與使用相同RightFax服務器的另一臺計算機上的較舊軟件(不使用ActiveReports)協同工作。

任何經驗,你可以共享接口的ActiveReports到RightFax將不勝感激。

感謝,

格雷格Lobdell

+0

最後我完全避免了嵌入代碼。我將活動報告導出到tiff文件,然後將該文件用作傳真機體。我創建了一個收集傳真設置的窗口,然後調用RightFax API創建,配置和發送傳真。 – gmlobdell

回答

0

您可以通過控制整個印刷過程和發送使用Windows API的轉義序列完成你的任務。我假設你使用的ActiveReports 6或7的ActiveReports

更詳細的基於片段的報道:

  • 創建自己的PrintDocument的和在處理器的PrintPage定義的PrintPage處理器
  • 使用發送轉義序列打印機逃生WINAPI調用(見CodeProject的例子)
  • 渲染頁面本身通過調用Page.Draw()
+0

我在ActiveReports論壇中詢問的問題的相同答案的好副本。我在StackOverflow尋找更廣泛的經驗基礎,也許有RightFax經驗的人。 @olegz你有什麼補充嗎? – gmlobdell

+0

這完全是我的答案,有人剛把它複製到論壇。我建議的方式有什麼特別的麻煩嗎? – olegz

+0

gmlobdell,我發佈了一個使用codeproject代碼的項目。你可以從這裏下載它並請運行它。 http://www.datadynamics.com/forums/150920/ShowPost.aspx –

0

只要您使用真正的字體,打印機應該識別該字體並能夠「讀取」其中的文本。只有舊的位圖字體是打印機可能無法讀取的字體。通常在窗口上常用的TT字體,如「Courier New」或「Times New Roman」,已經在打印機中,所以它們甚至不會被下載。

但是,RightFax does have some documentation on escape codes here,所以你可能想嘗試在ActiveReports中使用轉義碼。此外,here是使用ActiveReports6中的SystemPrinter對象將轉義碼直接發送到打印機而不使用任何特殊API的示例。您可以嘗試使用該代碼並使用RightFax理解的代碼替換那裏的轉義代碼。

最後,ActiveReports基本上是通過從打印機獲取圖形並在其上繪圖來進行打印。文本框是用適當的文本命令繪製的真實文本(即,文本是而不是呈現爲位圖)。這是在現代窗口中打印的常用方式,因此任何打印機都應該將文本視爲普通文本。通過在.NET中編寫自己的簡單打印代碼並將其發送到RightFax驅動程序,您應該能夠看到相同的確切結果。如果它在那裏工作,它將在ActiveReports中工作。

如果它不工作,並且上面的轉義代碼技巧不起作用,我認爲聯繫RightFax並要求他們瞭解如何從.NET應用程序打印到他們的驅動程序將是下一個合理的步驟。

希望這會有所幫助!