Изображение не отображается в слове ms после преобразования его из растрового изображения в RTF (но отображается в wordpad) - PullRequest
4 голосов
/ 22 июня 2010

Я пытаюсь преобразовать растровый файл в RTF с помощью Delphi 2007.

Я использовал приведенный ниже код для конвертации.

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 или Viewer.

Но Я могу просмотреть изображение в Word Pad.

Пожалуйста, предложите мне решить эту проблему.

Ответы [ 3 ]

4 голосов
/ 22 июня 2010

Я думаю, что проблема в том, что реализация Word для рендеринга RTF запрашивает больше информации, чем Wordpad (я думаю, что по соображениям безопасности - избегайте атак переполнения), но это чистое предположение, которое я должен признаться.

Попытайтесь быть точным при описании информации о вашем растровом изображении: например, если растровое изображение является 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 голосов
/ 28 июня 2010

Если вы хотите просмотреть изображение в MS Word или Word Viewer, преобразуйте изображение в файл EMF и вставьте его в теги RTF. ( Примечание: здесь вы не можете просмотреть изображение в Wordpad)

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

Если вы хотите просмотреть изображение в Wordpad, преобразуйте изображение в растровое изображение и вставьте его в теги RTF.

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

Я не знаю, почему это происходит.

0 голосов
/ 22 июня 2010

Как конвертировать изображение в текстовый файл? RTF это RichtTextFormat я думаю?

Я бы взял bmp и поместил его с Microsoft Word API в документ и сохранил документ как rtf.

Tobi

...