1

我试图找到一种方法来编写一个函数,该函数传递一个包含多个对象 id(至少两个)的参数数组,并将对象组合成一个流并返回新流对象的 id。

这是我到目前为止所拥有的:

Public Function CombineToStream(ParamArray objects As Integer()) As Integer
    Dim stream = New StreamObject(myDoc.ObjectSoup)
    Dim sb As New StringBuilder()
    Dim soType As Type = GetType(StreamObject)

    If objects.Length < 2 Then
      Return objects.FirstOrDefault()
    End If

    For index As Integer = 0 To objects.Length - 1
      Dim objectId As Integer = objects(index)

      Dim obj = myDoc.ObjectSoup.Item(objectId)

      Dim objType As Type = obj.GetType


      If objType = soType OrElse objType.IsSubclassOf(soType) Then

        Dim typedObj As StreamObject = TryCast(obj, StreamObject)

        If typedObj.Compressed Then
          typedObj.Decompress()
        End If

        Dim data As Byte() = typedObj.GetData()
        sb.Append(Encoding.ASCII.GetString(data))
      End If
    Next

    stream.SetData(Encoding.ASCII.GetBytes(sb.ToString()))

    For index As Integer = 0 To objects.Length - 1
      Dim objectId As Integer = objects(index)

      myDoc.Delete(objectId)
    Next

    Return stream.ID
  End Function

该功能目前不起作用,因为传入的对象不再出现在文档中。我有一种感觉,这与流如何连接在一起或文档中的任何地方都没有引用新流有关,因此在保存 pdf 时被删除(“已放弃”或未引用的对象被删除)。

我在这里先向您的帮助表示感谢。

4

0 回答 0