Vertoon Vorms Afsonderlik van'n Dokument

Wanneer dokumente verwerk word, is’n algemene taak om al die beelde wat in die dokument gevind word, te onttrek en na’n eksterne plek uit te voer. Hierdie taak word eenvoudig met die Aspose.Words API, wat reeds die funksionaliteit bied vir die onttrekking en stoor van beelddata. Soms wil u egter ook ander soorte grafiese inhoud onttrek wat deur’n ander tipe tekenvoorwerp voorgestel word, byvoorbeeld’n tekskassie met paragrawe, pylvorms en’n klein prent. Daar is geen eenvoudige manier om hierdie voorwerp te lewer nie, aangesien dit’n kombinasie van individuele inhoudelemente is. Jy kan ook’n geval teëkom wanneer die inhoud saam gegroepeer is in die voorwerp wat soos’n enkele prent lyk.

Aspose.Words bied funksionaliteit vir die onttrekking van hierdie tipe inhoud op dieselfde manier as wat jy’n eenvoudige beeld uit’n vorm as weergegee inhoud kan onttrek. Hierdie artikel beskryf hoe om hierdie funksie te gebruik om vorms onafhanklik van die dokument te lewer.

Vorm Tipes in Aspose.Words

Al die inhoud in’n dokument tekening laag word verteenwoordig deur die Shape of GroupShape node in die Aspose.Words Document Object Module (DOM). Sulke inhoud kan teks bokse, beelde, AutoShapes, OLE voorwerpe, ens wees. Sommige velde word ook ingevoer as vorms, byvoorbeeld die INCLUDEPICTURE veld.

‘n eenvoudige beeld word voorgestel deur’n Shape knoop van ShapeType.IMAGE. Hierdie vorm node het geen kind nodes maar die beeld data wat binne hierdie vorm node kan verkry word deur die Shape.image_data eiendom. Aan die ander kant kan’n vorm ook uit baie kind-knope bestaan. Byvoorbeeld, ‘n teks boks vorm, wat verteenwoordig word deur die ShapeType.TEXT_BOX eienskap, kan bestaan uit baie nodes, soos Paragraph en Table. Die meeste vorms kan die Paragraph en Table blokvlak-knope insluit. Dit is dieselfde nodusse as diegene wat in die hoofliggaam verskyn. Vorms is altyd dele van’n paragraaf, of direk in lyn of veranker aan die Paragraph, maar “dryf” op enige plek in die dokument bladsy.

rendering-shapes-separately-from-a-document_1

‘n dokument kan ook vorms bevat wat saam gegroepeer is. Groepering kan in Microsoft Word geaktiveer word deur verskeie voorwerpe te kies en op “Groep” in die regskliek-menu te klik.

rendering-shapes-separately-from-a-document_2

In Aspose.Words word hierdie groepe vorms voorgestel deur die GroupShape knoop. Dit kan ook op dieselfde manier opgeroep word om die hele groep na beeld te lewer.

rendering-shapes-separately-from-a-document_3

Die DOCX - formaat kan spesiale soorte beelde bevat, soos diagramme of kaarte. Hierdie vorms word ook voorgestel deur die Shape - knooppunt in Aspose.Words, wat ook’n soortgelyke metode bied om dit as beelde te lewer. Volgens ontwerp kan’n vorm nie’n ander vorm as kind bevat nie, tensy daardie vorm’n beeld is (ShapeType.IMAGE). Byvoorbeeld, Microsoft Word laat jou nie toe om’n tekskassie in’n ander tekskassie in te voeg nie.

Die vorm tipes hierbo beskryf bied’n spesiale metode om die vorms te lewer deur die ShapeRenderer klas. ‘n voorbeeld van die ShapeRenderer klas word verkry vir’n Shape of GroupShape deur die get_shape_renderer metode of deur die Shape aan die konstruktor van die ShapeRenderer klas te gee. Hierdie klas bied toegang tot lede, wat toelaat dat die lewering van’n vorm aan die volgende:

  • Lêer op die skyf
  • Stroom

Rendering Na Lêer of Stroom

Die save metode bied oorladings wat’n vorm direk aan’n lêer of stroom weergee. Beide oorladings aanvaar’n geval van die ImageSaveOptions klas, wat toelaat om opsies vir die lewering van die vorm te definieer. Dit werk op dieselfde manier as die Document.save metode. Selfs al is hierdie parameter vereis, kan jy’n nul waarde slaag, spesifiseer dat daar geen persoonlike opsies.

Die vorm kan uitgevoer word in enige beeld formaat wat in die SaveFormat opsomming. Byvoorbeeld, die beeld kan weergegee word as’n raster beeld, soos JPEG deur die SaveFormat.JPEG opsomming te spesifiseer, of as’n vektor beeld, soos EMF deur die SaveFormat.EMF te spesifiseer.

Die kode voorbeeld hieronder illustreer die lewering van’n vorm aan’n EMF beeld afsonderlik van dokument, en stoor na skyf:

r = shape.get_shape_renderer()

# Define custom options which control how the image is rendered. Render the shape to the JPEG raster format.
imageOptions = aw.saving.ImageSaveOptions(aw.SaveFormat.EMF)
imageOptions.scale = 1.5
        
# Save the rendered image to disk.
r.save(docs_base.artifacts_dir + "TestFile.RenderToDisk_out.emf", imageOptions)

Die kode voorbeeld hieronder illustreer die lewering van’n vorm aan’n JPEG beeld afsonderlik van dokument, en stoor na’n stroom:

r = shape.get_shape_renderer()

# Define custom options which control how the image is rendered. Render the shape to the vector format EMF.
imageOptions = aw.saving.ImageSaveOptions(aw.SaveFormat.JPEG)
        
# Output the image in gray scale
imageOptions.image_color_mode = aw.saving.ImageColorMode.GRAYSCALE

# Reduce the brightness a bit (default is 0.5f).
imageOptions.image_brightness = 0.45
        
stream =  io.FileIO(docs_base.artifacts_dir + "TestFile.RenderToStream_out.jpg", "w+b")

# Save the rendered image to the stream using different options.
r.save(stream, imageOptions)

# Close the stream
stream.close()

Met die ImageSaveOptions - klas kan u’n verskeidenheid opsies spesifiseer wat beheer hoe die beeld weergegee word. Die funksionaliteit hierbo beskryf kan op dieselfde manier toegepas word op die GroupShape en Shape nodes.

Vertoon’n Vormbeeld

Die Shape klas verteenwoordig voorwerpe in die tekening laag, soos’n AutoShape, teks boks, vrye vorm, OLE voorwerp, ActiveX beheer, of’n prentjie. Deur die Shape klas te gebruik, kan jy vorms in’n Microsoft Word dokument skep of verander. ‘n belangrike eienskap van’n vorm is sy shape_type. Vorms van verskillende tipes kan verskillende vermoëns in’n Word-dokument hê. Byvoorbeeld, slegs beeld en OLE vorms kan beelde binne hulle hê terwyl die meeste van die vorms slegs teks kan hê.

Die volgende voorbeeld toon hoe om’n Vorm beeld te lewer aan’n JPEG beeld afsonderlik van die dokument en stoor dit op die skyf:

# Save the rendered image to disk.
shape.get_shape_renderer().save(docs_base.artifacts_dir + "TestFile.RenderShapeImage.jpeg", None)

Verkry’n Vormgrootte

Die ShapeRenderer klas bied ook funksionaliteit om die grootte van die vorm in pixels te haal deur die get_size_in_pixels metode. Hierdie metode aanvaar twee float (Enkel) parameters die skaal en DPI, wat gebruik word in die berekening van die vorm grootte wanneer die vorm weergegee word. Die metode gee terug die Size voorwerp, wat die breedte en hoogte van die berekende grootte bevat. Dit is nuttig wanneer dit nodig is om die grootte van die weergegee vorm vooraf te ken. Die size_in_points eienskap gee terug Die Vorm grootte gemeet in punte. Die resultaat is’n SizeF voorwerp wat die breedte en hoogte bevat. Jy kan ook bounds_in_points eienskap gebruik om werklike grense van die vorm te kry.