I am able to use the Aspose Words for Java to write out some text and save the document in a local directory (code is shown below). So far so good.
I am also able to structure my data in hierarchical levels and write out each level line by line in a hierarchical manner. The stand alone Java class code is also shown below. Aspose forum advisors can run this stand alone Java class to see exactly what I am trying to do.
But, I am having problem to figure out how to fit those two piece together. After I append a Section to a Document, append a Body to a Section, append a Paragraph to a Body, I have to create a Run. And the crucial part is to put the text at each level of the hierarchy as a parameter of the setText() method of the Run. For example:
hierarchyLevelParagraphRun.setText( indentString( indent ) + topic );
And I have to do it recursively for the PRE ORDER printing- and it is the exact place I cannot figure out "how to".
Let me post my code. The first is the Standalone Java class:
import java.util.List;
import java.util.ArrayList;
public class Topic {
String topic;
Topic t;
int indent = 0;
List subTopics = new ArrayList(); // holds all sub topics
public Topic( String foo){topic = foo;}
public void addSubTopic(Topic t){subTopics.add(t);}
public void showAll(){
System.out.println(topic); // show the parent first
for(int i = 0; i<subTopics.size(); i++){ // then show all children
((Topic) subTopics.get(i)).showAll();
}
}
// just to show you how to interleave other information along with the
// hierarchal info here is a version that does indenting.
public void showAllIndented(int level){
indent = level;
// same as above but with outlines indented to show level
System.out.println(indentString(indent) + topic);
for(int i = 0; i<subTopics.size(); i++){ // then show all children
((Topic) subTopics.get(i)).showAllIndented(level+1);
}
}
private static String indentString(int count){
String res = "";
for(int i = 0; i< count; i++)
{
res = res.concat(" ");
}
return res;
}
// finally some test code
public static void main(String[] args){
Topic root = new Topic("Animals");
Topic dog = new Topic("Dog");
Topic cat = new Topic("Cat");
Topic barks = new Topic("Barks");
Topic hacks = new Topic("Hacks up furball");
root.addSubTopic(dog);
root.addSubTopic(cat);
dog.addSubTopic(barks);
cat.addSubTopic(hacks);
root.showAllIndented(0);
}
}
The second one is the Java class using the Aspose Words to create and save a document:
package docs;
import java.awt.Color;
import java.util.Date;
import com.aspose.words.*;
public class WriteSomething
{
private static final String objectiveTitle = "Let's Test - OPLAN 50XX Phase II";
public static void main( String []args )
{
Document wordMeasurementSummaryReport;
try {
wordMeasurementSummaryReport = new Document();
wordMeasurementSummaryReport.removeAllChildren();
// check the package to import and the Java Date
Date now = new Date();
wordMeasurementSummaryReport.getCustomDocumentProperties().add( "Creation Date", now );
//Creating a new section node
Section wordMeasurementSummaryReportSection = new Section( wordMeasurementSummaryReport );
//Appending section to the document
wordMeasurementSummaryReport.appendChild( wordMeasurementSummaryReportSection );
//Setting properties for the section
wordMeasurementSummaryReportSection.getPageSetup().setSectionStart(SectionStart.NEW_PAGE);
wordMeasurementSummaryReportSection.getPageSetup().setPaperSize(PaperSize.LETTER);
//Creating the wordMeasurementSummaryReportBody section for the document
Body wordMeasurementSummaryReportBody = new Body( wordMeasurementSummaryReport );
wordMeasurementSummaryReportSection.appendChild( wordMeasurementSummaryReportBody );
//Creating wordMeasurementSummaryReportParagraph for the wordMeasurementSummaryReportBody -- Title
Paragraph measurementSummaryTitle = new Paragraph( wordMeasurementSummaryReport );
wordMeasurementSummaryReportBody.appendChild( measurementSummaryTitle );
//Formatting the wordMeasurementSummaryReportParagraph
measurementSummaryTitle.getParagraphFormat().setStyleName( "Heading 1" );
measurementSummaryTitle.getParagraphFormat().setAlignment( ParagraphAlignment.CENTER );
//Create a run of text in the wordMeasurementSummaryReportParagraph.
Run titleRun = new Run( wordMeasurementSummaryReport );
titleRun.getFont().setColor( Color.BLACK );
measurementSummaryTitle.appendChild( titleRun );
Paragraph hierarchyLevelParagraph = new Paragraph( wordMeasurementSummaryReport );
wordMeasurementSummaryReportBody.appendChild( hierarchyLevelParagraph );
hierarchyLevelParagraph.getParagraphFormat().setStyleName("Heading 2");
hierarchyLevelParagraph.getParagraphFormat().setAlignment(ParagraphAlignment.LEFT);
// write out some text
Run hierarchyLevelParagraphRun = new Run( wordMeasurementSummaryReport );
hierarchyLevelParagraphRun.setText( objectiveTitle );
hierarchyLevelParagraphRun.getFont().setColor( Color.BLACK );
hierarchyLevelParagraph.appendChild( hierarchyLevelParagraphRun );
wordMeasurementSummaryReport.save("C:\\TEMPORARY\\Write_a_Sentence.doc");
} catch (Exception e)
{
e.printStackTrace();
}
}
}