#求合并两个字节流保存到一个PDF文件VB6代码
#将一个PDF字节流保存到PDF文件是正常的
#源代码如下:
'导出合并字节流PDF,导出合并PDF
Public Sub Export_MergePDFfile(ContractNum As String, imagePath As String)
Dim imageData() As Byte
Dim imageData1() As Byte
Dim imageData2() As Byte
Dim Stream1 As New ADODB.stream
Dim Stream2 As New ADODB.stream
Dim outputStream As New ADODB.stream
If rs.State <> adStateClosed Then rs.Close
rs.Open "select 发票图片,合同图片 from 合同PDF where 合同编号='" & ContractNum & "'", cnn, adOpenStatic, adLockReadOnly
If rs.RecordCount < 1 Then
MsgBox "该合同还没有添加图片!", vbExclamation
rs.Close
Exit Sub
End If
imageData1 = rs.Fields(0).Value ' “图片”字段是OLE对象类型
' 配置流
Stream1.Type = adTypeBinary
Stream1.Open
Stream1.Write imageData1 ' 将第一个PDF文件的字节流写入输出流
imageData2 = rs.Fields(1).Value
' 配置流
Stream2.Type = adTypeBinary
Stream2.Open
Stream2.Write imageData2 ' 将第二个PDF文件的字节流写入输出流
'' 合并流
outputStream.Type = adTypeBinary ' 设置为二进制模式 1
outputStream.Open
' outputStream.Write Stream1.Read '报错!
' outputStream.Write Stream2.Read
outputStream.Write imageData1
outputStream.Write imageData2
'可以正常写入一个流到PDF文件,但不能合并,写入两个流时后面的会将第一个覆盖。显示的PDF只有imageData2的。
'' 将第二个流的内容追加到第一个流
'Stream1.CopyTo outputStream, -1 '保存的文件打不开,提示已损坏。
'Stream2.CopyTo outputStream, -1
' 保存合并后的PDF到文件
outputStream.SaveToFile imagePath, adSaveCreateOverWrite 'adSaveCreateNotExist=1 ' 2 '1-不允许覆盖,2-覆盖写入
' 关闭流和记录集对象
outputStream.Close
Stream1.Close
Stream2.Close
rs.Close
Set outputStream = Nothing
Set Stream1 = Nothing
Set Stream2 = Nothing
Set rs = Nothing
Exit Sub
#这是一个以前的VB6源代码,将一个字节流保存到PDF是正常的,
#现在需要将两个字节流合并并保存到一个PDF文件。
#特向各位老师求教
#目前各位老师的解答还没有解决问题
#采用合并字节流方式都存在没有合并PDF字节流,第二个字节流覆盖了第一个。
#采用第三方PDFtk工具方式时,第一次可以合并2个PDF文件并输出合并后的文件成功。但再次调用就没有输出文件了。不报错。
#继续期待老师们的指点!谢谢!