2010-06-22 24 views
4

我想轉換一個位圖文件採用Delphi 2007圖像不顯示在MS Word從位圖將其轉換爲RTF後(但在寫字板顯示)

我用下面的代碼轉換到rtf。

function BitmapToRTF(pict: TBitmap): string; 
var 
    bi, bb, rtf: string; 
    bis, bbs: Cardinal; 
    achar: ShortString; 
    hexpict: string; 
    I: Integer; 
begin 
    GetDIBSizes(pict.Handle, bis, bbs); 
    SetLength(bi, bis); 
    SetLength(bb, bbs); 
    GetDIB(pict.Handle, pict.Palette, PChar(bi)^, PChar(bb)^); 
    rtf := '{\rtf1 {\pict\dibitmap0 '; 
    SetLength(hexpict, (Length(bb) + Length(bi)) * 2); 
    I := 2; 
    for bis := 1 to Length(bi) do 
    begin 
    achar := Format('%x', [Integer(bi[bis])]); 
    if Length(achar) = 1 then 
     achar := '0' + achar; 
    hexpict[I - 1] := achar[1]; 
    hexpict[I] := achar[2]; 
    Inc(I, 2); 
    end; 
    for bbs := 1 to Length(bb) do 
    begin 
    achar := Format('%x', [Integer(bb[bbs])]); 
    if Length(achar) = 1 then 
     achar := '0' + achar; 
    hexpict[I - 1] := achar[1]; 
    hexpict[I] := achar[2]; 
    Inc(I, 2); 
    end; 
    rtf := rtf + hexpict + ' }}'; 
    Result := rtf; 
end; 

現在我的問題是我沒能在MS Word或查看器來查看圖像。

我可以在word pad中查看圖像。

請建議我解決這個問題。

+0

你的意思是說你將一個BMP文件轉換成一個嵌入BMP文件的RTF文件? – 2010-06-22 12:25:38

+0

是的,我的意思是,嵌入一個bmp到RTF文件 – Bharat 2010-06-22 12:27:54

+1

採取bmp文件,手動將其包含在Word中,將文檔保存爲rtf格式。查看保存的文件與您的文件的不同之處。嘗試通過刪除看起來多餘的命令來找出哪些是Word所必需的,以剝離rtf文件。但是這很麻煩,因爲不同的Word版本有不同的rtf版本。 – 2010-06-28 11:33:40

回答

4

我認爲問題是,RTF渲染話語執行請求比寫字板的一個更多的信息(我認爲,出於安全考慮 - 避免溢出attacks-),但是這是純粹的猜測,我必須承認。

嘗試描述位圖信息時是準確的:例如,如果位圖是32位使用\ wbmbitspixel32,請將寬度和高度放在rtf編碼中,使用\ picw和\ pich等等。那。

下面是這樣一個例子:

http://www.scribd.com/doc/25967552/Rtf1-Ansi-Ansicpg1252-Uc2-Deff0-Deflang1033-Fonttbl-f0-Froman-Fcharset0-Fprq2-Panose-02020603050405020304-Times-New-Roman-f1-Fswiss-Fchar

0

如何將圖像轉換爲文本文件? RTF是RichtTextFormat我猜?

我會採取bmp並將其與Microsoft Word API放入一個文檔並保存該文檔是rtf。

託比

0

如果你想查看在MS Word或Word Viewer中的圖像,將圖像轉換爲EMF文件,並將其嵌入的RTF標籤內。如果你想在寫字板查看圖像,將圖像轉換爲位圖並將其嵌入的RTF標籤內:(注意在這裏你不能查看寫字板圖像)

{\rtf1 {\pict\emfblif <emf source> }} 

{\rtf1 {\pict\dibitmap0 <bitmap source> }} 

我不知道爲什麼會發生這種情況。

相關問題