html - 从 HTML 转换为 RTF 时如何强制 Word 嵌入图像?

标签 html ms-word rtf office-automation

我正在使用 Word 的自动化功能将包含图像的 HTML 文件转换为 RTF 文件。

问题是 Word 不会将图像嵌入 RTF 文件中,而是使用 INCLUDEPICTURE 从外部引用图像。这样做的链式 react 是 Windows Rich Edit 控件会忽略此关键字并且不会呈现任何图像。

LPDISPATCH lpd = docs.Open(COleVariant(sHtmlFilename),  // FileName
                    varFalse,                           // ConfirmConversions
                    varFalse,                           // ReadOnly
                    varFalse,                           // AddToRecentFiles
                    varNull,                            // PasswordDocument
                    varNull,                            // PasswordTemplate
                    varTrue,                            // Revert
                    varNull,                            // WritePasswordDocument
                    varNull,                            // WritePasswordTemplate
                    COleVariant(wdOpenFormatWebPages),  // Format
                    COleVariant(msoEncodingAutoDetect), // Encoding
                    varFalse,                           // Visible
                    varFalse,                           // OpenAndRepair
                    varZero,                            // DocumentDirection
                    varTrue,                            // NoEncodingDialog
                    varNull);                           // XMLTransform


if (lpd == NULL)
    return FALSE;

_Document doc(lpd);

doc.SaveAs(COleVariant(sRtfFilename),               // FileName
                COleVariant(wdSaveFormatRTF),       // FileFormat
                varFalse,                           // LockComments
                varNull,                            // Password
                varFalse,                           // AddToRecentFiles
                varNull,                            // WritePassword
                varFalse,                           // ReadOnlyRecommended
                varFalse,                           // EmbedTrueTypeFonts
                varFalse,                           // SaveNativePictureFormat
                varFalse,                           // SaveFormsData
                varFalse,                           // SaveAsAOCELetter
                COleVariant(msoEncodingAutoDetect), // Encoding
                varFalse,                           // InsertLineBreaks
                varFalse,                           // AllowSubstitutions
                varOne,                             // LineEnding
                varFalse);                          // AddBiDiMarks

我的问题是:自动化模型中是否还有其他功能会强制 Word 将图像嵌入 RTF 中?

注意:我目前正在尝试通过后处理 RTF 来手动嵌入图像,但这是一个不优雅且可能脆弱的解决方案。

最佳答案

我最近遇到了同样的问题并设法以这种方式解决它:

procedure TMWnd.UnlinkImages(ADoc: Variant);
var
    fCnt, sCnt, iCnt, i  : Cardinal;
    field, shape, ishape  : Variant;
begin
    fCnt := ADoc.Fields.Count;
    for i:=1 to fCnt do begin
        field := ADoc.Fields.Item(i);
        if VarIsClear(field)or VarIsClear(field.LinkFormat) then
            Continue;
        if field.Type <> wdFieldIncludePicture then
            Continue;
        field.LinkFormat.SavePictureWithDocument := True;
        field.LinkFormat.BreakLink;
    end;


    sCnt := ADoc.Shapes.Count;
    for i:=1 to sCnt do begin
        shape := ADoc.Shapes.Item(i);
        if VarIsNull(shape)or VarIsClear(shape.LinkFormat) then
            continue;
        shape.LinkFormat.SavePictureWithDocument := True;
        shape.LinkFormat.BreakLink;
    end;

    iCnt := ADoc.InlineShapes.Count;
    for i:=1 to iCnt do begin
        ishape := ADoc.InlineShapes.Item(i);
        if VarIsClear(ishape)or VarIsClear(ishape.LinkFormat) then
            Continue;
        ishape.LinkFormat.SavePictureWithDocument := True;
        ishape.LinkFormat.BreakLink;
    end;
end;

这是 Delphi 代码,但它可以轻松适应任何语言,因为它是简单的 OLE 自动化方法调用。

关于html - 从 HTML 转换为 RTF 时如何强制 Word 嵌入图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25543358/

相关文章:

html - 响应式图片 srcset - 总是选择最大的图片

html - 如何重复背景图像的一部分

html - 如何修复 </li> <li> 标签之间的 "div"标签

c# - 在 RTF 字符串中设置格式?

java - 在特定文档的不同副本中打印不同的值(副本编号)

python - 拼写错误 - Pyenchant

android - 关于 max-width 属性的 CSS 媒体查询使平板电脑和桌面的大小为 1024px

ruby-on-rails - ruby rails : In there a way to convert word to html?

c# - 将 Word 保存为 UTF-8 编码的 HTML

c# - 将 DOC/DOCX 转换成 PNG