add layout engine

This commit is contained in:
Jörg Prante 2021-12-03 16:15:43 +01:00
parent 854235cba9
commit 813cba2acb
36 changed files with 408 additions and 339 deletions

2
.gitignore vendored
View file

@ -1,6 +1,6 @@
/.idea /.idea
.DS_Store .DS_Store
/.settings /.parameters
/.classpath /.classpath
/.project /.project
/.gradle /.gradle

View file

@ -15,3 +15,4 @@ junit4.version = 4.13.2
cglib.version = 3.3.0 cglib.version = 3.3.0
objenesis.version = 2.6 objenesis.version = 2.6
log4j.version = 2.14.0 log4j.version = 2.14.0
xbib-content.version = 4.0.0

View file

@ -1,4 +1,7 @@
dependencies { dependencies {
api project(':graphics-pdfbox') api project(':graphics-pdfbox')
api project(':graphics-barcode') api project(':graphics-barcode')
api "org.xbib:settings-datastructures:${project.property('xbib-content.version')}"
runtimeOnly "org.xbib:settings-datastructures-json:${project.property('xbib-content.version')}"
runtimeOnly "org.xbib:settings-datastructures-yaml:${project.property('xbib-content.version')}"
} }

View file

@ -11,6 +11,7 @@ module org.xbib.graphics.layout.pdfbox {
exports org.xbib.graphics.pdfbox.layout.util; exports org.xbib.graphics.pdfbox.layout.util;
requires transitive org.xbib.graphics.barcode; requires transitive org.xbib.graphics.barcode;
requires transitive org.xbib.graphics.pdfbox; requires transitive org.xbib.graphics.pdfbox;
requires org.xbib.settings.datastructures;
requires transitive java.desktop; requires transitive java.desktop;
requires java.logging; requires java.logging;
} }

View file

@ -34,10 +34,10 @@ public class Document implements Closeable, RenderListener {
private final List<RenderListener> renderListener = new ArrayList<>(); private final List<RenderListener> renderListener = new ArrayList<>();
private PDDocument pdDocument;
private final PageFormat pageFormat; private final PageFormat pageFormat;
private final PDDocument pdDocument;
/** /**
* Creates a Document using the {@link #DEFAULT_PAGE_FORMAT}. * Creates a Document using the {@link #DEFAULT_PAGE_FORMAT}.
*/ */
@ -65,7 +65,7 @@ public class Document implements Closeable, RenderListener {
float marginRight, float marginRight,
float marginTop, float marginTop,
float marginBottom, boolean memory) { float marginBottom, boolean memory) {
this(PageFormat.with().margins(marginLeft, marginRight, marginTop, marginBottom).build(), memory); this(PageFormat.builder().margins(marginLeft, marginRight, marginTop, marginBottom).build(), memory);
} }
/** /**
@ -201,7 +201,6 @@ public class Document implements Closeable, RenderListener {
public synchronized void save(OutputStream outputStream) throws IOException { public synchronized void save(OutputStream outputStream) throws IOException {
if (pdDocument != null) { if (pdDocument != null) {
pdDocument.save(outputStream); pdDocument.save(outputStream);
pdDocument = null;
} }
} }

View file

@ -3,16 +3,16 @@ package org.xbib.graphics.pdfbox.layout.elements;
import org.apache.pdfbox.pdmodel.common.PDRectangle; import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.xbib.graphics.pdfbox.layout.elements.render.VerticalLayout; import org.xbib.graphics.pdfbox.layout.elements.render.VerticalLayout;
import java.util.Locale;
/** /**
* Defines the size and orientation of a page. The default is A4 portrait * Defines the size and orientation of a page. The default is A4 portrait without margins.
* without margins.
*/ */
public class PageFormat implements Element { public class PageFormat implements Element {
private static final int DEFAULT_USER_SPACE_UNIT_DPI = 72; public static final int DEFAULT_USER_SPACE_UNIT_DPI = 72;
private static final float MM_TO_UNITS = 1 / (10 * 2.54f) public static final float MM_TO_UNITS = 1 / (10 * 2.54f) * DEFAULT_USER_SPACE_UNIT_DPI;
* DEFAULT_USER_SPACE_UNIT_DPI;
public static final PDRectangle A0 = new PDRectangle(841 * MM_TO_UNITS, public static final PDRectangle A0 = new PDRectangle(841 * MM_TO_UNITS,
1189 * MM_TO_UNITS); 1189 * MM_TO_UNITS);
@ -113,6 +113,8 @@ public class PageFormat implements Element {
this.marginBottom = marginBottom; this.marginBottom = marginBottom;
} }
/** /**
* @return the orientation to use. * @return the orientation to use.
*/ */
@ -172,7 +174,7 @@ public class PageFormat implements Element {
* @return a page format builder. The default of the builder is A4 portrait * @return a page format builder. The default of the builder is A4 portrait
* without margins. * without margins.
*/ */
public static PageFormatBuilder with() { public static PageFormatBuilder builder() {
return new PageFormatBuilder(); return new PageFormatBuilder();
} }
@ -188,16 +190,6 @@ public class PageFormat implements Element {
protected PageFormatBuilder() { protected PageFormatBuilder() {
} }
/**
* Actually builds the PageFormat.
*
* @return the resulting PageFormat.
*/
public PageFormat build() {
return new PageFormat(mediaBox, orientation, rotation, marginLeft,
marginRight, marginTop, marginBottom);
}
/** /**
* Sets the left margin. * Sets the left margin.
* *
@ -362,6 +354,11 @@ public class PageFormat implements Element {
return this; return this;
} }
public PageFormatBuilder orientation(String orientation) {
this.orientation = Orientation.valueOf(orientation);
return this;
}
/** /**
* Sets the orientation to {@link Orientation#PORTRAIT}. * Sets the orientation to {@link Orientation#PORTRAIT}.
* *
@ -392,6 +389,45 @@ public class PageFormat implements Element {
this.rotation = angle; this.rotation = angle;
return this; return this;
} }
}
public PageFormatBuilder pageFormat(String format) {
switch (format.toLowerCase(Locale.ROOT)) {
case "A0" :
A0();
break;
case "A1" :
A1();
break;
case "A2" :
A2();
break;
case "A3" :
A3();
break;
case "A4" :
A4();
break;
case "A5" :
A5();
break;
case "A6" :
A6();
break;
case "LETTER" :
letter();
break;
}
return this;
}
/**
* Actually builds the PageFormat.
*
* @return the resulting PageFormat.
*/
public PageFormat build() {
return new PageFormat(mediaBox, orientation, rotation, marginLeft,
marginRight, marginTop, marginBottom);
}
}
} }

View file

@ -1,21 +0,0 @@
package org.xbib.graphics.pdfbox.layout.script;
public abstract class Command<T> {
private final T value;
public Command(T value) {
this.value = value;
}
public abstract String getKey();
public T getValue() {
return value;
}
@Override
public String toString() {
return String.format("%s[value=%s]", getKey(), getValue());
}
}

View file

@ -1,18 +0,0 @@
package org.xbib.graphics.pdfbox.layout.script;
import org.xbib.graphics.pdfbox.layout.elements.Document;
import org.xbib.graphics.pdfbox.layout.elements.PageFormat;
import java.io.IOException;
public class DocumentProcessor implements Processor {
@Override
public ProcessorResult process(Iterable<Command<?>> commands, PageFormat pageFormat) throws IOException {
ProcessorResult processorResult = new DocumentProcessorResult(new Document(pageFormat));
for (Command<?> command : commands) {
processorResult.handle(command);
}
processorResult.close();
return processorResult;
}
}

View file

@ -1,33 +0,0 @@
package org.xbib.graphics.pdfbox.layout.script;
import org.xbib.graphics.pdfbox.layout.elements.Document;
import org.xbib.graphics.pdfbox.layout.script.commands.ParagraphCommand;
import java.io.IOException;
import java.io.OutputStream;
public class DocumentProcessorResult implements ProcessorResult {
private final Document document;
public DocumentProcessorResult(Document document) {
this.document = document;
}
@Override
public void handle(Command<?> command) throws IOException {
if (command instanceof ParagraphCommand) {
ParagraphCommand paragraphCommand = (ParagraphCommand) command;
document.add(paragraphCommand.getValue());
}
}
@Override
public void write(OutputStream out) throws IOException {
document.render().save(out);
}
@Override
public void close() throws IOException {
document.close();
}
}

View file

@ -0,0 +1,36 @@
package org.xbib.graphics.pdfbox.layout.script;
import org.xbib.graphics.pdfbox.layout.script.command.Command;
import org.xbib.settings.Settings;
import java.io.IOException;
import java.util.Map;
public class Engine {
private final State state;
public Engine() {
this.state = new State();
}
public void execute(String key, Settings settings) throws IOException {
State state = new State();
String packageName = getClass().getPackageName();
ClassLoader classLoader = getClass().getClassLoader();
for (Map.Entry<String, Settings> entry : settings.getGroups(key).entrySet()) {
try {
String string = entry.getKey();
Class<?> cl = classLoader.loadClass(packageName + ".command." + string.substring(0, 1).toUpperCase() + string.substring(1) + "Command");
Command command = (Command) cl.getConstructor().newInstance();
command.execute(this, state, entry.getValue());
} catch (Exception e) {
throw new IOException(e);
}
}
}
public State getState() {
return state;
}
}

View file

@ -1,9 +0,0 @@
package org.xbib.graphics.pdfbox.layout.script;
import org.xbib.graphics.pdfbox.layout.elements.PageFormat;
import java.io.IOException;
public interface Processor {
ProcessorResult process(Iterable<Command<?>> commands, PageFormat pageFormat) throws IOException;
}

View file

@ -1,13 +0,0 @@
package org.xbib.graphics.pdfbox.layout.script;
import java.io.IOException;
import java.io.OutputStream;
public interface ProcessorResult {
void handle(Command<?> command) throws IOException;
void write(OutputStream out) throws IOException;
void close() throws IOException;
}

View file

@ -0,0 +1,8 @@
package org.xbib.graphics.pdfbox.layout.script;
import org.xbib.graphics.pdfbox.layout.elements.Document;
public class State {
public Document document;
}

View file

@ -0,0 +1,11 @@
package org.xbib.graphics.pdfbox.layout.script.command;
import org.xbib.graphics.pdfbox.layout.script.Engine;
import org.xbib.graphics.pdfbox.layout.script.State;
import org.xbib.settings.Settings;
import java.io.IOException;
public interface Command {
void execute(Engine engine, State state, Settings settings) throws IOException;
}

View file

@ -0,0 +1,22 @@
package org.xbib.graphics.pdfbox.layout.script.command;
import org.xbib.graphics.pdfbox.layout.elements.Document;
import org.xbib.graphics.pdfbox.layout.elements.PageFormat;
import org.xbib.graphics.pdfbox.layout.script.Engine;
import org.xbib.graphics.pdfbox.layout.script.State;
import org.xbib.settings.Settings;
import java.io.IOException;
public class DocumentCommand implements Command {
@Override
public void execute(Engine engine, State state, Settings settings) throws IOException {
PageFormat pageFormat = PageFormat.builder()
.pageFormat(settings.get("format", "A4"))
.orientation(settings.get("orientiation", "PORTRAIT"))
.build();
state.document = new Document(pageFormat);
engine.execute("paragraoh", settings);
}
}

View file

@ -0,0 +1,14 @@
package org.xbib.graphics.pdfbox.layout.script.command;
import org.xbib.graphics.pdfbox.layout.script.Engine;
import org.xbib.graphics.pdfbox.layout.script.State;
import org.xbib.settings.Settings;
import java.io.IOException;
public class ParagraphCommand implements Command {
@Override
public void execute(Engine engine, State state, Settings settings) throws IOException {
}
}

View file

@ -1,16 +0,0 @@
package org.xbib.graphics.pdfbox.layout.script.commands;
import org.xbib.graphics.pdfbox.layout.elements.Paragraph;
import org.xbib.graphics.pdfbox.layout.script.Command;
public class ParagraphCommand extends Command<Paragraph> {
public ParagraphCommand(Paragraph paragraph) {
super(paragraph);
}
@Override
public String getKey() {
return null;
}
}

View file

@ -0,0 +1,49 @@
package org.xbib.graphics.pdfbox.layout.shape;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.xbib.graphics.pdfbox.layout.text.DrawListener;
import org.xbib.graphics.pdfbox.layout.text.Position;
import java.awt.Color;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class Path implements Shape {
private final List<Position> list;
public Path() {
this.list = new ArrayList<>();
}
@Override
public void draw(PDDocument pdDocument, PDPageContentStream contentStream, Position upperLeft,
float width, float height, Color color, Stroke stroke, DrawListener drawListener) throws IOException {
contentStream.saveGraphicsState();
contentStream.moveTo(upperLeft.getX(), upperLeft.getY());
contentStream.setStrokingColor(color);
contentStream.setLineCapStyle(stroke.getCapStyle().value());
contentStream.setLineDashPattern(stroke.getDashPattern().getPattern(), stroke.getDashPattern().getPhase());
contentStream.setLineJoinStyle(stroke.getJoinStyle().value());
contentStream.setLineWidth(stroke.getLineWidth());
for (Position p : list) {
contentStream.lineTo(p.getX(), p.getY());
}
contentStream.restoreGraphicsState();
drawListener.drawn(this, upperLeft, width, height);
}
@Override
public void fill(PDDocument pdDocument, PDPageContentStream contentStream, Position upperLeft,
float width, float height, Color color, DrawListener drawListener) throws IOException {
// do not fill
}
@Override
public void add(PDDocument pdDocument, PDPageContentStream contentStream, Position upperLeft,
float width, float height) throws IOException {
list.add(new Position(width, height));
}
}

View file

@ -22,7 +22,7 @@ public abstract class AbstractCell {
private float minHeight = DEFAULT_MIN_HEIGHT; private float minHeight = DEFAULT_MIN_HEIGHT;
protected Settings settings; protected Parameters parameters;
public void setColSpan(int colSpan) { public void setColSpan(int colSpan) {
this.colSpan = colSpan; this.colSpan = colSpan;
@ -33,91 +33,91 @@ public abstract class AbstractCell {
} }
public float getPaddingBottom() { public float getPaddingBottom() {
return settings.getPaddingBottom(); return parameters.getPaddingBottom();
} }
public float getPaddingTop() { public float getPaddingTop() {
return settings.getPaddingTop(); return parameters.getPaddingTop();
} }
public float getPaddingLeft() { public float getPaddingLeft() {
return settings.getPaddingLeft(); return parameters.getPaddingLeft();
} }
public float getPaddingRight() { public float getPaddingRight() {
return settings.getPaddingRight(); return parameters.getPaddingRight();
} }
public float getHorizontalPadding() { public float getHorizontalPadding() {
return settings.getPaddingLeft() + settings.getPaddingRight(); return parameters.getPaddingLeft() + parameters.getPaddingRight();
} }
public float getVerticalPadding() { public float getVerticalPadding() {
return settings.getPaddingTop() + settings.getPaddingBottom(); return parameters.getPaddingTop() + parameters.getPaddingBottom();
} }
public float getBorderWidthTop() { public float getBorderWidthTop() {
return hasBorderTop() ? settings.getBorderWidthTop() : 0; return hasBorderTop() ? parameters.getBorderWidthTop() : 0;
} }
public boolean hasBorderTop() { public boolean hasBorderTop() {
return settings.getBorderWidthTop() != null && settings.getBorderWidthTop() > 0; return parameters.getBorderWidthTop() != null && parameters.getBorderWidthTop() > 0;
} }
public float getBorderWidthBottom() { public float getBorderWidthBottom() {
return hasBorderBottom() ? settings.getBorderWidthBottom() : 0; return hasBorderBottom() ? parameters.getBorderWidthBottom() : 0;
} }
public boolean hasBorderBottom() { public boolean hasBorderBottom() {
return settings.getBorderWidthBottom() != null && settings.getBorderWidthBottom() > 0; return parameters.getBorderWidthBottom() != null && parameters.getBorderWidthBottom() > 0;
} }
public float getBorderWidthLeft() { public float getBorderWidthLeft() {
return hasBorderLeft() ? settings.getBorderWidthLeft() : 0; return hasBorderLeft() ? parameters.getBorderWidthLeft() : 0;
} }
public boolean hasBorderLeft() { public boolean hasBorderLeft() {
return settings.getBorderWidthLeft() != null && settings.getBorderWidthLeft() > 0; return parameters.getBorderWidthLeft() != null && parameters.getBorderWidthLeft() > 0;
} }
public float getBorderWidthRight() { public float getBorderWidthRight() {
return hasBorderRight() ? settings.getBorderWidthRight() : 0; return hasBorderRight() ? parameters.getBorderWidthRight() : 0;
} }
public boolean hasBorderRight() { public boolean hasBorderRight() {
return settings.getBorderWidthRight() != null && settings.getBorderWidthRight() > 0; return parameters.getBorderWidthRight() != null && parameters.getBorderWidthRight() > 0;
} }
public BorderStyleInterface getBorderStyleTop() { public BorderStyleInterface getBorderStyleTop() {
return settings.getBorderStyleTop(); return parameters.getBorderStyleTop();
} }
public BorderStyleInterface getBorderStyleBottom() { public BorderStyleInterface getBorderStyleBottom() {
return settings.getBorderStyleBottom(); return parameters.getBorderStyleBottom();
} }
public BorderStyleInterface getBorderStyleLeft() { public BorderStyleInterface getBorderStyleLeft() {
return settings.getBorderStyleLeft(); return parameters.getBorderStyleLeft();
} }
public BorderStyleInterface getBorderStyleRight() { public BorderStyleInterface getBorderStyleRight() {
return settings.getBorderStyleRight(); return parameters.getBorderStyleRight();
} }
public boolean hasBackgroundColor() { public boolean hasBackgroundColor() {
return settings.getBackgroundColor() != null; return parameters.getBackgroundColor() != null;
} }
public Color getBackgroundColor() { public Color getBackgroundColor() {
return settings.getBackgroundColor(); return parameters.getBackgroundColor();
} }
public Color getBorderColor() { public Color getBorderColor() {
return settings.getBorderColor(); return parameters.getBorderColor();
} }
public boolean isWordBreak() { public boolean isWordBreak() {
return settings.isWordBreak(); return parameters.isWordBreak();
} }
public Column getColumn() { public Column getColumn() {
@ -148,8 +148,8 @@ public abstract class AbstractCell {
return row; return row;
} }
public Settings getSettings() { public Parameters getParameters() {
return settings; return parameters;
} }
public void setColumn(Column column) { public void setColumn(Column column) {
@ -168,8 +168,8 @@ public abstract class AbstractCell {
this.row = row; this.row = row;
} }
public void setSettings(Settings settings) { public void setParameters(Parameters parameters) {
this.settings = settings; this.parameters = parameters;
} }
public void setWidth(float width) { public void setWidth(float width) {
@ -194,7 +194,6 @@ public abstract class AbstractCell {
result += currentRow.getNext().getHeight(); result += currentRow.getNext().getHeight();
currentRow = currentRow.getNext(); currentRow = currentRow.getNext();
} }
return result; return result;
} }
@ -205,10 +204,10 @@ public abstract class AbstractCell {
} }
public boolean isHorizontallyAligned(HorizontalAlignment alignment) { public boolean isHorizontallyAligned(HorizontalAlignment alignment) {
return getSettings().getHorizontalAlignment() == alignment; return getParameters().getHorizontalAlignment() == alignment;
} }
public boolean isVerticallyAligned(VerticalAlignment alignment) { public boolean isVerticallyAligned(VerticalAlignment alignment) {
return getSettings().getVerticalAlignment() == alignment; return getParameters().getVerticalAlignment() == alignment;
} }
} }

View file

@ -11,15 +11,15 @@ public abstract class AbstractTextCell extends AbstractCell {
protected float lineSpacing = 1f; protected float lineSpacing = 1f;
public Font getFont() { public Font getFont() {
return settings.getFont(); return parameters.getFont();
} }
public Integer getFontSize() { public Integer getFontSize() {
return settings.getFontSize(); return parameters.getFontSize();
} }
public Color getTextColor() { public Color getTextColor() {
return settings.getTextColor(); return parameters.getTextColor();
} }
private Float textHeight; private Float textHeight;
@ -40,7 +40,7 @@ public abstract class AbstractTextCell extends AbstractCell {
return this.textHeight; return this.textHeight;
} }
this.textHeight = PdfUtil.getFontHeight(getFont(), getFontSize()); this.textHeight = PdfUtil.getFontHeight(getFont(), getFontSize());
if (settings.isWordBreak()) { if (parameters.isWordBreak()) {
final int size = PdfUtil.getOptimalTextBreakLines(getText(), getFont(), getFontSize(), getMaxWidth()).size(); final int size = PdfUtil.getOptimalTextBreakLines(getText(), getFont(), getFontSize(), getMaxWidth()).size();
final float heightOfTextLines = size * this.textHeight; final float heightOfTextLines = size * this.textHeight;
final float heightOfLineSpacing = (size - 1) * this.textHeight * getLineSpacing(); final float heightOfLineSpacing = (size - 1) * this.textHeight * getLineSpacing();
@ -52,7 +52,7 @@ public abstract class AbstractTextCell extends AbstractCell {
public float getWidthOfText() { public float getWidthOfText() {
assertIsRendered(); assertIsRendered();
final float notBrokenTextWidth = PdfUtil.getStringWidth(getText(), getFont(), getFontSize()); final float notBrokenTextWidth = PdfUtil.getStringWidth(getText(), getFont(), getFontSize());
if (settings.isWordBreak()) { if (parameters.isWordBreak()) {
final float maxWidth = getMaxWidthOfText() - getHorizontalPadding(); final float maxWidth = getMaxWidthOfText() - getHorizontalPadding();
List<String> textLines = PdfUtil.getOptimalTextBreakLines(getText(), getFont(), getFontSize(), maxWidth); List<String> textLines = PdfUtil.getOptimalTextBreakLines(getText(), getFont(), getFontSize(), maxWidth);
return textLines.stream() return textLines.stream()

View file

@ -72,11 +72,11 @@ public class Hyperlink implements ParagraphProcessor {
} }
@Override @Override
public void process(Paragraph paragraph, Settings settings) { public void process(Paragraph paragraph, Parameters parameters) {
Annotations.HyperlinkAnnotation hyperlink = Annotations.HyperlinkAnnotation hyperlink =
new Annotations.HyperlinkAnnotation(getUrl(), Annotations.HyperlinkAnnotation.LinkStyle.ul); new Annotations.HyperlinkAnnotation(getUrl(), Annotations.HyperlinkAnnotation.LinkStyle.ul);
FontDescriptor fontDescriptor = new FontDescriptor(getFont() != null ? getFont() : settings.getFont(), FontDescriptor fontDescriptor = new FontDescriptor(getFont() != null ? getFont() : parameters.getFont(),
getFontSize() != null ? getFontSize() : settings.getFontSize()); getFontSize() != null ? getFontSize() : parameters.getFontSize());
paragraph.add(new AnnotatedStyledText(getText(), fontDescriptor, paragraph.add(new AnnotatedStyledText(getText(), fontDescriptor,
getColor(), getBaselineOffset(), 0, 0, Collections.singleton(hyperlink))); getColor(), getBaselineOffset(), 0, 0, Collections.singleton(hyperlink)));
} }

View file

@ -50,8 +50,8 @@ public class Markup implements ParagraphProcessor {
} }
@Override @Override
public void process(Paragraph paragraph, Settings settings) throws IOException { public void process(Paragraph paragraph, Parameters parameters) throws IOException {
float fontSize = getFontSize() != null ? getFontSize() : settings.getFontSize(); float fontSize = getFontSize() != null ? getFontSize() : parameters.getFontSize();
paragraph.addMarkup(getMarkup(), fontSize, FONT_MAP.get(getFont())); paragraph.addMarkup(getMarkup(), fontSize, FONT_MAP.get(getFont()));
} }

View file

@ -16,7 +16,7 @@ public class NewLine implements ParagraphProcessor {
} }
@Override @Override
public void process(Paragraph paragraph, Settings settings) { public void process(Paragraph paragraph, Parameters parameters) {
paragraph.add(new org.xbib.graphics.pdfbox.layout.text.NewLine(new FontDescriptor(font, fontSize))); paragraph.add(new org.xbib.graphics.pdfbox.layout.text.NewLine(new FontDescriptor(font, fontSize)));
} }

View file

@ -36,7 +36,7 @@ public class ParagraphCell extends AbstractCell {
} }
for (ParagraphProcessor p : getParagraph().getProcessables()) { for (ParagraphProcessor p : getParagraph().getProcessables()) {
try { try {
p.process(getParagraph().getWrappedParagraph(), getSettings()); p.process(getParagraph().getWrappedParagraph(), getParameters());
} catch (IOException exception) { } catch (IOException exception) {
throw new UncheckedIOException(exception); throw new UncheckedIOException(exception);
} }

View file

@ -5,6 +5,6 @@ import java.io.IOException;
public interface ParagraphProcessor { public interface ParagraphProcessor {
void process(Paragraph paragraph, Settings settings) throws IOException; void process(Paragraph paragraph, Parameters parameters) throws IOException;
} }

View file

@ -3,7 +3,7 @@ package org.xbib.graphics.pdfbox.layout.table;
import org.xbib.graphics.pdfbox.layout.font.Font; import org.xbib.graphics.pdfbox.layout.font.Font;
import java.awt.Color; import java.awt.Color;
public class Settings { public class Parameters {
private Font font; private Font font;
@ -55,14 +55,14 @@ public class Settings {
this.wordBreak = wordBreak; this.wordBreak = wordBreak;
} }
public void fillingMergeBy(Settings settings) { public void fillingMergeBy(Parameters parameters) {
fillingMergeFontSettings(settings); fillingMergeFontSettings(parameters);
fillingMergePaddingSettings(settings); fillingMergePaddingSettings(parameters);
fillingMergeBorderWidthSettings(settings); fillingMergeBorderWidthSettings(parameters);
fillingMergeBorderStyleSettings(settings); fillingMergeBorderStyleSettings(parameters);
fillingMergeColorSettings(settings); fillingMergeColorSettings(parameters);
fillingMergeAlignmentSettings(settings); fillingMergeAlignmentSettings(parameters);
fillingMergeWordBreakSetting(settings); fillingMergeWordBreakSetting(parameters);
} }
public Boolean getWordBreak() { public Boolean getWordBreak() {
@ -225,97 +225,97 @@ public class Settings {
this.wordBreak = wordBreak; this.wordBreak = wordBreak;
} }
private void fillingMergeWordBreakSetting(Settings settings) { private void fillingMergeWordBreakSetting(Parameters parameters) {
// Note that we use the boxed Boolean only here internally! // Note that we use the boxed Boolean only here internally!
if (wordBreak == null && settings.wordBreak != null) { if (wordBreak == null && parameters.wordBreak != null) {
wordBreak = settings.getWordBreak(); wordBreak = parameters.getWordBreak();
} }
} }
private void fillingMergePaddingSettings(Settings settings) { private void fillingMergePaddingSettings(Parameters parameters) {
if (getPaddingBottom() == null && settings.getPaddingBottom() != null) { if (getPaddingBottom() == null && parameters.getPaddingBottom() != null) {
paddingBottom = settings.getPaddingBottom(); paddingBottom = parameters.getPaddingBottom();
} }
if (getPaddingTop() == null && settings.getPaddingTop() != null) { if (getPaddingTop() == null && parameters.getPaddingTop() != null) {
paddingTop = settings.getPaddingTop(); paddingTop = parameters.getPaddingTop();
} }
if (getPaddingLeft() == null && settings.getPaddingLeft() != null) { if (getPaddingLeft() == null && parameters.getPaddingLeft() != null) {
paddingLeft = settings.getPaddingLeft(); paddingLeft = parameters.getPaddingLeft();
} }
if (getPaddingRight() == null && settings.getPaddingRight() != null) { if (getPaddingRight() == null && parameters.getPaddingRight() != null) {
paddingRight = settings.getPaddingRight(); paddingRight = parameters.getPaddingRight();
} }
} }
private void fillingMergeBorderWidthSettings(Settings settings) { private void fillingMergeBorderWidthSettings(Parameters parameters) {
if (getBorderWidthBottom() == null && settings.getBorderWidthBottom() != null) { if (getBorderWidthBottom() == null && parameters.getBorderWidthBottom() != null) {
borderWidthBottom = settings.getBorderWidthBottom(); borderWidthBottom = parameters.getBorderWidthBottom();
} }
if (getBorderWidthTop() == null && settings.getBorderWidthTop() != null) { if (getBorderWidthTop() == null && parameters.getBorderWidthTop() != null) {
borderWidthTop = settings.getBorderWidthTop(); borderWidthTop = parameters.getBorderWidthTop();
} }
if (getBorderWidthLeft() == null && settings.getBorderWidthLeft() != null) { if (getBorderWidthLeft() == null && parameters.getBorderWidthLeft() != null) {
borderWidthLeft = settings.getBorderWidthLeft(); borderWidthLeft = parameters.getBorderWidthLeft();
} }
if (getBorderWidthRight() == null && settings.getBorderWidthRight() != null) { if (getBorderWidthRight() == null && parameters.getBorderWidthRight() != null) {
borderWidthRight = settings.getBorderWidthRight(); borderWidthRight = parameters.getBorderWidthRight();
} }
} }
private void fillingMergeBorderStyleSettings(Settings settings) { private void fillingMergeBorderStyleSettings(Parameters parameters) {
if (getBorderStyleBottom() == null && settings.getBorderStyleBottom() != null) { if (getBorderStyleBottom() == null && parameters.getBorderStyleBottom() != null) {
borderStyleBottom = settings.getBorderStyleBottom(); borderStyleBottom = parameters.getBorderStyleBottom();
} }
if (getBorderStyleTop() == null && settings.getBorderStyleTop() != null) { if (getBorderStyleTop() == null && parameters.getBorderStyleTop() != null) {
borderStyleTop = settings.getBorderStyleTop(); borderStyleTop = parameters.getBorderStyleTop();
} }
if (getBorderStyleLeft() == null && settings.getBorderStyleLeft() != null) { if (getBorderStyleLeft() == null && parameters.getBorderStyleLeft() != null) {
borderStyleLeft = settings.getBorderStyleLeft(); borderStyleLeft = parameters.getBorderStyleLeft();
} }
if (getBorderStyleRight() == null && settings.getBorderStyleRight() != null) { if (getBorderStyleRight() == null && parameters.getBorderStyleRight() != null) {
borderStyleRight = settings.getBorderStyleRight(); borderStyleRight = parameters.getBorderStyleRight();
} }
} }
private void fillingMergeColorSettings(Settings settings) { private void fillingMergeColorSettings(Parameters parameters) {
if (getTextColor() == null && settings.getTextColor() != null) { if (getTextColor() == null && parameters.getTextColor() != null) {
textColor = settings.getTextColor(); textColor = parameters.getTextColor();
} }
if (getBackgroundColor() == null && settings.getBackgroundColor() != null) { if (getBackgroundColor() == null && parameters.getBackgroundColor() != null) {
backgroundColor = settings.getBackgroundColor(); backgroundColor = parameters.getBackgroundColor();
} }
if (getBorderColor() == null && settings.getBorderColor() != null) { if (getBorderColor() == null && parameters.getBorderColor() != null) {
borderColor = settings.getBorderColor(); borderColor = parameters.getBorderColor();
} }
} }
private void fillingMergeAlignmentSettings(Settings settings) { private void fillingMergeAlignmentSettings(Parameters parameters) {
if (getHorizontalAlignment() == null && settings.getHorizontalAlignment() != null) { if (getHorizontalAlignment() == null && parameters.getHorizontalAlignment() != null) {
horizontalAlignment = settings.getHorizontalAlignment(); horizontalAlignment = parameters.getHorizontalAlignment();
} }
if (getVerticalAlignment() == null && settings.getVerticalAlignment() != null) { if (getVerticalAlignment() == null && parameters.getVerticalAlignment() != null) {
verticalAlignment = settings.getVerticalAlignment(); verticalAlignment = parameters.getVerticalAlignment();
} }
} }
private void fillingMergeFontSettings(Settings settings) { private void fillingMergeFontSettings(Parameters parameters) {
if (getFont() == null && settings.getFont() != null) { if (getFont() == null && parameters.getFont() != null) {
font = settings.getFont(); font = parameters.getFont();
} }
if (getFontSize() == null && settings.getFontSize() != null) { if (getFontSize() == null && parameters.getFontSize() != null) {
fontSize = settings.getFontSize(); fontSize = parameters.getFontSize();
} }
} }
} }

View file

@ -16,7 +16,7 @@ public class Row {
private List<AbstractCell> cells; private List<AbstractCell> cells;
private Settings settings; private Parameters parameters;
private Float height; private Float height;
@ -27,12 +27,12 @@ public class Row {
this.cells = cells; this.cells = cells;
} }
public void setSettings(Settings settings) { public void setSettings(Parameters parameters) {
this.settings = settings; this.parameters = parameters;
} }
public Settings getSettings() { public Parameters getSettings() {
return settings; return parameters;
} }
public Row getNext() { public Row getNext() {
@ -96,7 +96,7 @@ public class Row {
private final List<AbstractCell> cells = new ArrayList<>(); private final List<AbstractCell> cells = new ArrayList<>();
private final Settings settings = new Settings(); private final Parameters parameters = new Parameters();
private Builder() { private Builder() {
} }
@ -107,72 +107,72 @@ public class Row {
} }
public Builder font(Font font) { public Builder font(Font font) {
settings.setFont(font); parameters.setFont(font);
return this; return this;
} }
public Builder fontSize(final Integer fontSize) { public Builder fontSize(final Integer fontSize) {
settings.setFontSize(fontSize); parameters.setFontSize(fontSize);
return this; return this;
} }
public Builder textColor(final Color textColor) { public Builder textColor(final Color textColor) {
settings.setTextColor(textColor); parameters.setTextColor(textColor);
return this; return this;
} }
public Builder backgroundColor(final Color backgroundColor) { public Builder backgroundColor(final Color backgroundColor) {
settings.setBackgroundColor(backgroundColor); parameters.setBackgroundColor(backgroundColor);
return this; return this;
} }
public Builder padding(final float padding) { public Builder padding(final float padding) {
settings.setPaddingTop(padding); parameters.setPaddingTop(padding);
settings.setPaddingBottom(padding); parameters.setPaddingBottom(padding);
settings.setPaddingLeft(padding); parameters.setPaddingLeft(padding);
settings.setPaddingRight(padding); parameters.setPaddingRight(padding);
return this; return this;
} }
public Builder borderWidth(final float borderWidth) { public Builder borderWidth(final float borderWidth) {
settings.setBorderWidthTop(borderWidth); parameters.setBorderWidthTop(borderWidth);
settings.setBorderWidthBottom(borderWidth); parameters.setBorderWidthBottom(borderWidth);
settings.setBorderWidthLeft(borderWidth); parameters.setBorderWidthLeft(borderWidth);
settings.setBorderWidthRight(borderWidth); parameters.setBorderWidthRight(borderWidth);
return this; return this;
} }
public Builder borderStyle(final BorderStyleInterface borderStyle) { public Builder borderStyle(final BorderStyleInterface borderStyle) {
settings.setBorderStyleTop(borderStyle); parameters.setBorderStyleTop(borderStyle);
settings.setBorderStyleBottom(borderStyle); parameters.setBorderStyleBottom(borderStyle);
settings.setBorderStyleLeft(borderStyle); parameters.setBorderStyleLeft(borderStyle);
settings.setBorderStyleRight(borderStyle); parameters.setBorderStyleRight(borderStyle);
return this; return this;
} }
public Builder borderColor(final Color borderColor) { public Builder borderColor(final Color borderColor) {
settings.setBorderColor(borderColor); parameters.setBorderColor(borderColor);
return this; return this;
} }
public Builder horizontalAlignment(HorizontalAlignment alignment) { public Builder horizontalAlignment(HorizontalAlignment alignment) {
settings.setHorizontalAlignment(alignment); parameters.setHorizontalAlignment(alignment);
return this; return this;
} }
public Builder verticalAlignment(VerticalAlignment alignment) { public Builder verticalAlignment(VerticalAlignment alignment) {
settings.setVerticalAlignment(alignment); parameters.setVerticalAlignment(alignment);
return this; return this;
} }
public Builder wordBreak(Boolean wordBreak) { public Builder wordBreak(Boolean wordBreak) {
settings.setWordBreak(wordBreak); parameters.setWordBreak(wordBreak);
return this; return this;
} }
public Row build() { public Row build() {
final Row row = new Row(cells); final Row row = new Row(cells);
row.setSettings(settings); row.setSettings(parameters);
//row.setHeight(height); //row.setHeight(height);
return row; return row;
} }

View file

@ -49,10 +49,10 @@ public class StyledText implements ParagraphProcessor {
} }
@Override @Override
public void process(Paragraph paragraph, Settings settings) { public void process(Paragraph paragraph, Parameters parameters) {
final float actualFontSize = getFontSize() != null ? getFontSize() : settings.getFontSize(); final float actualFontSize = getFontSize() != null ? getFontSize() : parameters.getFontSize();
final Font actualFont = getFont() != null ? getFont() : settings.getFont(); final Font actualFont = getFont() != null ? getFont() : parameters.getFont();
final Color actualColor = getColor() != null ? getColor() : settings.getTextColor(); final Color actualColor = getColor() != null ? getColor() : parameters.getTextColor();
// TODO this is a complete mess to handle new lines!!! // TODO this is a complete mess to handle new lines!!!
String[] lines = getText().split(PdfUtil.NEW_LINE_REGEX); String[] lines = getText().split(PdfUtil.NEW_LINE_REGEX);
for (int i = 0; i < lines.length; i++) { for (int i = 0; i < lines.length; i++) {

View file

@ -36,7 +36,7 @@ public class Table {
private final Set<Point> rowSpanCells; private final Set<Point> rowSpanCells;
private Settings settings; private Parameters parameters;
private int numberOfColumns; private int numberOfColumns;
@ -48,12 +48,12 @@ public class Table {
this.rowSpanCells = rowSpanCells; this.rowSpanCells = rowSpanCells;
} }
public void setSettings(Settings settings) { public void setSettings(Parameters parameters) {
this.settings = settings; this.parameters = parameters;
} }
public Settings getSettings() { public Parameters getSettings() {
return settings; return parameters;
} }
public void setWidth(float width) { public void setWidth(float width) {
@ -130,7 +130,7 @@ public class Table {
public static class Builder { public static class Builder {
private final Settings settings = new Settings(); private final Parameters parameters = new Parameters();
private final List<Row> rows = new ArrayList<>(); private final List<Row> rows = new ArrayList<>();
@ -143,19 +143,19 @@ public class Table {
private float width; private float width;
private Builder() { private Builder() {
settings.setFont(DEFAULT_FONT); parameters.setFont(DEFAULT_FONT);
settings.setFontSize(DEFAULT_FONT_SIZE); parameters.setFontSize(DEFAULT_FONT_SIZE);
settings.setTextColor(DEFAULT_TEXT_COLOR); parameters.setTextColor(DEFAULT_TEXT_COLOR);
settings.setBorderColor(DEFAULT_BORDER_COLOR); parameters.setBorderColor(DEFAULT_BORDER_COLOR);
settings.setBorderStyleTop(DEFAULT_BORDER_STYLE); parameters.setBorderStyleTop(DEFAULT_BORDER_STYLE);
settings.setBorderStyleBottom(DEFAULT_BORDER_STYLE); parameters.setBorderStyleBottom(DEFAULT_BORDER_STYLE);
settings.setBorderStyleLeft(DEFAULT_BORDER_STYLE); parameters.setBorderStyleLeft(DEFAULT_BORDER_STYLE);
settings.setBorderStyleRight(DEFAULT_BORDER_STYLE); parameters.setBorderStyleRight(DEFAULT_BORDER_STYLE);
settings.setPaddingTop(DEFAULT_PADDING); parameters.setPaddingTop(DEFAULT_PADDING);
settings.setPaddingBottom(DEFAULT_PADDING); parameters.setPaddingBottom(DEFAULT_PADDING);
settings.setPaddingLeft(DEFAULT_PADDING); parameters.setPaddingLeft(DEFAULT_PADDING);
settings.setPaddingRight(DEFAULT_PADDING); parameters.setPaddingRight(DEFAULT_PADDING);
settings.setWordBreak(true); parameters.setWordBreak(true);
} }
public Builder addRow(final Row row) { public Builder addRow(final Row row) {
@ -225,66 +225,66 @@ public class Table {
} }
public Builder font(Font font) { public Builder font(Font font) {
settings.setFont(font); parameters.setFont(font);
return this; return this;
} }
public Builder fontSize(final Integer fontSize) { public Builder fontSize(final Integer fontSize) {
settings.setFontSize(fontSize); parameters.setFontSize(fontSize);
return this; return this;
} }
public Builder textColor(final Color textColor) { public Builder textColor(final Color textColor) {
settings.setTextColor(textColor); parameters.setTextColor(textColor);
return this; return this;
} }
public Builder backgroundColor(final Color backgroundColor) { public Builder backgroundColor(final Color backgroundColor) {
settings.setBackgroundColor(backgroundColor); parameters.setBackgroundColor(backgroundColor);
return this; return this;
} }
public Builder borderWidth(final float borderWidth) { public Builder borderWidth(final float borderWidth) {
settings.setBorderWidthTop(borderWidth); parameters.setBorderWidthTop(borderWidth);
settings.setBorderWidthBottom(borderWidth); parameters.setBorderWidthBottom(borderWidth);
settings.setBorderWidthLeft(borderWidth); parameters.setBorderWidthLeft(borderWidth);
settings.setBorderWidthRight(borderWidth); parameters.setBorderWidthRight(borderWidth);
return this; return this;
} }
public Builder borderStyle(final BorderStyleInterface borderStyle) { public Builder borderStyle(final BorderStyleInterface borderStyle) {
settings.setBorderStyleTop(borderStyle); parameters.setBorderStyleTop(borderStyle);
settings.setBorderStyleBottom(borderStyle); parameters.setBorderStyleBottom(borderStyle);
settings.setBorderStyleLeft(borderStyle); parameters.setBorderStyleLeft(borderStyle);
settings.setBorderStyleRight(borderStyle); parameters.setBorderStyleRight(borderStyle);
return this; return this;
} }
public Builder padding(final float padding) { public Builder padding(final float padding) {
settings.setPaddingTop(padding); parameters.setPaddingTop(padding);
settings.setPaddingBottom(padding); parameters.setPaddingBottom(padding);
settings.setPaddingLeft(padding); parameters.setPaddingLeft(padding);
settings.setPaddingRight(padding); parameters.setPaddingRight(padding);
return this; return this;
} }
public Builder borderColor(final Color borderColor) { public Builder borderColor(final Color borderColor) {
settings.setBorderColor(borderColor); parameters.setBorderColor(borderColor);
return this; return this;
} }
public Builder horizontalAlignment(HorizontalAlignment alignment) { public Builder horizontalAlignment(HorizontalAlignment alignment) {
settings.setHorizontalAlignment(alignment); parameters.setHorizontalAlignment(alignment);
return this; return this;
} }
public Builder verticalAlignment(VerticalAlignment alignment) { public Builder verticalAlignment(VerticalAlignment alignment) {
settings.setVerticalAlignment(alignment); parameters.setVerticalAlignment(alignment);
return this; return this;
} }
public Builder wordBreak(Boolean wordBreak) { public Builder wordBreak(Boolean wordBreak) {
settings.setWordBreak(wordBreak); parameters.setWordBreak(wordBreak);
return this; return this;
} }
@ -294,7 +294,7 @@ public class Table {
"This could be due to row or col spanning not being correct"); "This could be due to row or col spanning not being correct");
} }
Table table = new Table(rows, columns, rowSpanCells); Table table = new Table(rows, columns, rowSpanCells);
table.setSettings(settings); table.setSettings(parameters);
table.setWidth(width); table.setWidth(width);
table.setNumberOfColumns(numberOfColumns); table.setNumberOfColumns(numberOfColumns);
setupConnectionsBetweenElementsFor(table); setupConnectionsBetweenElementsFor(table);
@ -311,7 +311,7 @@ public class Table {
} }
int columnIndex = 0; int columnIndex = 0;
for (AbstractCell cell : row.getCells()) { for (AbstractCell cell : row.getCells()) {
cell.getSettings().fillingMergeBy(row.getSettings()); cell.getParameters().fillingMergeBy(row.getSettings());
cell.setRow(row); cell.setRow(row);
while (table.isRowSpanAt(rowIndex, columnIndex)) { while (table.isRowSpanAt(rowIndex, columnIndex)) {
columnIndex++; columnIndex++;

View file

@ -28,7 +28,7 @@ public class TextCell extends AbstractTextCell {
public static class Builder { public static class Builder {
private final Settings settings; private final Parameters parameters;
private String text; private String text;
@ -37,7 +37,7 @@ public class TextCell extends AbstractTextCell {
private int rowSpan; private int rowSpan;
private Builder() { private Builder() {
settings = new Settings(); parameters = new Parameters();
} }
public Builder text(String text) { public Builder text(String text) {
@ -46,65 +46,65 @@ public class TextCell extends AbstractTextCell {
} }
public Builder font(Font font) { public Builder font(Font font) {
settings.setFont(font); parameters.setFont(font);
return this; return this;
} }
public Builder fontSize(Integer fontSize) { public Builder fontSize(Integer fontSize) {
settings.setFontSize(fontSize); parameters.setFontSize(fontSize);
return this; return this;
} }
public Builder textColor(Color textColor) { public Builder textColor(Color textColor) {
settings.setTextColor(textColor); parameters.setTextColor(textColor);
return this; return this;
} }
public Builder borderWidth(float borderWidth) { public Builder borderWidth(float borderWidth) {
settings.setBorderWidthTop(borderWidth); parameters.setBorderWidthTop(borderWidth);
settings.setBorderWidthBottom(borderWidth); parameters.setBorderWidthBottom(borderWidth);
settings.setBorderWidthLeft(borderWidth); parameters.setBorderWidthLeft(borderWidth);
settings.setBorderWidthRight(borderWidth); parameters.setBorderWidthRight(borderWidth);
return this; return this;
} }
public Builder borderWidthTop(final float borderWidth) { public Builder borderWidthTop(final float borderWidth) {
settings.setBorderWidthTop(borderWidth); parameters.setBorderWidthTop(borderWidth);
return this; return this;
} }
public Builder borderWidthBottom(final float borderWidth) { public Builder borderWidthBottom(final float borderWidth) {
settings.setBorderWidthBottom(borderWidth); parameters.setBorderWidthBottom(borderWidth);
return this; return this;
} }
public Builder borderWidthLeft(final float borderWidth) { public Builder borderWidthLeft(final float borderWidth) {
settings.setBorderWidthLeft(borderWidth); parameters.setBorderWidthLeft(borderWidth);
return this; return this;
} }
public Builder borderWidthRight(final float borderWidth) { public Builder borderWidthRight(final float borderWidth) {
settings.setBorderWidthRight(borderWidth); parameters.setBorderWidthRight(borderWidth);
return this; return this;
} }
public Builder borderStyleTop(final BorderStyleInterface style) { public Builder borderStyleTop(final BorderStyleInterface style) {
settings.setBorderStyleTop(style); parameters.setBorderStyleTop(style);
return this; return this;
} }
public Builder borderStyleBottom(final BorderStyleInterface style) { public Builder borderStyleBottom(final BorderStyleInterface style) {
settings.setBorderStyleBottom(style); parameters.setBorderStyleBottom(style);
return this; return this;
} }
public Builder borderStyleLeft(final BorderStyleInterface style) { public Builder borderStyleLeft(final BorderStyleInterface style) {
settings.setBorderStyleLeft(style); parameters.setBorderStyleLeft(style);
return this; return this;
} }
public Builder borderStyleRight(final BorderStyleInterface style) { public Builder borderStyleRight(final BorderStyleInterface style) {
settings.setBorderStyleRight(style); parameters.setBorderStyleRight(style);
return this; return this;
} }
@ -123,47 +123,47 @@ public class TextCell extends AbstractTextCell {
} }
public Builder paddingTop(final float padding) { public Builder paddingTop(final float padding) {
settings.setPaddingTop(padding); parameters.setPaddingTop(padding);
return this; return this;
} }
public Builder paddingBottom(final float padding) { public Builder paddingBottom(final float padding) {
settings.setPaddingBottom(padding); parameters.setPaddingBottom(padding);
return this; return this;
} }
public Builder paddingLeft(final float padding) { public Builder paddingLeft(final float padding) {
settings.setPaddingLeft(padding); parameters.setPaddingLeft(padding);
return this; return this;
} }
public Builder paddingRight(final float padding) { public Builder paddingRight(final float padding) {
settings.setPaddingRight(padding); parameters.setPaddingRight(padding);
return this; return this;
} }
public Builder horizontalAlignment(final HorizontalAlignment alignment) { public Builder horizontalAlignment(final HorizontalAlignment alignment) {
settings.setHorizontalAlignment(alignment); parameters.setHorizontalAlignment(alignment);
return this; return this;
} }
public Builder verticalAlignment(final VerticalAlignment alignment) { public Builder verticalAlignment(final VerticalAlignment alignment) {
settings.setVerticalAlignment(alignment); parameters.setVerticalAlignment(alignment);
return this; return this;
} }
public Builder backgroundColor(final Color backgroundColor) { public Builder backgroundColor(final Color backgroundColor) {
settings.setBackgroundColor(backgroundColor); parameters.setBackgroundColor(backgroundColor);
return this; return this;
} }
public Builder borderColor(final Color borderColor) { public Builder borderColor(final Color borderColor) {
settings.setBorderColor(borderColor); parameters.setBorderColor(borderColor);
return this; return this;
} }
public Builder wordBreak(final Boolean wordBreak) { public Builder wordBreak(final Boolean wordBreak) {
settings.setWordBreak(wordBreak); parameters.setWordBreak(wordBreak);
return this; return this;
} }
@ -179,7 +179,7 @@ public class TextCell extends AbstractTextCell {
public TextCell build() { public TextCell build() {
TextCell cell = new TextCell(); TextCell cell = new TextCell();
cell.setSettings(settings); cell.setParameters(parameters);
cell.setText(text); cell.setText(text);
if (colSpan > 0) { if (colSpan > 0) {
cell.setColSpan(colSpan); cell.setColSpan(colSpan);

View file

@ -21,9 +21,9 @@ public class ImageCellRenderer extends AbstractCellRenderer<ImageCell> {
final Point2D.Float size = cell.getFitSize(); final Point2D.Float size = cell.getFitSize();
final Point2D.Float drawAt = new Point2D.Float(); final Point2D.Float drawAt = new Point2D.Float();
float xOffset = moveX + cell.getPaddingLeft(); float xOffset = moveX + cell.getPaddingLeft();
if (cell.getSettings().getHorizontalAlignment() == HorizontalAlignment.RIGHT) { if (cell.getParameters().getHorizontalAlignment() == HorizontalAlignment.RIGHT) {
xOffset = moveX + (cell.getWidth() - (size.x + cell.getPaddingRight())); xOffset = moveX + (cell.getWidth() - (size.x + cell.getPaddingRight()));
} else if (cell.getSettings().getHorizontalAlignment() == HorizontalAlignment.CENTER) { } else if (cell.getParameters().getHorizontalAlignment() == HorizontalAlignment.CENTER) {
final float diff = (cell.getWidth() - size.x) / 2; final float diff = (cell.getWidth() - size.x) / 2;
xOffset = moveX + diff; xOffset = moveX + diff;
} }

View file

@ -42,7 +42,7 @@ public class ParagraphCellRenderer extends AbstractCellRenderer<ParagraphCell> {
float y = renderContext.getStartingPoint().y + getAdaptionForVerticalAlignment(); float y = renderContext.getStartingPoint().y + getAdaptionForVerticalAlignment();
paragraph.drawText(renderContext.getContentStream(), paragraph.drawText(renderContext.getContentStream(),
new Position(x, y), new Position(x, y),
ALIGNMENT_MAP.getOrDefault(cell.getSettings().getHorizontalAlignment(), Alignment.LEFT), ALIGNMENT_MAP.getOrDefault(cell.getParameters().getHorizontalAlignment(), Alignment.LEFT),
annotationDrawListener annotationDrawListener
); );
annotationDrawListener.afterPage(null); annotationDrawListener.afterPage(null);

View file

@ -188,7 +188,7 @@ public class CustomAnnotationTest {
// register our custom highlight annotation processor // register our custom highlight annotation processor
AnnotationProcessorFactory.register(HighlightAnnotationProcessor.class); AnnotationProcessorFactory.register(HighlightAnnotationProcessor.class);
Document document = new Document(PageFormat.with().A4() Document document = new Document(PageFormat.builder().A4()
.margins(40, 60, 40, 60).portrait().build()); .margins(40, 60, 40, 60).portrait().build());
Paragraph paragraph = new Paragraph(); Paragraph paragraph = new Paragraph();

View file

@ -46,8 +46,8 @@ public class Landscape {
Paragraph titleA5 = new Paragraph(); Paragraph titleA5 = new Paragraph();
titleA5.addMarkup("*Format A5 in Landscape*", 20, BaseFont.TIMES); titleA5.addMarkup("*Format A5 in Landscape*", 20, BaseFont.TIMES);
PageFormat a5_landscape = PageFormat.with().A5().landscape().margins(10, 50, 0, 30).build(); PageFormat a5_landscape = PageFormat.builder().A5().landscape().margins(10, 50, 0, 30).build();
PageFormat a4_portrait = PageFormat.with().margins(40, 50, 40, 60).build(); PageFormat a4_portrait = PageFormat.builder().margins(40, 50, 40, 60).build();
Document document = new Document(a4_portrait); Document document = new Document(a4_portrait);
document.add(titleA4, VerticalLayoutHint.CENTER); document.add(titleA4, VerticalLayoutHint.CENTER);

View file

@ -46,8 +46,8 @@ public class RotationTest {
Paragraph titleA5 = new Paragraph(); Paragraph titleA5 = new Paragraph();
titleA5.addMarkup("*Format A4 Landscape rotated by -90 degrees*", 20, BaseFont.TIMES); titleA5.addMarkup("*Format A4 Landscape rotated by -90 degrees*", 20, BaseFont.TIMES);
PageFormat a4_landscape = PageFormat.with().margins(40, 50, 40, 60).landscape().build(); PageFormat a4_landscape = PageFormat.builder().margins(40, 50, 40, 60).landscape().build();
PageFormat a4_landscape_rotated = PageFormat.with().margins(40, 50, 40, 60).landscape().rotation(-90).build(); PageFormat a4_landscape_rotated = PageFormat.builder().margins(40, 50, 40, 60).landscape().rotation(-90).build();
Document document = new Document(a4_landscape); Document document = new Document(a4_landscape);

View file

@ -9,7 +9,7 @@ without fee is hereby granted.
These 15 images are part of the much larger PngSuite test-set of These 15 images are part of the much larger PngSuite test-set of
images, available for developers of PNG supporting software. The images, available for developers of PNG supporting software. The
complete set, available at http:/www.schaik.com/pngsuite/, contains complete set, available at http:/www.schaik.com/pngsuite/, contains
a variety of images to test interlacing, gamma settings, ancillary a variety of images to test interlacing, gamma parameters, ancillary
chunks, etc. chunks, etc.
The images in this directory represent the basic PNG color-types: The images in this directory represent the basic PNG color-types: