Hello,
I need to remove images from .pdf by condition. When I remove only 1 image everything is fine but even with two images it fails.
Demo which shows that it’s not possible to remove all (two) images from the second page of a test document:
https://drive.google.com/file/d/0B-CEaN01bFt3VWRpRWtwVklCaDA/view?usp=sharing
Aspose version: 17.9.0.0
Code which is used to remove images:
Public Shared Sub RemoveImages(ByVal pathToDocument As String, ByVal pathToOutputDocument As String)
Dim ImagesToRemove As New List(Of Tuple(Of Integer, Integer)) 'Item1=PageNumber, Item2=ImageIndex
Dim AsposeLicense As New Aspose.Pdf.License()
AsposeLicense.SetLicense("Aspose.Total.lic")
Using PdfDocument As New Aspose.Pdf.Document(pathToDocument)
For i As Integer = 1 To PdfDocument.Pages.Count
Using Page As Aspose.Pdf.Page = PdfDocument.Pages(i)
Dim ImagePlacementAbsorber As New Aspose.Pdf.ImagePlacementAbsorber
Page.Accept(ImagePlacementAbsorber)
If ImagePlacementAbsorber IsNot Nothing AndAlso ImagePlacementAbsorber.ImagePlacements IsNot Nothing AndAlso ImagePlacementAbsorber.ImagePlacements.Count > 0 Then
For j As Integer = 1 To ImagePlacementAbsorber.ImagePlacements.Count
Dim ImagePlacement As Aspose.Pdf.ImagePlacement = ImagePlacementAbsorber.ImagePlacements(j)
If i = 2 Then 'i is number of Page
ImagesToRemove.Add(New Tuple(Of Integer, Integer)(i, j))
End If
Next
End If
End Using
Next
End Using
RemoveImagesFromPdf(pathToDocument, ImagesToRemove, pathToOutputDocument)
End Sub
Private Shared Sub RemoveImagesFromPdf(ByVal pathToDocument As String, _
ByVal imagesToRemove As List(Of Tuple(Of Integer, Integer)), _
ByVal pathToOutputDocument As String)
If imagesToRemove IsNot Nothing AndAlso imagesToRemove.Count > 0 Then
Using PdfDocument As New Aspose.Pdf.Document(pathToDocument)
For i As Integer = 0 To imagesToRemove.Count - 1
PdfDocument.Pages(imagesToRemove(i).Item1).Resources.Images.Delete(imagesToRemove(i).Item2)
Next
PdfDocument.Save(pathToOutputDocument)
End Using
End If
End Sub