Java源码示例:com.lowagie.text.Chapter
示例1
protected void addImage(Image img) throws EmptyStackException {
// if there is an element on the stack...
Object current = stack.pop();
// ...and it's a Chapter or a Section, the Image can be
// added directly
if (current instanceof Chapter || current instanceof Section || current instanceof Cell) {
((TextElementArray) current).add(img);
stack.push(current);
return;
}
// ...if not, we need to to a lot of stuff
else {
Stack newStack = new Stack();
while (!(current instanceof Chapter || current instanceof Section || current instanceof Cell)) {
newStack.push(current);
if (current instanceof Anchor) {
img.setAnnotation(new Annotation(0, 0, 0, 0, ((Anchor) current).getReference()));
}
current = stack.pop();
}
((TextElementArray) current).add(img);
stack.push(current);
while (!newStack.empty()) {
stack.push(newStack.pop());
}
return;
}
}
示例2
protected void addImage(Image img) throws EmptyStackException {
// if there is an element on the stack...
Object current = stack.pop();
// ...and it's a Chapter or a Section, the Image can be
// added directly
if (current instanceof Chapter
|| current instanceof Section
|| current instanceof Cell) {
((TextElementArray) current).add(img);
stack.push(current);
return;
}
// ...if not, we need to to a lot of stuff
else {
Stack newStack = new Stack();
while (!(current instanceof Chapter
|| current instanceof Section || current instanceof Cell)) {
newStack.push(current);
if (current instanceof Anchor) {
img.setAnnotation(new Annotation(0, 0, 0,
0, ((Anchor) current).getReference()));
}
current = stack.pop();
}
((TextElementArray) current).add(img);
stack.push(current);
while (!newStack.empty()) {
stack.push(newStack.pop());
}
return;
}
}
示例3
/**
* Creates a document with outlines.
*
*/
@Test
public void main() throws Exception {
// step 1: creation of a document-object
Document document = new Document(PageSize.A4, 50, 50, 50, 50);
// step 2: we create a writer that listens to the document
PdfWriter writer = PdfWriter.getInstance(document, PdfTestBase.getOutputStream("ChapterSection.pdf"));
// step 3: we open the document
writer.setViewerPreferences(PdfWriter.PageModeUseOutlines);
document.open();
// step 4: we add content to the document
// we define some fonts
Font chapterFont = FontFactory.getFont(FontFactory.HELVETICA, 24, Font.NORMAL, new Color(255, 0, 0));
Font sectionFont = FontFactory.getFont(FontFactory.HELVETICA, 20, Font.NORMAL, new Color(0, 0, 255));
Font subsectionFont = FontFactory.getFont(FontFactory.HELVETICA, 18, Font.BOLD, new Color(0, 64, 64));
// we create some paragraphs
Paragraph blahblah = new Paragraph(
"blah blah blah blah blah blah blaah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah");
Paragraph blahblahblah = new Paragraph(
"blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blaah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah");
// this loop will create 7 chapters
for (int i = 1; i < 8; i++) {
Paragraph cTitle = new Paragraph("This is chapter " + i, chapterFont);
Chapter chapter = new Chapter(cTitle, i);
// in chapter 4 we change the alignment to ALIGN_JUSTIFIED
if (i == 4) {
blahblahblah.setAlignment(Element.ALIGN_JUSTIFIED);
blahblah.setAlignment(Element.ALIGN_JUSTIFIED);
chapter.add(blahblah);
}
// in chapter 5, the alignment is changed again
if (i == 5) {
blahblahblah.setAlignment(Element.ALIGN_CENTER);
blahblah.setAlignment(Element.ALIGN_RIGHT);
chapter.add(blahblah);
}
// the alignment is changed to ALIGN_JUSTIFIED again
if (i == 6) {
blahblahblah.setAlignment(Element.ALIGN_JUSTIFIED);
blahblah.setAlignment(Element.ALIGN_JUSTIFIED);
}
// in every chapter 3 sections will be added
for (int j = 1; j < 4; j++) {
Paragraph sTitle = new Paragraph("This is section " + j + " in chapter " + i, sectionFont);
Section section = chapter.addSection(sTitle, 1);
// for chapters > 2, the outine isn't open by default
if (i > 2)
section.setBookmarkOpen(false);
// in all chapters except the 1st one, some extra text is added
// to section 3
if (j == 3 && i > 1) {
section.setIndentationLeft(72);
section.add(blahblah);
section.add(new Paragraph("test"));
}
// in every section 3 subsections are added
for (int k = 1; k < 4; k++) {
Paragraph subTitle = new Paragraph("This is subsection " + k + " of section " + j, subsectionFont);
Section subsection = section.addSection(subTitle, 3);
// in the first subsection of section 3, extra text is added
if (k == 1 && j == 3) {
subsection.add(blahblahblah);
}
subsection.add(blahblah);
}
// in the section section of every chapter > 2 extra text is
// added
if (j == 2 && i > 2) {
section.add(blahblahblah);
}
// a new page is added after the second section in Chapter 1
if (j == 2 && i == 1) {
section.add(Chunk.NEXTPAGE);
}
}
document.add(chapter);
}
// step 5: we close the document
document.close();
}
示例4
/**
* Creates an RTF document with a TOC and Table with special Cellborders.
*
*
*/
@Test
public void main() throws Exception {
Document document = new Document();
RtfWriter2 writer2 = RtfWriter2.getInstance(document, PdfTestBase.getOutputStream("toc.rtf"));
writer2.setAutogenerateTOCEntries(true);
document.open();
Paragraph para = new Paragraph();
para.add(new RtfTableOfContents("RIGHT CLICK AND HERE AND SELECT \"UPDATE FIELD\" TO UPDATE."));
document.add(para);
Paragraph par = new Paragraph("This is some sample content.");
Chapter chap1 = new Chapter("Chapter 1", 1);
chap1.add(par);
Chapter chap2 = new Chapter("Chapter 2", 2);
chap2.add(par);
document.add(chap1);
document.add(chap2);
for (int i = 0; i < 300; i++) {
if (i == 158) {
document.add(new RtfTOCEntry("This is line 158."));
}
document.add(new Paragraph("Line " + i));
}
document.add(new RtfTOCEntry("Cell border demonstration"));
Table table = new Table(3);
RtfCell cellDotted = new RtfCell("Dotted border");
cellDotted.setBorders(new RtfBorderGroup(Rectangle.BOX, RtfBorder.BORDER_DOTTED, 1, new Color(0, 0, 0)));
RtfCell cellEmbossed = new RtfCell("Embossed border");
cellEmbossed.setBorders(new RtfBorderGroup(Rectangle.BOX, RtfBorder.BORDER_EMBOSS, 1, new Color(0, 0, 0)));
RtfCell cellNoBorder = new RtfCell("No border");
cellNoBorder.setBorders(new RtfBorderGroup());
table.addCell(cellDotted);
table.addCell(cellEmbossed);
table.addCell(cellNoBorder);
document.add(table);
document.close();
}
示例5
public RtfBasicElement[] mapElement( Element element ) throws DocumentException {
ArrayList<RtfBasicElement> rtfElements = new ArrayList<RtfBasicElement>();
if ( element instanceof RtfBasicElement ) {
RtfBasicElement rtfElement = (RtfBasicElement) element;
rtfElement.setRtfDocument( rtfDoc );
return new RtfBasicElement[] { rtfElement };
}
switch ( element.type() ) {
case Element.CHUNK:
Chunk chunk = (Chunk) element;
if ( chunk.hasAttributes() ) {
if ( chunk.getAttributes().containsKey( Chunk.IMAGE ) ) {
rtfElements.add( new RtfImage( rtfDoc, chunk.getImage() ) );
} else if ( chunk.getAttributes().containsKey( Chunk.NEWPAGE ) ) {
rtfElements.add( new RtfNewPage( rtfDoc ) );
} else if ( chunk.getAttributes().containsKey( Chunk.TAB ) ) {
Float tabPos = (Float) ( (Object[]) chunk.getAttributes().get( Chunk.TAB ) )[1];
RtfTab tab = new RtfTab( tabPos.floatValue(), RtfTab.TAB_LEFT_ALIGN );
tab.setRtfDocument( rtfDoc );
rtfElements.add( tab );
rtfElements.add( new RtfChunk( rtfDoc, new Chunk( "\t" ) ) );
} else {
rtfElements.add( new RtfChunk( rtfDoc, (Chunk) element ) );
}
} else {
rtfElements.add( new RtfChunk( rtfDoc, (Chunk) element ) );
}
break;
case Element.PHRASE:
rtfElements.add( new RtfPhrase( rtfDoc, (Phrase) element ) );
break;
case Element.PARAGRAPH:
rtfElements.add( new RtfParagraph( rtfDoc, (Paragraph) element ) );
break;
case Element.ANCHOR:
rtfElements.add( new RtfAnchor( rtfDoc, (Anchor) element ) );
break;
case Element.ANNOTATION:
rtfElements.add( new RtfAnnotation( rtfDoc, (Annotation) element ) );
break;
case Element.IMGRAW:
case Element.IMGTEMPLATE:
case Element.JPEG:
rtfElements.add( new RtfImage( rtfDoc, (Image) element ) );
break;
case Element.AUTHOR:
case Element.SUBJECT:
case Element.KEYWORDS:
case Element.TITLE:
case Element.PRODUCER:
case Element.CREATIONDATE:
rtfElements.add( new RtfInfoElement( rtfDoc, (Meta) element ) );
break;
case Element.LIST:
rtfElements.add( new RtfList( rtfDoc, (List) element ) ); // TODO: Testing
break;
case Element.LISTITEM:
rtfElements.add( new RtfListItem( rtfDoc, (ListItem) element ) ); // TODO: Testing
break;
case Element.SECTION:
rtfElements.add( new RtfSection( rtfDoc, (Section) element ) );
break;
case Element.CHAPTER:
rtfElements.add( new RtfChapter( rtfDoc, (Chapter) element ) );
break;
case Element.TABLE:
if ( element instanceof Table ) {
rtfElements.add( new PatchRtfTable( rtfDoc, (Table) element ) );
} else {
rtfElements.add( new PatchRtfTable( rtfDoc, ( (SimpleTable) element ).createTable() ) );
}
break;
case Element.PTABLE:
if ( element instanceof PdfPTable ) {
rtfElements.add( new PatchRtfTable( rtfDoc, (PdfPTable) element ) );
} else {
rtfElements.add( new PatchRtfTable( rtfDoc, ( (SimpleTable) element ).createTable() ) );
}
break;
}
return rtfElements.toArray( new RtfBasicElement[rtfElements.size()] );
}
示例6
/**
* Constructs a RtfChapter for a given Chapter
*
* @param doc The RtfDocument this RtfChapter belongs to
* @param chapter The Chapter this RtfChapter is based on
*/
public RtfChapter(RtfDocument doc, Chapter chapter) {
super(doc, chapter);
}