GetImages.vb
- ''
- '' This code is part of Document Solutions for PDF demos.
- '' Copyright (c) MESCIUS inc. All rights reserved.
- ''
- Imports System.IO
- Imports System.Drawing
- Imports System.Text
- Imports GrapeCity.Documents.Pdf
- Imports GrapeCity.Documents.Text
- Imports GrapeCity.Documents.Drawing
-
- '' This sample loads a PDF (we use the document generated by the Wetlands sample)
- '' and extracts all images from it. It then prints those images into a new PDF,
- '' centered one per page.
- Public Class GetImages
- Function CreatePDF(ByVal stream As Stream) As Integer
- Dim tf = New TextFormat() With {.Font = StandardFonts.Times, .FontSize = 12}
- Using fs = New FileStream(Path.Combine("Resources", "PDFs", "Wetlands.pdf"), FileMode.Open, FileAccess.Read)
- Dim docSrc = New GcPdfDocument()
- '' Load an existing PDF with some images:
- docSrc.Load(fs)
- '' This call extracts information about images from the loaded PDF,
- '' note that for large files it may take a while to complete:
- Dim imageInfos = docSrc.GetImages()
-
- Dim doc = New GcPdfDocument()
- Dim textPt = New PointF(72, 72)
- Dim imageRc = New RectangleF(72, 72 * 2, doc.PageSize.Width - 72 * 2, doc.PageSize.Height - 72 * 3)
-
- For Each imageInfo In imageInfos
- '' The same image may appear on multiple locations,
- '' imageInfo includes page indices and locations on pages
- '' for simplicity sake we only print page numbers here:
- Dim sb = New StringBuilder()
- imageInfo.Locations.ForEach(Function(il_) sb.Append((il_.Page.Index + 1).ToString() + ", "))
- Dim g = doc.NewPage().Graphics
- g.DrawString($"This image appears on page(s) {sb.ToString().TrimEnd(" "c, ","c)} of the original PDF:", tf, New PointF(72, 72))
- g.DrawImage(imageInfo.Image, imageRc, Nothing, ImageAlign.ScaleImage)
- Next
- '' Done:
- doc.Save(stream)
- Return doc.Pages.Count
- End Using
- End Function
- End Class
-