diff --git a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/element/Paragraph.java b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/element/Paragraph.java index 5ae0bcb..b50591d 100644 --- a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/element/Paragraph.java +++ b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/element/Paragraph.java @@ -6,6 +6,7 @@ import org.xbib.graphics.pdfbox.layout.element.render.Transform; import org.xbib.graphics.pdfbox.layout.text.Alignment; import org.xbib.graphics.pdfbox.layout.text.DrawListener; import org.xbib.graphics.pdfbox.layout.position.Position; +import org.xbib.graphics.pdfbox.layout.text.Indent; import org.xbib.graphics.pdfbox.layout.text.TextFlow; import org.xbib.graphics.pdfbox.layout.text.TextSequenceUtil; import org.xbib.graphics.pdfbox.layout.text.WidthRespecting; diff --git a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/element/scripting/command/IndentCommand.java b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/element/scripting/command/IndentCommand.java new file mode 100644 index 0000000..e3b808a --- /dev/null +++ b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/element/scripting/command/IndentCommand.java @@ -0,0 +1,25 @@ +package org.xbib.graphics.pdfbox.layout.element.scripting.command; + +import java.io.IOException; +import org.xbib.graphics.pdfbox.layout.element.Element; +import org.xbib.graphics.pdfbox.layout.element.Paragraph; +import org.xbib.graphics.pdfbox.layout.element.scripting.Engine; +import org.xbib.graphics.pdfbox.layout.element.scripting.State; +import org.xbib.graphics.pdfbox.layout.text.Indent; +import org.xbib.graphics.pdfbox.layout.text.SpaceUnit; +import org.xbib.settings.Settings; + +import static org.xbib.graphics.pdfbox.layout.util.PdfUtil.mmToPt; + +public class IndentCommand implements Command { + + @Override + public void execute(Engine engine, State state, Settings settings) throws IOException { + float value = settings.getAsFloat("value", 0.0f); + Element element = state.getElements().peek(); + if (element instanceof Paragraph) { + Paragraph paragraph = (Paragraph) element; + paragraph.add(new Indent(mmToPt(value), SpaceUnit.pt)); + } + } +} diff --git a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/table/Row.java b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/table/Row.java index ea371e2..7f443b7 100644 --- a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/table/Row.java +++ b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/table/Row.java @@ -106,9 +106,7 @@ public class Row { if (element instanceof Cell) { cells.add((Cell) element); } else if (element instanceof HorizontalRuler) { - Cell cell = DrawableCell.builder() - .drawable((Drawable) element) - .build(); + Cell cell = DrawableCell.builder().drawable((Drawable) element).build(); cells.add(cell); } return this; diff --git a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/table/Table.java b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/table/Table.java index e72fbb7..f75e8b2 100644 --- a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/table/Table.java +++ b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/table/Table.java @@ -308,10 +308,12 @@ public class Table { while (table.isRowSpanAt(rowIndex, columnIndex)) { columnIndex++; } - Column column = table.getColumns().get(columnIndex); - cell.setColumn(column); + cell.setColumn(table.getColumns().get(columnIndex)); cell.setWidth(getAvailableCellWidthRespectingSpan(columnIndex, cell.getColSpan())); columnIndex += cell.getColSpan(); + if (columnIndex > table.getNumberOfColumns() - 1) { + columnIndex = table.getNumberOfColumns(); + } } } for (int i = 0; i < table.getColumns().size(); i++) { diff --git a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/text/ControlFragment.java b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/text/ControlFragment.java index 94a2788..296fa5b 100644 --- a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/text/ControlFragment.java +++ b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/text/ControlFragment.java @@ -1,6 +1,5 @@ package org.xbib.graphics.pdfbox.layout.text; -import org.xbib.graphics.pdfbox.layout.font.BaseFont; import org.xbib.graphics.pdfbox.layout.font.FontDescriptor; import java.awt.Color; diff --git a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/text/IndentCharacters.java b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/text/IndentCharacters.java index d0e3421..79074fb 100644 --- a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/text/IndentCharacters.java +++ b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/text/IndentCharacters.java @@ -42,17 +42,18 @@ public class IndentCharacters { try { this.level = level == null ? 0 : level.length() + 1; } catch (NumberFormatException e) { + // } try { - this.indentUnit = indentUnit == null ? SpaceUnit.em : SpaceUnit - .valueOf(indentUnit); + this.indentUnit = indentUnit == null ? SpaceUnit.em : SpaceUnit.valueOf(indentUnit); } catch (NumberFormatException e) { + // } float defaultIndent = this.indentUnit == SpaceUnit.em ? 4 : 10; try { - this.indentWidth = indentWidth == null ? defaultIndent - : Integer.parseInt(indentWidth); + this.indentWidth = indentWidth == null ? defaultIndent : Integer.parseInt(indentWidth); } catch (NumberFormatException e) { + // } } @@ -256,8 +257,7 @@ public class IndentCharacters { } - private static class IndentCharacterFactory implements - ControlCharacters.ControlCharacterFactory { + private static class IndentCharacterFactory implements ControlCharacters.ControlCharacterFactory { private final static Pattern PATTERN = Pattern .compile("^-(!)|^([ ]*)-(-)(\\{(\\d*)(em|pt)?\\})?|^([ ]*)-(\\+)(\\{(.+)?:(\\d*)(em|pt)?\\})?|^([ ]*)-(#)(\\{((?!:).)?(.+)?:((\\d*))((em|pt))?\\})?"); @@ -272,23 +272,19 @@ public class IndentCharacters { if ("!".equals(matcher.group(1))) { return UNINDENT_CHARACTER; } - if ("-".equals(matcher.group(3))) { return new IndentCharacter(matcher.group(2), matcher.group(5), matcher.group(6)); } - if ("+".equals(matcher.group(8))) { return new ListCharacter(matcher.group(7), matcher.group(11), matcher.group(12), matcher.group(10)); } - if ("#".equals(matcher.group(14))) { return new EnumerationCharacter(matcher.group(13), matcher.group(18), matcher.group(20), matcher.group(16), matcher.group(17)); } - throw new IllegalArgumentException("unkown indentation " + text); } @@ -314,9 +310,9 @@ public class IndentCharacters { private static String getBulletCharacter(final int level) { if (level % 2 == 1) { - return System.getProperty("pdfbox.layout.bullet.odd", BULLET); + return System.getProperty("org.xbib.graphics.pdfbox.layout.bullet.odd", BULLET); } - return System.getProperty("pdfbox.layout.bullet.even", DOUBLE_ANGLE); + return System.getProperty("org.xbib.graphics.pdfbox.layout.bullet.even", DOUBLE_ANGLE); } private static final String BULLET = "\u2022";