2009-11-29 39 views
3

我的C++ MFC MDI應用程序顯示工程圖紙PDF頁面。將CView派生對象轉儲爲PDF文件的好方法是什麼?你可以建議哪些圖書館(不是免費的)? 我已經看過像開羅和libHaru這樣的一些圖書館。可以繪製所有的圖形組件,但我認爲CView已經完成了所有的繪製。它可以通過PS或類似的東西轉儲到PDF中嗎? 感謝爲了從在其意見MFC MDI的CView

回答

1

如果下載CutePDF可以直接打印到PDF。它就像正常的打印機打印一樣。我很確定,如果你從Adobe獲得acrobat pro,你可以做同樣的事情。

編輯:

使用,你可以做所有的繪圖的方式,「可能」由驅動程序用於存儲矢量圖形設備上下文。

如果您處理(在消息映射ON_MESSAGE)的WM_PRINT命令,那麼你提供的HDC。您可以通過執行檢索來自HDC的MFC風格CDC以下:

CDC* pDC = CDC::FromHandle(hDC); 

現在,您可以發出標準的DC繪圖命令到打印機的步驟如下:

int width = pDC->GetDeviceCaps(HORZRES); 
int height = pDC->GetDeviceCaps(VERTRES); 
pDC->MoveTo(0, 0); 
pDC->LineTo(width, height); 

這將從頂部繪製左下角到右下角。如果你相應地縮放所有的矢量圖形,他們會希望(不幸的是,我不確定這一點),作爲矢量命令而不是光柵命令出現在PDF上。

+0

嗨戈茲貝達。 CutePDF對我來說是一個很好的開始,我會盡快嘗試。我真正的挑戰是生成矢量圖形PDF頁面而不是位圖。你知道如果一個位圖是以PDF格式打印的話,那麼這個縮放圖像太難看了。我會嘗試CutePDF,看看是否有可能克服變焦像素。 您是否嘗試過CutePDF SDK? 乾杯。 – val 2009-11-30 15:24:02

+0

我還沒有試過CutePDF SDK。但據我所知,只需將HDC命令發送到打印機即可。我會通過使用MoveTo&LineTo來「猜測」它會生成矢量命令而不是光柵命令... – Goz 2009-11-30 16:40:06

+0

嗨Goz,我只是嘗試CutePDF,因爲您建議替換打印機。 它給了我一些彈藥,但像素化是一個問題,因爲我被推測。 你打的使用HDC可能是一個黃金 - 我感覺它。你能否詳細介紹一下你的HDC想法?謝謝 – val 2009-11-30 22:32:57