Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [C#] ITextSharp - Get Image Size

    Ciao a tutti,
    tramite ITextSharp ho la necessità di capire dove sono posizionate le immagini e la loro dimensione.
    Per quanto riguarda la posizione è ok, per quanto riguarda la dimensione non ottengo i dati corretti.
    I dati ottenuti sembrano corretti come rapporto tra width e height, ma i valori non corrispondono a quelli reali.
    L'impressione è che la risorsa immagine presente nel pdf venga inserita nella pagina con un fattore di scaling.
    Per esempio nella stessa pagina ho le seguenti due immagini:
    - image1.width, dovrebbe essere 100pt, invece è 1.000 pt (10 volte tanto)
    - image1.height, dovrebbe essere 50pt, inece è 500 pt (sempre 10 volte tanto)
    - image2.width, dovrebbe essere 200pt, invece è 100 pt (1/2 volte tanto)
    - image2.height, dovrebbe essere 100pt, invece è 50 pt (sempre 1/2 volte tanto)

    Sia width che height li calcolo tenendo conto della risoluzione dell'immagine, ovvero:
    codice:
    public static float PixelToPoint(float pixel, float resolution)
    {
      return pixel * resolution / 72;
    }
    public static void Test()
    {
    ...
      PdfDictionary pdfDictionary = imageExtractionStrategy.images[i].GetDictionary();
      width = PixelToPoint(((PdfNumber)pdfDictionary.Get(PdfName.WIDTH)).FloatValue, image.HorizontalResolution);
      height = PixelToPoint(((PdfNumber)pdfDictionary.Get(PdfName.HEIGHT)).FloatValue, image.VerticalResolution);
    }
    Avete qualche idea?

    Grazie
    Luciano

  2. #2
    Risolto, utilizzo l'oggetto Matrix al posto di PdfImageObject:

    codice:
    public class ImageExtractionStrategy : ITextExtractionStrategy
    {
      public List<Matrix> imagesMatrix = new List<Matrix>();
      ...
      public void RenderImage(ImageRenderInfo renderInfo) 
      {
        Matrix matrix = renderInfo.GetImageCTM();
        if (matrix == null)
          return;
        imagesMatrix.Add(matrix);
      }
    }
    Utilizzo:
    codice:
    foreach (Matrix matrix in ImageExtractionStrategy.imagesMatrix)
    {
      float imageWidth = PdfUtilMethod.PtToMM(matrix[Matrix.I11]);
      float imageHeight = PdfUtilMethod.PtToMM(matrix[Matrix.I22]);
      float imageX = PdfUtilMethod.PtToMM(matrix[Matrix.I31]);
      float imageY = PdfUtilMethod.PtToMM(matrix[Matrix.I32]);
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.