fix für PDF-Attachment bei MergePDFs
This commit is contained in:
@@ -1,12 +1,13 @@
|
||||
Imports iTextSharp.text.pdf
|
||||
Imports System.IO
|
||||
Imports Microsoft.Office.Interop
|
||||
Imports System.IO
|
||||
Imports System.Net
|
||||
Imports GrapeCity.ActiveReports
|
||||
Imports System.Net.Mail
|
||||
Imports System.Reflection
|
||||
Imports System.Text.RegularExpressions
|
||||
Imports System.Windows.Documents
|
||||
Imports com.sun.tools.internal.ws.wsdl.document.mime
|
||||
Imports GrapeCity.ActiveReports
|
||||
Imports itextsharp.text.pdf
|
||||
Imports Microsoft.Office.Interop
|
||||
Imports VERAG_PROG_ALLGEMEIN
|
||||
|
||||
|
||||
@@ -238,7 +239,7 @@ Public Class frmFormulare
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("DE Vollmacht (indirekt)", FormularManagerArten.DE_Vollmacht_indirekt))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("DE Fiskal-Vollmacht", FormularManagerArten.DE_Fiskal))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("AT Vollmacht", FormularManagerArten.AT_Vollmacht))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("AT Vollmacht 4200 EV", FormularManagerArten.AT_Vollmacht_EV))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("AT Vollmacht EV", FormularManagerArten.AT_Vollmacht_EV))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("AT Fiskal-Vollmacht", FormularManagerArten.AT_Fiskal))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Export Vollmacht", FormularManagerArten.VERAG_EXPORT))
|
||||
|
||||
@@ -309,7 +310,7 @@ Public Class frmFormulare
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("DE Vollmacht (indirekt)", FormularManagerArten.DE_Vollmacht_indirekt))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("DE Fiskal-Vollmacht", FormularManagerArten.DE_Fiskal))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("AT Vollmacht", FormularManagerArten.AT_Vollmacht))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("AT Vollmacht 4200 EV", FormularManagerArten.AT_Vollmacht_EV))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("AT Vollmacht EV", FormularManagerArten.AT_Vollmacht_EV))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("AT Fiskal-Vollmacht", FormularManagerArten.AT_Fiskal))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("GB Vollmacht Import/Export", FormularManagerArten.GB_Vollmacht_IE))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("GB Vollmacht indirekt", FormularManagerArten.GB_Vollmacht_indirekt))
|
||||
@@ -359,7 +360,7 @@ Public Class frmFormulare
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("DE Fiskal-Vollmacht", FormularManagerArten.DE_Fiskal))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("DE/AT Vollmacht (indirekt)", FormularManagerArten.DE_Vollmacht_indirekt))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("AT Vollmacht", FormularManagerArten.AT_Vollmacht))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("AT Vollmacht 4200 EV", FormularManagerArten.AT_Vollmacht_EV))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("AT Vollmacht EV", FormularManagerArten.AT_Vollmacht_EV))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("AT Fiskal-Vollmacht", FormularManagerArten.AT_Fiskal))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("GB Vollmacht Import/Export", FormularManagerArten.GB_Vollmacht_IE))
|
||||
MyListBox1.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("GB Vollmacht indirekt", FormularManagerArten.GB_Vollmacht_indirekt))
|
||||
@@ -7152,7 +7153,8 @@ Public Class FormularManagerNEU
|
||||
|
||||
If reader.NumberOfPages > 0 Then
|
||||
document.Open()
|
||||
addAttachmentToCurrentPDF(reader, pdf)
|
||||
|
||||
addOnlyFirstAttachmentToCurrentPDF(reader, pdf)
|
||||
|
||||
pdf.AddDocument(reader)
|
||||
reader.Close()
|
||||
@@ -7200,6 +7202,7 @@ Public Class FormularManagerNEU
|
||||
|
||||
For i As Integer = 0 To filespecs.Size - 1 Step 2
|
||||
' Get the attachment's file specification
|
||||
|
||||
Dim fileArray As PdfDictionary = filespecs.GetAsDict(i + 1)
|
||||
Dim file As PdfDictionary = fileArray.GetAsDict(PdfName.EF)
|
||||
|
||||
@@ -7213,12 +7216,77 @@ Public Class FormularManagerNEU
|
||||
' Add the attachment to the new PDF
|
||||
Dim fileSpec As PdfFileSpecification = PdfFileSpecification.FileEmbedded(copy, Nothing, fileName, fileContent)
|
||||
copy.AddFileAttachment(fileName, fileSpec)
|
||||
Exit For
|
||||
|
||||
Next
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
|
||||
|
||||
End Function
|
||||
|
||||
Public Shared Function addOnlyFirstAttachmentToCurrentPDF(reader As PdfReader, copy As PdfCopy) As Boolean
|
||||
|
||||
Dim catalog As PdfDictionary = reader.Catalog
|
||||
Dim names As PdfDictionary = CType(PdfReader.GetPdfObject(catalog.Get(PdfName.NAMES)), PdfDictionary)
|
||||
|
||||
If names IsNot Nothing Then
|
||||
Dim embeddedFiles As PdfDictionary = CType(PdfReader.GetPdfObject(names.Get(PdfName.EMBEDDEDFILES)), PdfDictionary)
|
||||
|
||||
If embeddedFiles IsNot Nothing Then
|
||||
Dim filespecs As PdfArray = embeddedFiles.GetAsArray(PdfName.NAMES)
|
||||
|
||||
If filespecs Is Nothing Then Return False
|
||||
|
||||
For i As Integer = 0 To filespecs.Size - 1 Step 2
|
||||
|
||||
Dim fileArray As PdfDictionary = filespecs.GetAsDict(i + 1)
|
||||
Dim file As PdfDictionary = fileArray.GetAsDict(PdfName.EF)
|
||||
|
||||
For Each key As PdfName In file.Keys
|
||||
|
||||
Dim stream As PRStream =
|
||||
CType(PdfReader.GetPdfObject(file.GetAsIndirectObject(key)), PRStream)
|
||||
|
||||
Dim fileName As String = fileArray.GetAsString(key).ToString()
|
||||
Dim fileContent As Byte() = PdfReader.GetStreamBytes(stream)
|
||||
|
||||
Dim fileSpec As PdfFileSpecification =
|
||||
PdfFileSpecification.FileEmbedded(copy, Nothing, fileName, fileContent)
|
||||
|
||||
copy.AddFileAttachment(fileName, fileSpec)
|
||||
|
||||
Return True ' only one attachment ever gets copied
|
||||
|
||||
Next
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
|
||||
Return False
|
||||
|
||||
End Function
|
||||
|
||||
|
||||
|
||||
Private Shared Function HasAnyAttachment(reader As PdfReader) As Boolean
|
||||
|
||||
Dim catalog As PdfDictionary = reader.Catalog
|
||||
|
||||
Dim names As PdfDictionary =
|
||||
TryCast(PdfReader.GetPdfObject(catalog.Get(PdfName.NAMES)), PdfDictionary)
|
||||
|
||||
If names Is Nothing Then Return True
|
||||
|
||||
Dim embeddedFiles As PdfDictionary =
|
||||
TryCast(PdfReader.GetPdfObject(names.Get(PdfName.EMBEDDEDFILES)), PdfDictionary)
|
||||
|
||||
If embeddedFiles Is Nothing Then Return False
|
||||
|
||||
Dim filespecs As PdfArray = embeddedFiles.GetAsArray(PdfName.NAMES)
|
||||
|
||||
Return filespecs IsNot Nothing AndAlso filespecs.Size > 2
|
||||
|
||||
End Function
|
||||
|
||||
|
||||
Reference in New Issue
Block a user