我试图找到一种方法来编写一个函数,该函数传递一个包含多个对象 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 时被删除(“已放弃”或未引用的对象被删除)。
我在这里先向您的帮助表示感谢。