mjhcad 发表于 2014-8-11 10:57:00

如何在TX中直接复制到Word的图片是非引用方式!

在TX中用如下方式插入图片:
      dim NewImage As TXTextControl.Image = New TXTextControl.Image
      NewImage.FileName = "d:\vb7sam\hz.emf"
      NewImage.SaveMode = TXTextControl.ImageSaveMode.SaveAsData
      NewImage.VerticalScaling = 100
      NewImage.HorizontalScaling = 100
      TextControl1.Images.Add(NewImage, TXTextControl.HorizontalAlignment.Right,   
                                                30,TXTextControl.ImageInsertionMode.DisplaceText)
如果保存后再打开文件复制粘贴到word中,图片是以嵌入文件的方式存在的。
如果直接在TX中复制粘贴到word中,图片是外部引用的方式存在的,删掉外部图片,再打开word文件无法显示图片。
我的问题是:如何设置才能直接在TX中复制粘贴到word中后,图片以嵌入文件的方式存在?

iceman 发表于 2014-8-11 18:16:00

回复 1楼mjhcad的帖子

你好,
我通过以下步骤测试:
1.运行1#中的代码,图片路径为绝对路径
2.点击图片,复制到word中
3.关闭 tx 窗体,关闭word窗体
4.移除 image
4.重新打开word

图片可以正常显示,请问我们操作步骤相同吗?

mjhcad 发表于 2014-8-12 09:22:00

我测试了一下:
   如果只是点击图片复制到word中,图片是以嵌入方式存在的。
如果连带文字图片一起复制到word中,图片是以外部引用的方式存在的。
查看了下TX中的文件实际内容分如下:

{\rtf1\ansi\ansicpg936\uc1\deff0{\fonttbl
{\f0\fnil\fcharset134\fprq2 \'cb\'ce\'cc\'e5;}
{\f1\fnil\fcharset1\fprq2 Arial;}
{\f2\froman\fcharset2\fprq2 Symbol;}}
{\colortbl;}
{\stylesheet{\s0\itap0\nowidctlpar\f0\fs24 ;}{\*\cs10\additive Default Paragraph Font;}}
{\*\generator TX_RTF32 19.0.542.501;}
\paperw12240\paperh15840\margl1440\margt1440\margr1440\margb1440\deftab1134\widowctrl\lytexcttp\formshade\sectd
\headery720\footery720\pgwsxn12240\pghsxn15840\marglsxn1440\margtsxn1440\margrsxn1440\margbsxn1440\pgbrdropt32\pard\itap0\nowidctlpar\plain\f1\fs20
{\shp{\*\shpinst\shpleft3645\shptop0\shpright9360\shpbottom6645\shpfhdr0\shpbxcolumn\shpbxignore\shpbypara\shpbyignore\shpwr2\shpwrk0\shpz0\shplid1025{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn wzName}{\sv _tx_id_1_}}{\sp{\sn pibName}{\sv d:\'5cvb7sam\'5chz.emf}}{\sp{\sn pibFlags}{\sv 13}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn dxWrapDistLeft}{\sv 0}}{\sp{\sn dxWrapDistRight}{\sv 0}}{\sp{\sn posh}{\sv 3}}{\sp{\sn posrelh}{\sv 2}}{\sp{\sn fLayoutInCell}{\sv 1}}}
{\shprslt{\field{\*\fldinst INCLUDEPICTURE "d:\\\\vb7sam\\\\hz.emf" \\d}{\fldrslt {}}}}}this is apictrue:\par }

说明在Tx中图片是以引用的方式存在的,只有保存后再打开才以嵌入方式存在的。
如果图片较多的话,单个图片复制就太麻烦了。

iceman 发表于 2014-8-12 15:49:00

回复 3楼mjhcad的帖子

问题我已经重现,并且提交给产品组,有进一步结果会反馈给你。

iceman 发表于 2014-8-12 16:32:00

回复 3楼mjhcad的帖子

你好,
这个问题需要先保存 tx 文件,使图片作为嵌入模式保存,再加载进来,代码如下:

Dim temp As Byte() = Nothing
      Dim saveSettings As New TXTextControl.SaveSettings()
      saveSettings.ImageSaveMode = TXTextControl.ImageSaveMode.SaveAsData

      TextControl1.Save(temp, TXTextControl.BinaryStreamType.InternalUnicodeFormat, saveSettings)
      TextControl1.Load(temp, TXTextControl.BinaryStreamType.InternalUnicodeFormat)


这种做法比较耗费性能,但目前只有这一种解决方法。

mjhcad 发表于 2014-8-12 16:53:00

谢谢版主。真是很耐心!:strong:

iceman 发表于 2014-8-12 16:55:00

回复 6楼mjhcad的帖子

恩,不客气。

为了给你提供更优质的服务,请对本次服务进行评分。我们会认真对待你提出的宝贵意见,谢谢http://gcdn.gcpowertools.com.cn/attachment.aspx?attachmentid=10062

什么跟什么啊 发表于 2014-9-21 08:35:00

谢谢版主

iceman 发表于 2014-9-22 10:18:00

回复 8楼什么跟什么啊的帖子

客气了
页: [1]
查看完整版本: 如何在TX中直接复制到Word的图片是非引用方式!