Werk Met Vorms

Hierdie onderwerp bespreek hoe om programmaties te werk met vorms met behulp van Aspose.Words.

Die vorms in Aspose.Words verteenwoordig’n voorwerp in die tekeninglaag, soos’n AutoShape, teksboks, vrye vorm, OLE voorwerp, ActiveX beheer, of prentjie. ‘n Word-dokument kan een of meer verskillende vorms bevat. Vorms van die dokument word verteenwoordig deur die Shape klas.

Voeg Vorm In Met Dokumentbouer

Jy kan inlyn vorm met gespesifiseerde tipe en grootte en vryswewende vorm met die gespesifiseerde posisie, grootte en teks wrap tipe in’n dokument met behulp van die InsertShape metode. Die InsertShape metode laat toe om DML vorm in die dokument model in te voeg. Die dokument moet gestoor word in die formaat, wat DML vorms ondersteun, anders sal sulke nodusse omgeskakel word na VML vorm, terwyl dokument stoor.

Die volgende kode voorbeeld toon hoe om hierdie tipe vorms in die dokument in te voeg:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
//Free-floating shape insertion.
Shape shape = builder.insertShape(ShapeType.TEXT_BOX,
RelativeHorizontalPosition.PAGE, 100,
RelativeVerticalPosition.PAGE, 100,
50, 50,
WrapType.NONE);
shape.setRotation(30.0);
builder.writeln();
//Inline shape insertion.
shape = builder.insertShape(ShapeType.TEXT_BOX, 50, 50);
shape.setRotation(30.0);
OoxmlSaveOptions so = new OoxmlSaveOptions(SaveFormat.DOCX);
// "Strict" or "Transitional" compliance allows to save shape as DML.
so.setCompliance(OoxmlCompliance.ISO_29500_2008_TRANSITIONAL);
dataDir = dataDir + "Shape_InsertShapeUsingDocumentBuilder_out.docx";
// Save the document to disk.
doc.save(dataDir, so);

Stel Aspekverhouding Gesluit

Met behulp van Aspose.Words kan jy spesifiseer of die vorm se aspekverhouding deur die AspectRatioLocked eienskap gesluit is.

Die volgende kode voorbeeld toon hoe om te werk met die AspectRatioLocked eiendom:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
Shape shape = builder.insertImage(dataDir + "Test.png");
shape.setAspectRatioLocked(true);
// Save the document to disk.
dataDir = dataDir + "Shape_AspectRatioLocked_out.doc";
doc.save(dataDir);

Stel Vorm Uitleg In Sel

Jy kan ook spesifiseer of die vorm binne’n tabel of buite dit vertoon word deur die IsLayoutInCell eienskap te gebruik.

Die volgende kode voorbeeld toon hoe om te werk met die IsLayoutInCell eiendom:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Document doc = new Document(dataDir + "LayoutInCell.docx");
DocumentBuilder builder = new DocumentBuilder(doc);
Shape watermark = new Shape(doc, ShapeType.TEXT_PLAIN_TEXT);
watermark.setRelativeHorizontalPosition(RelativeHorizontalPosition.PAGE);
watermark.setRelativeVerticalPosition(RelativeVerticalPosition.PAGE);
watermark.isLayoutInCell(false); // Display the shape outside of table cell if it will be placed into a cell.
watermark.setWidth(300);
watermark.setHeight(70);
watermark.setHorizontalAlignment(HorizontalAlignment.CENTER);
watermark.setVerticalAlignment(VerticalAlignment.CENTER);
watermark.setRotation(-40);
watermark.getFill().setColor(Color.GRAY);
watermark.setStrokeColor(Color.GRAY);
watermark.getTextPath().setText("watermarkText");
watermark.getTextPath().setFontFamily("Arial");
watermark.setName("WaterMark_0");
watermark.setWrapType(WrapType.NONE);
Run run = (Run) doc.getChildNodes(NodeType.RUN, true).get(doc.getChildNodes(NodeType.RUN, true).getCount() - 1);
builder.moveTo(run);
builder.insertNode(watermark);
doc.getCompatibilityOptions().optimizeFor(MsWordVersion.WORD_2010);
// Save the document to disk.
dataDir = dataDir + "Shape_IsLayoutInCell_out.docx";
doc.save(dataDir);

Voeg Hoeke Gesny

Jy kan’n snip hoek reghoek te skep met behulp van Aspose.Words. Die vorm tipes is SingleCornerSnipped, TopCornersSnipped, DiagonalCornersSnipped, TopCornersOneRoundedOneSnipped, SingleCornerRounded, TopCornersRounded, en DiagonalCornersRounded.

Die DML vorm word geskep met behulp van InsertShape metode met hierdie vorm tipes. Hierdie tipes kan nie gebruik word om VML vorms te skep nie. Probeer om vorm te skep deur die gebruik van die openbare konstruktor van die “Vorm” klas verhoog die “NotSupportedException” uitsondering.

Die volgende kode voorbeeld toon hoe om hierdie tipe vorms in die dokument in te voeg:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
Shape shape = builder.insertShape(ShapeType.TOP_CORNERS_SNIPPED, 50, 50);
OoxmlSaveOptions so = new OoxmlSaveOptions(SaveFormat.DOCX);
so.setCompliance(OoxmlCompliance.ISO_29500_2008_TRANSITIONAL);
dataDir = dataDir + "AddCornersSnipped_out.docx";
//Save the document to disk.
doc.save(dataDir, so);

Kry Werklike Vormgrenspunte

Met behulp van Aspose.Words API kan jy die ligging en grootte van die vorm wat blok in punte bevat, relatief tot die anker van die boonste vorm kry. Om dit te doen, gebruik die BoundsInPoints eienskap.

Die volgende kode voorbeeld toon hoe om te werk met die BoundsInPoints eiendom:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
Shape shape = builder.insertImage(dataDir + "Test.png");
shape.setAspectRatioLocked(false);
System.out.print("\nGets the actual bounds of the shape in points. ");
System.out.println(shape.getShapeRenderer().getBoundsInPoints());

Spesifiseer Vertikale Anker

U kan die teks vertikale belyning binne’n vorm spesifiseer deur die VerticalAnchor eienskap te gebruik.

Die volgende kode voorbeeld toon hoe om te werk met die VerticalAnchor eiendom:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Document doc = new Document(dataDir + "VerticalAnchor.docx");
NodeCollection shapes = doc.getChildNodes(NodeType.SHAPE, true);
int imageIndex = 0;
for (Shape textBoxShape : (Iterable<Shape>) shapes) {
if (textBoxShape != null) {
textBoxShape.getTextBox().setVerticalAnchor(TextBoxAnchor.BOTTOM);
}
}
doc.save(dataDir + "VerticalAnchor_out.docx");

Ontdek SmartArt Vorm

Aspose.Words laat ook toe om te ontdek of die Vorm’n SmartArt voorwerp het. Om dit te doen, gebruik die HasSmartArt eienskap.

Die volgende kode voorbeeld toon hoe om te werk met die HasSmartArt eiendom:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Document doc = new Document(dataDir + "input.docx");
NodeCollection shapes = doc.getChildNodes(NodeType.SHAPE, true);
int count = 0;
for (Shape textBoxShape : (Iterable<Shape>) shapes) {
if (textBoxShape.hasSmartArt()) {
count++;
}
}
System.out.println("The document has " + count + " shapes with SmartArt.");

Horisontale Reël Formaat

Jy kan horisontale reëlvorm in’n dokument invoeg deur die InsertHorizontalRule - metode te gebruik.

Aspose.Words API bied HorizontalRuleFormat eienskap om toegang te verkry tot die eienskappe van die horisontale reëlvorm. Die HorizontalRuleFormat klas bloot basiese eienskappe soos Hoogte, Kleur, NoShade ens. vir die opmaak van’n horisontale reël.

Die volgende kode voorbeeld toon hoe om HorizontalRuleFormatstel:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
DocumentBuilder builder = new DocumentBuilder();
Shape shape = builder.insertHorizontalRule();
HorizontalRuleFormat horizontalRuleFormat = shape.getHorizontalRuleFormat();
horizontalRuleFormat.setAlignment(HorizontalRuleAlignment.CENTER);
horizontalRuleFormat.setWidthPercent(70);
horizontalRuleFormat.setHeight(3);
horizontalRuleFormat.setColor(Color.BLUE);
horizontalRuleFormat.setNoShade(true);
builder.getDocument().save("HorizontalRuleFormat.docx");