【问题标题】:Linked image's SourceFullName differs from actual link链接图像的 SourceFullName 与实际链接不同
【发布时间】:2015-03-01 08:31:02
【问题描述】:

我正在使用 Office Interop 和 C# 3.5 开发的文字自动化程序中有一个奇怪的案例

程序的一个任务是将word文档中的任何链接图像复制到不同的位置,并将这些图像的链接源重写到新位置。

现在,在一个文档中,当我检查链接文件(使用 Word 2010)时,它会将图像指向类似于 images\image_file.jpg 的位置 - 因此,图像位于文档所在文件夹的子文件夹中。完全正确。

但是,当我的程序运行到该图像时,同一图像的LinkFormat.SourceFullName 为我提供了我们本地网络上的路径,例如\\net-storage\customer\001 - customername\data\images\documents\image_file.jpg,与我期待的实际图片链接没有任何关联。

这里出了什么问题?如何在我的程序中获得正确的图像源?

编辑到sw_lasse:我确定这是一个相对路径,因为(在其他文档中)删除相对路径中的图像并更新word中的字段后,找不到图像.所以肯定是相对路径。

另外,两条路径(网络路径和相对路径)彼此之间没有关联。网络上的图像使用完全不同的文件夹层次结构,这就是为什么有一个document 子文件夹,而它不存在于相对路径中。

【问题讨论】:

  • 很好的问题 - 我一直在调查这个问题,我需要你做一些澄清。您说“当我检查链接文件时,它会将图像指向类似于 images\image_file.jpg 的位置” - 首先,您是否使用“链接”对话框来查看此内容?如果没有,你如何检查?其次,您确定 Word 将其报告为相对路径吗?最后,您提到了两个路径:images\image_file.jpg\\net-storage\...\images\documents\image_file.jpg - 第一个路径是否故意不包含 images 文件夹中的 documents 文件夹?
  • 我编辑了我的问题。我附上了一张截图,我在其中检查了图片链接。不幸的是,我只能用德语提供,但我认为从定位中您应该能够推断出它是否与您正在谈论的功能相同。

标签: c# ms-word office-interop


【解决方案1】:

我知道您编写 VSTO C# 代码,这是 VBA,但我相信这可以解释您看到的奇怪行为。

你不能使用:

myPicPath = Options.DefaultFilePath(wdPicturesPath)

...因为如果用户插入了来自不同文件夹的图片,默认文件路径会返回该文件夹,而不是对话框中的实际设置。相反,您可以使用:

With Dialogs(wdDialogToolsOptionsFileLocations)
    .Path = "PICTURE-PATH"
    .Update
    myPicPath = .Setting

    If Not Right$(myPicPath, 1) = "\" Then
        myPicPath = myPicPath + "\"
    End If

    MsgBox myPicPath 
End With

同样,你不能使用:

myDocPath = Options.DefaultFilePath (wdDocumentsPath)

获取默认文档路径,因为这返回的是当前FileOpen路径,而不是默认文档路径!!

改为:

Dim myDocPath As String
myDocPath = Dialogs(wdDialogToolsOptionsFileLocations).Setting

'Add a "\" at the end of the path, unless the setting is already followed by a "\" -
'which it will be if the setting is set to a root folder 
If Not Right$(myDocPath, 1) = "\" Then
    myDocPath = myDocPath + "\"
End If

MsgBox myDocPath

这些天我很擅长将 VBA 转换为 C#,如果您提供一些不起作用的代码,我会将此 VBA 转换为适合的。

Ref: How to retrieve Word's default Documents path or Pictures path setting

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-30
    • 2011-10-04
    • 2015-02-17
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    相关资源
    最近更新 更多