2013-02-15 101 views
1

當我打電話fz_run_page() MuPDF只汲取實際PDF對象到像素圖力MuPDF繪製頁面背景以及

(如文本,圖像,矢量圖形等)

它不繪製頁面邊界框並用靜態顏色(例如白色)填充它。有沒有辦法讓MuPDF畫出頁面背景?

我知道,我可以用fz_clear_pixmap_with_value()手動設置背景的靜態顏色之前,我打電話fz_run_page().但這種解決方案變得有問題,只要旋轉的用武之地,因爲這時會出現空的未使用的空間在旋轉的邊界PDF頁面。因此,如果有可能讓MuPDF首先繪製頁面邊界框,將其背景填充爲靜態顏色,然後在其上繪製PDF對象(如文本等),將會非常有幫助。

這是可能以某種方式?

謝謝!

回答

1

以防萬一有人有同樣的問題。解決方法是簡單地清除像素圖,然後在調用fz_run_page()之前親自繪製白色背景。例如。像這樣:

dev = fz_new_draw_device(ctx, pixmap); 
path = fz_new_path(ctx); 
fz_moveto(ctx, path, 0, 0); 
fz_lineto(ctx, path, 0, height); 
fz_lineto(ctx, path, width, height); 
fz_lineto(ctx, path, width, 0); 
fz_closepath(ctx, path); 
fz_fill_path(dev, path, 0, ctm, fz_device_gray, &constant_0, 1.0f); 
fz_free_path(ctx, path); 
fz_run_page(doc, page, dev, ctm, &cookie); 
fz_free_device(dev); 

使用來自fz_bound_page()的結果爲「寬度」和「高度」,因爲它們所包含的頁面的真實,未經四捨五入的尺寸是很重要的。

如果您不使用轉換矩陣,您也可以只用0xff預填像素圖。