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 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.ImageData 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.TextBox 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.
‘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.
In Aspose.Words word hierdie groepe vorms voorgestel deur die GroupShape knoop. Dit kan ook op dieselfde manier opgeroep word om die hele groep aan die beeld te gee.
Die DOCX - formaat kan spesiale soorte beelde bevat, soos diagramme of kaarte. Hierdie vorms word ook verteenwoordig deur die Shape knoop in Aspose.Words, wat ook’n soortgelyke metode bied om hulle 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 a Shape of GroupShape deur die GetShapeRenderer 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 met behulp van die Save metode oorlading
- Stroom met behulp van die Save metode oorlading
- Grafiese Voorwerp deur die RenderToSize en RenderToScale metodes te gebruik
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 dat die definisie van opsies vir die lewering van die vorm. 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:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
// For complete examples and data files, please go to | |
// https://github.com/aspose-words/Aspose.Words-for-Java | |
ShapeRenderer r = shape.getShapeRenderer(); | |
// Define custom options which control how the image is rendered. Render the | |
// shape to the JPEG raster format. | |
ImageSaveOptions imageOptions = new ImageSaveOptions(SaveFormat.EMF); | |
imageOptions.setScale(1.5f); | |
// Save the rendered image to disk. | |
r.save(dataDir + "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:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
// For complete examples and data files, please go to | |
// https://github.com/aspose-words/Aspose.Words-for-Java | |
ShapeRenderer r = new ShapeRenderer(shape); | |
// Define custom options which control how the image is rendered. Render the | |
// shape to the vector format EMF. | |
ImageSaveOptions imageOptions = new ImageSaveOptions(SaveFormat.JPEG); | |
// Output the image in gray scale | |
imageOptions.setImageColorMode(ImageColorMode.GRAYSCALE); | |
// Reduce the brightness a bit (default is 0.5f). | |
imageOptions.setImageBrightness(0.45f); | |
FileOutputStream stream = new FileOutputStream(dataDir + "TestFile.RenderToStream_Out.jpg"); | |
// Save the rendered image to the stream using different options. | |
r.save(stream, imageOptions); |
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.
Rendering Na’n Graphics
Voorwerp
Deur direk na’n Graphics voorwerp te lewer, kan jy jou eie instellings en die toestand vir die Graphics voorwerp definieer. ‘n algemene scenario behels die lewering van’n vorm direk in’n Graphics voorwerp verkry uit’n Windows Vorm of’n Bitmap. Wanneer die Shape knoop weergegee word, sal die instellings die vorm voorkoms beïnvloed. Byvoorbeeld, jy kan die vorm draai of skaal deur die RotateTransform of ScaleTransform metodes vir die Graphics voorwerp te gebruik.
Die onderstaande voorbeeld toon hoe om’n vorm aan’n Graphics voorwerp afsonderlik van die dokument te lewer en rotasie toe te pas op die weergegee beeld:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
// For complete examples and data files, please go to | |
// https://github.com/aspose-words/Aspose.Words-for-Java | |
// The shape renderer is retrieved using this method. This is made into a | |
// separate object from the shape as it internally | |
// caches the rendered shape. | |
ShapeRenderer r = shape.getShapeRenderer(); | |
// Find the size that the shape will be rendered to at the specified scale and | |
// resolution. | |
Dimension shapeSizeInPixels = r.getSizeInPixels(1.0f, 96.0f); | |
// Rotating the shape may result in clipping as the image canvas is too small. | |
// Find the longest side | |
// and make sure that the graphics canvas is large enough to compensate for | |
// this. | |
int maxSide = Math.max(shapeSizeInPixels.width, shapeSizeInPixels.height); | |
BufferedImage image = new BufferedImage((int) (maxSide * 1.25), (int) (maxSide * 1.25), | |
BufferedImage.TYPE_INT_ARGB); | |
// Rendering to a graphics object means we can specify settings and | |
// transformations to be applied to | |
// the shape that is rendered. In our case we will rotate the rendered shape. | |
Graphics2D gr = (Graphics2D) image.getGraphics(); | |
// Clear the shape with the background color of the document. | |
gr.setBackground(shape.getDocument().getPageColor()); | |
gr.clearRect(0, 0, image.getWidth(), image.getHeight()); | |
// Center the rotation using translation method below | |
gr.translate(image.getWidth() / 8, image.getHeight() / 2); | |
// Rotate the image by 45 degrees. | |
gr.rotate(45 * Math.PI / 180); | |
// Undo the translation. | |
gr.translate(-image.getWidth() / 8, -image.getHeight() / 2); | |
// Render the shape onto the graphics object. | |
r.renderToSize(gr, 0, 0, shapeSizeInPixels.width, shapeSizeInPixels.height); | |
ImageIO.write(image, "png", new File(dataDir + "TestFile.RenderToGraphics_out.png")); | |
gr.dispose(); |
Net so, om die RenderToSize metode, die RenderToSize metode geërf van die NodeRendererBase is nuttig vir die skep van miniatuur van dokument inhoud. Die vorm grootte word gespesifiseer deur die konstruktor. Die RenderToSize metode aanvaar die Graphics voorwerp, die X en Y koördinate van die beeld posisie, en die grootte van die beeld (breedte en hoogte) wat op die Graphics voorwerp geteken sal word.
Die Shape kan weergegee word op’n sekere skaal met behulp van die ShapeRenderer.RenderToScale metode geërf van die NodeRendererBase klas. Dit is soortgelyk aan die Document.RenderToScale metode wat dieselfde hoofparameters aanvaar. Die verskil tussen hierdie twee metodes is dat met die ShapeRenderer.RenderToScale metode, in plaas van’n letterlike grootte, kies jy’n drywende waarde wat die vorm skaal tydens sy weergawe. As die drywende waarde gelyk is aan 1.0 veroorsaak dat die vorm weergegee word op 100% van sy oorspronklike grootte. ‘n vloot waarde van 0.5 sal die beeld grootte verminder deur die helfte.
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 ShapeType. Vorms van verskillende tipes kan verskillende vermoëns in’n Word-dokument hê. Byvoorbeeld, slegs beelde 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:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
// For complete examples and data files, please go to | |
// https://github.com/aspose-words/Aspose.Words-for-Java | |
dataDir = dataDir + "TestFile.RenderShape_out.jpg"; | |
// Save the Shape image to disk in JPEG format and using default options. | |
shape.getShapeRenderer().save(dataDir, null); |
Verkry’n Vormgrootte
Die ShapeRenderer klas bied ook funksionaliteit om die grootte van die vorm in pixels te haal deur die GetSizeInPixels 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, byvoorbeeld wanneer die skep van’n nuwe Bitmap van die weergegee uitset.
Die onderstaande voorbeeld toon hoe om’n Nuwe Bitmap en Grafiese voorwerp te skep met die breedte en hoogte van die vorm wat weergegee moet word:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java | |
// For complete examples and data files, please go to | |
// https://github.com/aspose-words/Aspose.Words-for-Java | |
Point2D.Float shapeSizeInDocument = shape.getShapeRenderer().getSizeInPoints(); | |
float width = shapeSizeInDocument.x; // The width of the shape. | |
float height = shapeSizeInDocument.y; // The height of the shape. | |
Dimension shapeRenderedSize = shape.getShapeRenderer().getSizeInPixels(1.0f, 96.0f); | |
BufferedImage image = new BufferedImage(shapeRenderedSize.width, shapeRenderedSize.height, | |
BufferedImage.TYPE_INT_RGB); | |
Graphics gr = image.getGraphics(); | |
// Render shape onto the graphics object using the RenderToScale or RenderToSize | |
// methods of ShapeRenderer class. | |
gr.dispose(); |
Wanneer die RenderToSize of RenderToScale metodes gebruik word, word die weergegee beeld grootte ook teruggestuur in die SizeF voorwerp. Dit kan aan’n veranderlike toegeken word en gebruik word indien nodig.
Die SizeInPoints eienskap gee terug Die Vorm grootte gemeet in punte (sien ShapeRenderer). Die resultaat is’n SizeF
voorwerp wat die breedte en hoogte bevat.