Can anyone assist me with programmatically adding image to and RTF. I have read through RTF spec and when it comes to the pict and image sections it all turns into Greek. Ideally, I would simply point to a graphic file and call it a day. My environment is ASP, IIS 5/6. I have had great success formatting documents, inserting DB info but I need to add a logo to the header and can’t get past it. Any help would be greatly appreciated.
![]() |
Patch reliability is unclear. Unless you have an immediate, pressing need to install a specific patch, don't do it. |
SIGN IN | Not a member? | REGISTER | PLUS MEMBERSHIP |
-
Programmatically Add Image to RTF (2000)
Home » Forums » AskWoody support » Productivity software by function » Visual Basic for Applications » Programmatically Add Image to RTF (2000)
- This topic has 7 replies, 3 voices, and was last updated 21 years ago.
AuthorTopicWSverticalanswer
AskWoody LoungerJune 3, 2004 at 9:17 pm #405753Viewing 0 reply threadsAuthorReplies-
WSjscher2000
AskWoody Lounger -
WSverticalanswer
AskWoody Lounger -
WSAndrew77
AskWoody LoungerJune 4, 2004 at 3:38 am #836257From “RTF: Pocket Guide,” published by (who else) O’Reilly & Associates:
[indent]
Embedding Images
In an ideal world, RTF would allow you to insert a picture into a document by simply dropping a hex-encoded GIF, JPEG, or PNG file into your RTF code. But RTF doesn’t do things that way. The RTF specification, on the subject of pictures, explains a {pict…} construct that contains picture data (typically as a long series of hexadecimal digits). But the picture data encoded in the {pict…} construct is in a binary format that can’t be converted to easily from a conventional image format (i.e., GIF, JPEG, or PNG).
If you want to insert images in an RTF file, you have three options.The first option is to give up and do without the image. In many cases, the image isn’t necessary (as with a company logo on an invoice document).
The second option is to produce the binary encoding of the image by copying it out of an RTF file generated by a word processor. So if you want to insert a logo in an invoice that you’re autogenerating as RTF, you could start AbiWord (for example), start a new blank file, insert a picture from disk, save the file as .rtf, and then open the .rtf file in a text editor. For example, inserting a 2 x 2 blue dot in AbiWord produces an RTF file that ends like this:
pardplainltrpars15{*shppict {pictpngblippicw2pich2picwgoal28pichgoal28 bliptag10000{*blipuid 00000000000000000000000000002710} 89504e470d0a1a0a0000000d4948445200000002000000020403000000809810 1700000030504c54450000008000000080008080000000808000800080808080 80c0c0c0ff000000ff00ffff000000ffff00ff00ffffffffff7b1fb1c4000000 0c49444154789c6338c3700600033401997bc924ce0000000049454e44ae4260 82}}{f4fs24lang1033{*listtag0}}}
This image could be copied into other documents by copying the {pict…} group and inserting it directly into another document as needed. (Note that it must be copied from {pict up to the next matching }, not just the next }. Otherwise, you end up stopping prematurely, at the end of the third line above.)
The third way to insert images in an RTF file is to use this quite nonstandard code to have the word processor insert an arbitrary external image file into the document:{fieldfldedit{*fldinst { INCLUDEPICTURE d "PicturePath" * MERGEFORMATINET }}{fldrslt { }}}
In the PicturePath, path separators must either be a forward slash, like so:
{fieldfldedit{*fldinst { INCLUDEPICTURE d "C:/stuff/Group_x/images/alaska_map.gif" * MERGEFORMATINET }}{fldrslt { }}}
or must be a double-backslash, escaped (either as ‘5c’5c or as ), like so:
{fieldfldedit{*fldinst { INCLUDEPICTURE d "C:'5c'5cstuff'5c'5cGroup_x'5c'5cimages'5c'5calaska_map.gif" * MERGEFORMATINET }}{fldrslt { }}}
or:
{fieldfldedit{*fldinst { INCLUDEPICTURE d "C:stuffGroup_ximagesalaska_map.gif" * MERGEFORMATINET }}{fldrslt { }}}
At time of this writing, this whole image-via-field construct seems to be particular to MSWord versions, beginning with Word 2000. Other word processors either just ignore the construct (as AbiWord, Wordpad, and others do), or they throw an error (like MSWord Viewer 97, which replaces the image with the text “Error! Unknown switch argument”).
You can control exact positioning of an image on the page by simply making it the content of an exact-positioned paragraph, as discussed at the end of the “Basic RTF Syntax” section. For example, this image’s top-left corner starts 2,160 twips across and 3,600 twips down from the page’s top-left corner:{pard pvpgphpg posx2160 posy3600 field...} or {pict...} par}
[/indent]
Sounds like Option 2 might work for you.
BTW, I highly recommend that book if you regulary work in RTF. (Hey, it’s only $12.95)
HTH!
-
WSverticalanswer
AskWoody Lounger -
WSverticalanswer
AskWoody Lounger
-
-
-
WSAndrew77
AskWoody LoungerJune 4, 2004 at 3:38 am #836258From “RTF: Pocket Guide,” published by (who else) O’Reilly & Associates:
[indent]
Embedding Images
In an ideal world, RTF would allow you to insert a picture into a document by simply dropping a hex-encoded GIF, JPEG, or PNG file into your RTF code. But RTF doesn’t do things that way. The RTF specification, on the subject of pictures, explains a {pict…} construct that contains picture data (typically as a long series of hexadecimal digits). But the picture data encoded in the {pict…} construct is in a binary format that can’t be converted to easily from a conventional image format (i.e., GIF, JPEG, or PNG).
If you want to insert images in an RTF file, you have three options.The first option is to give up and do without the image. In many cases, the image isn’t necessary (as with a company logo on an invoice document).
The second option is to produce the binary encoding of the image by copying it out of an RTF file generated by a word processor. So if you want to insert a logo in an invoice that you’re autogenerating as RTF, you could start AbiWord (for example), start a new blank file, insert a picture from disk, save the file as .rtf, and then open the .rtf file in a text editor. For example, inserting a 2 x 2 blue dot in AbiWord produces an RTF file that ends like this:
pardplainltrpars15{*shppict {pictpngblippicw2pich2picwgoal28pichgoal28 bliptag10000{*blipuid 00000000000000000000000000002710} 89504e470d0a1a0a0000000d4948445200000002000000020403000000809810 1700000030504c54450000008000000080008080000000808000800080808080 80c0c0c0ff000000ff00ffff000000ffff00ff00ffffffffff7b1fb1c4000000 0c49444154789c6338c3700600033401997bc924ce0000000049454e44ae4260 82}}{f4fs24lang1033{*listtag0}}}
This image could be copied into other documents by copying the {pict…} group and inserting it directly into another document as needed. (Note that it must be copied from {pict up to the next matching }, not just the next }. Otherwise, you end up stopping prematurely, at the end of the third line above.)
The third way to insert images in an RTF file is to use this quite nonstandard code to have the word processor insert an arbitrary external image file into the document:{fieldfldedit{*fldinst { INCLUDEPICTURE d "PicturePath" * MERGEFORMATINET }}{fldrslt { }}}
In the PicturePath, path separators must either be a forward slash, like so:
{fieldfldedit{*fldinst { INCLUDEPICTURE d "C:/stuff/Group_x/images/alaska_map.gif" * MERGEFORMATINET }}{fldrslt { }}}
or must be a double-backslash, escaped (either as ‘5c’5c or as ), like so:
{fieldfldedit{*fldinst { INCLUDEPICTURE d "C:'5c'5cstuff'5c'5cGroup_x'5c'5cimages'5c'5calaska_map.gif" * MERGEFORMATINET }}{fldrslt { }}}
or:
{fieldfldedit{*fldinst { INCLUDEPICTURE d "C:stuffGroup_ximagesalaska_map.gif" * MERGEFORMATINET }}{fldrslt { }}}
At time of this writing, this whole image-via-field construct seems to be particular to MSWord versions, beginning with Word 2000. Other word processors either just ignore the construct (as AbiWord, Wordpad, and others do), or they throw an error (like MSWord Viewer 97, which replaces the image with the text “Error! Unknown switch argument”).
You can control exact positioning of an image on the page by simply making it the content of an exact-positioned paragraph, as discussed at the end of the “Basic RTF Syntax” section. For example, this image’s top-left corner starts 2,160 twips across and 3,600 twips down from the page’s top-left corner:{pard pvpgphpg posx2160 posy3600 field...} or {pict...} par}
[/indent]
Sounds like Option 2 might work for you.
BTW, I highly recommend that book if you regulary work in RTF. (Hey, it’s only $12.95)
HTH!
-
WSverticalanswer
AskWoody LoungerViewing 0 reply threads -

Plus Membership
Donations from Plus members keep this site going. You can identify the people who support AskWoody by the Plus badge on their avatars.
AskWoody Plus members not only get access to all of the contents of this site -- including Susan Bradley's frequently updated Patch Watch listing -- they also receive weekly AskWoody Plus Newsletters (formerly Windows Secrets Newsletter) and AskWoody Plus Alerts, emails when there are important breaking developments.
Get Plus!
Welcome to our unique respite from the madness.
It's easy to post questions about Windows 11, Windows 10, Win8.1, Win7, Surface, Office, or browse through our Forums. Post anonymously or register for greater privileges. Keep it civil, please: Decorous Lounge rules strictly enforced. Questions? Contact Customer Support.
Search Newsletters
Search Forums
View the Forum
Search for Topics
Recent Topics
-
June 2025 updates are out
by
Susan Bradley
1 hour, 7 minutes ago -
Mozilla shutting Deep Fake Detector
by
Alex5723
2 hours, 56 minutes ago -
Windows-Maintenance-Tool (.bat)
by
Alex5723
2 hours, 59 minutes ago -
Windows 11 Insider Preview build 26200.5641 released to DEV
by
joep517
5 hours, 28 minutes ago -
Windows 11 Insider Preview build 26120.4250 (24H2) released to BETA
by
joep517
5 hours, 30 minutes ago -
Install Office 365 Outlook classic on new Win11 machine
by
WSrcull999
5 hours, 27 minutes ago -
win 10 to win 11 with cpu/mb replacement
by
aquatarkus
3 hours, 21 minutes ago -
re-install Windows Security
by
CWBillow
8 hours, 44 minutes ago -
WWDC 2025 Recap: All of Apple’s NEW Features in 10 Minutes!
by
Alex5723
12 hours, 25 minutes ago -
macOS Tahoe 26
by
Alex5723
6 hours, 38 minutes ago -
Migrating from win10 to win11, instructions coming?
by
astro46
55 minutes ago -
Device Eligibility for Apple 2026 Operating Systems due this Fall
by
PKCano
13 hours, 12 minutes ago -
Recommended watching : Mountainhead movie
by
Alex5723
53 minutes ago -
End of support for Windows 10
by
Old enough to know better
11 hours, 19 minutes ago -
What goes on inside an LLM
by
Michael Covington
2 hours, 35 minutes ago -
The risk of remote access
by
Susan Bradley
50 minutes ago -
The cruelest month for many Office users
by
Peter Deegan
4 hours, 7 minutes ago -
Tracking protection and trade-offs in Edge
by
Mary Branscombe
2 hours, 10 minutes ago -
Supreme Court grants DOGE access to confidential Social Security records
by
Alex5723
1 day, 10 hours ago -
EaseUS Partition Master free 19.6
by
Alex5723
11 hours, 26 minutes ago -
Microsoft : Edge is better than Chrome
by
Alex5723
2 days ago -
The EU launched DNS4EU
by
Alex5723
2 days, 12 hours ago -
Cell Phone vs. Traditional Touchtone Phone over POTS
by
280park
2 days, 3 hours ago -
Lost access to all my networked drives (shares) listed in My Computer
by
lwerman
2 days, 18 hours ago -
Set default size for pasted photo to word
by
Cyn
3 days ago -
Dedoimedo tries 24H2…
by
Cybertooth
2 days, 12 hours ago -
Windows 11 Insider Preview build 27871 released to Canary
by
joep517
3 days, 23 hours ago -
Windows 11 ad from Campaign Manager in Windows 10
by
Jim McKenna
1 day, 15 hours ago -
Small desktops
by
Susan Bradley
3 hours, 40 minutes ago -
Totally disable Bitlocker
by
CWBillow
2 days, 16 hours ago
Recent blog posts
Key Links
Want to Advertise in the free newsletter? How about a gift subscription in honor of a birthday? Send an email to sb@askwoody.com to ask how.
Mastodon profile for DefConPatch
Mastodon profile for AskWoody
Home • About • FAQ • Posts & Privacy • Forums • My Account
Register • Free Newsletter • Plus Membership • Gift Certificates • MS-DEFCON Alerts
Copyright ©2004-2025 by AskWoody Tech LLC. All Rights Reserved.