From 86c1f6ed9d74561f3802ca54742a89d6ca29e23e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=CC=88rg=20Prante?= Date: Mon, 6 Dec 2021 18:22:19 +0100 Subject: [PATCH] working on scripting engine --- .../pdfbox/layout/elements/Document.java | 6 ++-- .../graphics/pdfbox/layout/font/BaseFont.java | 3 +- .../pdfbox/layout/font/FontDescriptor.java | 2 +- .../graphics/pdfbox/layout/font/Fonts.java | 15 ++++++--- .../pdfbox/layout/font/NotoSansFont.java | 10 +++--- .../graphics/pdfbox/layout/script/Engine.java | 31 ++++++++++++++----- .../graphics/pdfbox/layout/script/State.java | 13 +++++--- .../layout/script/command/BarcodeCommand.java | 2 +- .../script/command/DocumentCommand.java | 2 +- .../command/HorizontalrulerCommand.java | 27 ++++++++++++++++ .../layout/script/command/ImageCommand.java | 2 +- .../script/command/ParagraphCommand.java | 9 +++--- .../layout/script/command/PathCommand.java | 2 +- .../layout/script/command/TextCommand.java | 7 +++-- .../pdfbox/layout/text/ControlFragment.java | 3 -- .../graphics/pdfbox/layout/text/Indent.java | 9 ++++-- .../graphics/pdfbox/layout/text/TextFlow.java | 17 ++++------ .../pdfbox/layout/test/AlignedTest.java | 2 +- .../pdfbox/layout/test/ColumnsTest.java | 3 +- .../layout/test/CustomAnnotationTest.java | 3 +- ...mRenderer.java => CustomRendererTest.java} | 8 ++--- .../pdfbox/layout/test/FramesTest.java | 9 +----- .../pdfbox/layout/test/HelloBarcodeTest.java | 4 +-- .../pdfbox/layout/test/HelloCatTest.java | 4 +-- .../test/{HelloDoc.java => HelloDocTest.java} | 8 ++--- .../pdfbox/layout/test/HelloNotoFontTest.java | 14 ++++----- .../pdfbox/layout/test/IndentationTest.java | 25 +-------------- .../{Landscape.java => LandscapeTest.java} | 4 +-- .../test/{Letter.java => LetterTest.java} | 5 ++- .../pdfbox/layout/test/LineSpacingTest.java | 6 +--- .../pdfbox/layout/test/LinksTest.java | 9 +----- .../test/{Listener.java => ListenerTest.java} | 8 ++--- .../pdfbox/layout/test/LowLevelText.java | 6 +--- .../test/{Margin.java => MarginTest.java} | 8 ++--- .../pdfbox/layout/test/MarkupTest.java | 2 +- .../pdfbox/layout/test/MultiplePagesTest.java | 2 +- .../pdfbox/layout/test/RotationTest.java | 2 +- .../graphics/pdfbox/layout/test/Section.java | 3 +- .../pdfbox/layout/test/script/ScriptTest.java | 9 ++++-- .../pdfbox/layout/test/script/script.json | 24 ++++++++++++++ 40 files changed, 170 insertions(+), 158 deletions(-) create mode 100644 graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/script/command/HorizontalrulerCommand.java rename graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/{CustomRenderer.java => CustomRendererTest.java} (96%) rename graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/{HelloDoc.java => HelloDocTest.java} (74%) rename graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/{Landscape.java => LandscapeTest.java} (98%) rename graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/{Letter.java => LetterTest.java} (98%) rename graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/{Listener.java => ListenerTest.java} (95%) rename graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/{Margin.java => MarginTest.java} (93%) diff --git a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/elements/Document.java b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/elements/Document.java index 1f5ff11..e30ef8b 100644 --- a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/elements/Document.java +++ b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/elements/Document.java @@ -198,10 +198,12 @@ public class Document implements Closeable, RenderListener { return this; } - public synchronized void save(OutputStream outputStream) throws IOException { - if (pdDocument != null) { + public synchronized Document save(OutputStream outputStream) throws IOException { + if (pdDocument != null && outputStream != null) { pdDocument.save(outputStream); + outputStream.close(); } + return this; } @Override diff --git a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/font/BaseFont.java b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/font/BaseFont.java index 1540c94..abd606a 100644 --- a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/font/BaseFont.java +++ b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/font/BaseFont.java @@ -3,6 +3,8 @@ package org.xbib.graphics.pdfbox.layout.font; import org.apache.pdfbox.pdmodel.font.PDFont; import org.apache.pdfbox.pdmodel.font.PDType1Font; +import java.io.IOException; + /** * In order to easy handling with fonts, this enum bundles the * plain/italic/bold/bold-italic variants of the three standard font types @@ -54,5 +56,4 @@ public enum BaseFont implements Font { public PDFont getBoldItalicFont() { return boldItalicFont; } - } diff --git a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/font/FontDescriptor.java b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/font/FontDescriptor.java index 3494ac7..a1acf2c 100644 --- a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/font/FontDescriptor.java +++ b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/font/FontDescriptor.java @@ -4,7 +4,7 @@ import org.apache.pdfbox.pdmodel.font.PDFont; import java.util.Objects; /** - * Container for a Font and size. + * A descriptor for a font and a size, and activated attributes for font selection. */ public class FontDescriptor { diff --git a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/font/Fonts.java b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/font/Fonts.java index 38fd2ac..8226ddc 100644 --- a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/font/Fonts.java +++ b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/font/Fonts.java @@ -2,16 +2,23 @@ package org.xbib.graphics.pdfbox.layout.font; import org.xbib.graphics.pdfbox.layout.elements.Document; +import java.util.HashMap; +import java.util.Map; + public enum Fonts { HELVETICA, TIMES, COURIER, NOTOSANS; + private final Map map = new HashMap<>(); + public Font getFont(Document document) { - if ("notosans".equalsIgnoreCase(name())) { - return new NotoSansFont(document); - } - return BaseFont.valueOf(name()); + return map.computeIfAbsent(name(), name -> { + if ("notosans".equalsIgnoreCase(name())) { + return new NotoSansFont(document); + } + return BaseFont.valueOf(name()); + }); } } diff --git a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/font/NotoSansFont.java b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/font/NotoSansFont.java index 8f4480b..5315097 100644 --- a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/font/NotoSansFont.java +++ b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/font/NotoSansFont.java @@ -12,13 +12,13 @@ public class NotoSansFont implements Font { private final PDDocument pdDocument; - private static PDType0Font regular; + private PDType0Font regular; - private static PDType0Font bold; + private PDType0Font bold; - private static PDType0Font italic; + private PDType0Font italic; - private static PDType0Font bolditalic; + private PDType0Font bolditalic; public NotoSansFont(Document document) { this.pdDocument = document.getPdDocument(); @@ -27,7 +27,7 @@ public class NotoSansFont implements Font { @Override public PDFont getRegularFont() { if (regular == null) { - regular = load("NotoSans-Regular.ttf"); + regular = load("NotoSans-Regular.ttf"); } return regular; } diff --git a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/script/Engine.java b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/script/Engine.java index f37fb06..45c062d 100644 --- a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/script/Engine.java +++ b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/script/Engine.java @@ -3,10 +3,14 @@ package org.xbib.graphics.pdfbox.layout.script; import org.xbib.graphics.pdfbox.layout.script.command.Command; import org.xbib.settings.Settings; +import java.io.Closeable; import java.io.IOException; -import java.util.Set; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +public class Engine implements Closeable { -public class Engine { private final String packageName; private final ClassLoader classLoader; @@ -24,14 +28,23 @@ public class Engine { } public void execute(String prefix, State state, Settings settings) throws IOException { - Settings subSettings = settings.getByPrefix(prefix); - Set set = subSettings.getAsStructuredMap().keySet(); - for (String string : set) { + execute(List.of(prefix), state, settings); + } + + public void execute(List prefixes, State state, Settings settings) throws IOException { + Map map = new LinkedHashMap<>(); + for (String prefix : prefixes) { + Settings subSettings = settings.getByPrefix(prefix); + for (String string : subSettings.getAsStructuredMap().keySet()) { + map.put(prefix + string, prefix); + } + } + for (Map.Entry entry : map.entrySet()) { try { - Settings thisSettings = settings.getAsSettings(prefix + string); + Settings thisSettings = settings.getAsSettings(entry.getKey()); String type = thisSettings.get("type"); if (type == null) { - type = prefix; + type = entry.getValue(); } String className = packageName + ".command." + type.substring(0, 1).toUpperCase() + type.substring(1) + "Command"; Class cl = classLoader.loadClass(className); @@ -43,6 +56,10 @@ public class Engine { } } + @Override + public void close() throws IOException { + } + public State getState() { return state; } diff --git a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/script/State.java b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/script/State.java index 5c16039..2c613e2 100644 --- a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/script/State.java +++ b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/script/State.java @@ -2,14 +2,17 @@ package org.xbib.graphics.pdfbox.layout.script; import org.xbib.graphics.pdfbox.layout.elements.Document; import org.xbib.graphics.pdfbox.layout.elements.Paragraph; -import org.xbib.graphics.pdfbox.layout.elements.PathElement; + +import java.util.Collection; +import java.util.Stack; public class State { - public Document document; + public Stack documents = new Stack<>(); - public Paragraph paragraph; - - public PathElement pathElement; + public Stack paragraphs = new Stack<>(); + public Collection getDocuments() { + return documents; + } } diff --git a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/script/command/BarcodeCommand.java b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/script/command/BarcodeCommand.java index e9f7966..603c9ae 100644 --- a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/script/command/BarcodeCommand.java +++ b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/script/command/BarcodeCommand.java @@ -36,6 +36,6 @@ public class BarcodeCommand implements Command { if (settings.containsSetting("scale")) { element.setScale(settings.getAsFloat("scale", element.getScale())); } - state.document.add(element); + state.documents.peek().add(element); } } diff --git a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/script/command/DocumentCommand.java b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/script/command/DocumentCommand.java index 6046e98..d503bbd 100644 --- a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/script/command/DocumentCommand.java +++ b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/script/command/DocumentCommand.java @@ -22,7 +22,7 @@ public class DocumentCommand implements Command { .pageFormat(settings.get("format", "A4")) .orientation(settings.get("orientiation", "PORTRAIT")) .build(); - state.document = new Document(pageFormat); + state.documents.push(new Document(pageFormat)); engine.execute("image", state, settings); engine.execute("barcode", state, settings); engine.execute("path", state, settings); diff --git a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/script/command/HorizontalrulerCommand.java b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/script/command/HorizontalrulerCommand.java new file mode 100644 index 0000000..8c7e371 --- /dev/null +++ b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/script/command/HorizontalrulerCommand.java @@ -0,0 +1,27 @@ +package org.xbib.graphics.pdfbox.layout.script.command; + +import org.xbib.graphics.pdfbox.layout.color.ColorFactory; +import org.xbib.graphics.pdfbox.layout.elements.HorizontalRuler; +import org.xbib.graphics.pdfbox.layout.script.Engine; +import org.xbib.graphics.pdfbox.layout.script.State; +import org.xbib.graphics.pdfbox.layout.shape.Stroke; +import org.xbib.settings.Settings; + +import java.awt.Color; +import java.io.IOException; + +public class HorizontalrulerCommand implements Command { + @Override + public void execute(Engine engine, State state, Settings settings) throws IOException { + Stroke.StrokeBuilder strokeBuilder = Stroke.builder() + .capStyle(Stroke.CapStyle.valueOf(settings.get("capstyie", "Cap"))) + .joinStyle(Stroke.JoinStyle.valueOf(settings.get("joinstyle", "Miter"))) + .lineWidth(settings.getAsFloat("linewidth", 1f)); + if (settings.containsSetting("dash")) { + strokeBuilder.dashPattern(new Stroke.DashPattern(settings.getAsFloat("dash", 1f))); + } + Color color = ColorFactory.web(settings.get("color", "black")); + HorizontalRuler horizontalRuler = new HorizontalRuler(strokeBuilder.build(), color); + state.documents.peek().add(horizontalRuler); + } +} diff --git a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/script/command/ImageCommand.java b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/script/command/ImageCommand.java index 144dede..257391d 100644 --- a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/script/command/ImageCommand.java +++ b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/script/command/ImageCommand.java @@ -26,6 +26,6 @@ public class ImageCommand implements Command { if (settings.containsSetting("scale")) { element.setScale(settings.getAsFloat("scale", element.getScale())); } - state.document.add(element, new VerticalLayoutHint(Alignment.LEFT, 10, 10, 10, 10, true)); + state.documents.peek().add(element, new VerticalLayoutHint(Alignment.LEFT, 10, 10, 10, 10, true)); } } diff --git a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/script/command/ParagraphCommand.java b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/script/command/ParagraphCommand.java index c0769b8..13a944d 100644 --- a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/script/command/ParagraphCommand.java +++ b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/script/command/ParagraphCommand.java @@ -12,14 +12,15 @@ public class ParagraphCommand implements Command { @Override public void execute(Engine engine, State state, Settings settings) throws IOException { - state.paragraph = new Paragraph(); + Paragraph paragraph = new Paragraph(); + state.paragraphs.push(paragraph); if (settings.containsSetting("x") && settings.containsSetting("y")) { - state.paragraph.setAbsolutePosition(new Position(settings.getAsFloat("x", 0f), settings.getAsFloat("y", 0f))); + paragraph.setAbsolutePosition(new Position(settings.getAsFloat("x", 0f), settings.getAsFloat("y", 0f))); } if (settings.containsSetting("width")) { - state.paragraph.setMaxWidth(settings.getAsFloat("width", state.document.getPageWidth())); + paragraph.setMaxWidth(settings.getAsFloat("width", state.documents.peek().getPageWidth())); } - state.document.add(state.paragraph); + state.documents.peek().add(paragraph); engine.execute("text", state, settings); } } diff --git a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/script/command/PathCommand.java b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/script/command/PathCommand.java index 71e8956..5efc101 100644 --- a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/script/command/PathCommand.java +++ b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/script/command/PathCommand.java @@ -46,6 +46,6 @@ public class PathCommand implements Command { strokeBuilder.dashPattern(new Stroke.DashPattern(settings.getAsFloat("dash", 1f))); } Color color = ColorFactory.web(settings.get("color", "black")); - state.document.add(new PathElement(path, strokeBuilder.build(), color, position)); + state.documents.peek().add(new PathElement(path, strokeBuilder.build(), color, position)); } } diff --git a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/script/command/TextCommand.java b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/script/command/TextCommand.java index 37d5982..3a99d43 100644 --- a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/script/command/TextCommand.java +++ b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/script/command/TextCommand.java @@ -7,11 +7,12 @@ import org.xbib.graphics.pdfbox.layout.script.State; import org.xbib.settings.Settings; public class TextCommand implements Command { + @Override public void execute(Engine engine, State state, Settings settings) { String value = settings.get("value"); - float size = settings.getAsFloat("size", 12.0f); - Font font = Fonts.valueOf(settings.get("font", "HELVETICA")).getFont(state.document); - state.paragraph.addMarkup(value, size, font); + float size = settings.getAsFloat("size", 11.0f); + Font font = Fonts.valueOf(settings.get("font", "HELVETICA")).getFont(state.documents.peek()); + state.paragraphs.peek().addMarkup(value, size, font); } } 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 195a1c6..94a2788 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 @@ -10,9 +10,6 @@ import java.awt.Color; */ public class ControlFragment implements TextFragment { - protected final static FontDescriptor DEFAULT_FONT_DESCRIPTOR = - new FontDescriptor(BaseFont.HELVETICA, 11); - private String name; private final String text; diff --git a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/text/Indent.java b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/text/Indent.java index 0ca3d9e..f1dc4ac 100644 --- a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/text/Indent.java +++ b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/text/Indent.java @@ -1,5 +1,6 @@ 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; import java.io.IOException; @@ -10,10 +11,12 @@ import java.io.UncheckedIOException; */ public class Indent extends ControlFragment { + public static final FontDescriptor DEFAULT_FONT_DESCRIPTOR = new FontDescriptor(BaseFont.HELVETICA, 11); + /** * Constant for the indentation of 0. */ - public final static Indent UNINDENT = new Indent(0); + public static final Indent UNINDENT = new Indent(0); protected Alignment alignment = Alignment.LEFT; @@ -31,7 +34,7 @@ public class Indent extends ControlFragment { /** * Creates a new line with the - * {@link ControlFragment#DEFAULT_FONT_DESCRIPTOR}'s font and the given + * {@link #DEFAULT_FONT_DESCRIPTOR}'s font and the given * height. * * @param label the label of the indentation. @@ -45,7 +48,7 @@ public class Indent extends ControlFragment { /** * Creates a new line with the - * {@link ControlFragment#DEFAULT_FONT_DESCRIPTOR}'s font and the given + * {@link #DEFAULT_FONT_DESCRIPTOR}'s font and the given * height. * * @param label the label of the indentation. diff --git a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/text/TextFlow.java b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/text/TextFlow.java index 3f628cc..b0e8c68 100644 --- a/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/text/TextFlow.java +++ b/graphics-pdfbox-layout/src/main/java/org/xbib/graphics/pdfbox/layout/text/TextFlow.java @@ -72,24 +72,19 @@ public class TextFlow implements TextSequence, WidthRespecting { add(TextFlowUtil.createTextFlow(text, new FontDescriptor(font, fontSize))); } - /** - * Adds some markup to the text flow. - * - * @param markup the markup to add. - * @param fontSize the font size to use. - * @param font the font - */ + public void addMarkup(String markup, FontDescriptor fontDescriptor) { + add(TextFlowUtil.createTextFlowFromMarkup(markup, fontDescriptor)); + } + public void addMarkup(String markup, float fontSize, Font font) { add(TextFlowUtil.createTextFlowFromMarkup(markup, new FontDescriptor(font, fontSize))); } - public void addIndent(String label, float indentWidth, SpaceUnit indentUnit, - float fontsize, Font font) { + public void addIndent(String label, float indentWidth, SpaceUnit indentUnit, float fontsize, Font font) { add(new Indent(label, indentWidth, indentUnit, new FontDescriptor(font, fontsize))); } - public void addIndent(String label, float indentWidth, SpaceUnit indentUnit, - float fontsize, Font font, Alignment alignment) { + public void addIndent(String label, float indentWidth, SpaceUnit indentUnit, float fontsize, Font font, Alignment alignment) { add(new Indent(label, indentWidth, indentUnit, new FontDescriptor(font, fontsize), alignment)); } diff --git a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/AlignedTest.java b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/AlignedTest.java index fcf9358..aec8e07 100644 --- a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/AlignedTest.java +++ b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/AlignedTest.java @@ -38,6 +38,6 @@ public class AlignedTest { paragraph.setMaxWidth(40); document.add(paragraph, VerticalLayoutHint.CENTER); OutputStream outputStream = new FileOutputStream("build/aligned.pdf"); - document.render().save(outputStream); + document.render().save(outputStream).close(); } } diff --git a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/ColumnsTest.java b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/ColumnsTest.java index 04d5a40..d7fde41 100644 --- a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/ColumnsTest.java +++ b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/ColumnsTest.java @@ -79,7 +79,6 @@ public class ColumnsTest { document.add(paragraph3); document.add(paragraph2); document.add(paragraph2); - final OutputStream outputStream = new FileOutputStream("build/columns.pdf"); - document.render().save(outputStream); + document.render().save(new FileOutputStream("build/columns.pdf")).close(); } } diff --git a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/CustomAnnotationTest.java b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/CustomAnnotationTest.java index 229558f..36a1698 100644 --- a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/CustomAnnotationTest.java +++ b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/CustomAnnotationTest.java @@ -214,8 +214,7 @@ public class CustomAnnotationTest { 10, BaseFont.HELVETICA); paragraph.setMaxWidth(150); document.add(paragraph); - final OutputStream outputStream = new FileOutputStream("build/customannotation.pdf"); - document.render().save(outputStream); + document.render().save(new FileOutputStream("build/customannotation.pdf")).close(); } private static PDColor toPDColor(final Color color) { diff --git a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/CustomRenderer.java b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/CustomRendererTest.java similarity index 96% rename from graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/CustomRenderer.java rename to graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/CustomRendererTest.java index bddf2eb..9f3c3fa 100644 --- a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/CustomRenderer.java +++ b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/CustomRendererTest.java @@ -22,9 +22,8 @@ import org.xbib.graphics.pdfbox.layout.text.TextSequenceUtil; import java.awt.Color; import java.io.FileOutputStream; import java.io.IOException; -import java.io.OutputStream; -public class CustomRenderer { +public class CustomRendererTest { @Test public void test() throws Exception { @@ -67,10 +66,7 @@ public class CustomRenderer { document.add(new Section(3)); document.add(paragraph); document.add(paragraph); - - final OutputStream outputStream = new FileOutputStream("build/customrenderer.pdf"); - document.render().save(outputStream); - + document.render().save(new FileOutputStream("build/customrenderer.pdf")).close(); } public static class SectionRenderer implements Renderer, RenderListener { diff --git a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/FramesTest.java b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/FramesTest.java index 07e9112..6523077 100644 --- a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/FramesTest.java +++ b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/FramesTest.java @@ -38,7 +38,6 @@ public class FramesTest { + "gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.\n"; Document document = new Document(PageFormats.A5_PORTRAIT); - Paragraph paragraph = new Paragraph(); paragraph.addMarkup("Am I living in a box?", 11, BaseFont.TIMES); Frame frame = new Frame(paragraph); @@ -47,7 +46,6 @@ public class FramesTest { frame.setPadding(10, 10, 5, 5); frame.setMargin(40, 40, 20, 10); document.add(frame, VerticalLayoutHint.CENTER); - paragraph = new Paragraph(); paragraph.addMarkup(text1, 11, BaseFont.TIMES); frame = new Frame(paragraph, 200f, null); @@ -56,7 +54,6 @@ public class FramesTest { frame.setPadding(10, 10, 5, 5); frame.setMargin(40, 40, 20, 10); document.add(frame); - paragraph = new Paragraph(); paragraph.addMarkup("{color:#aa00aa}*Ain't no rectangle*", 22, BaseFont.HELVETICA); paragraph.setAlignment(Alignment.CENTER); @@ -66,7 +63,6 @@ public class FramesTest { frame.setBackgroundColor(Color.pink); frame.setPadding(50, 0, 35, 0); document.add(frame); - paragraph = new Paragraph(); paragraph.addMarkup("Frames also paginate, see here:\n\n", 13, BaseFont.TIMES); paragraph.addMarkup(text2, 11, BaseFont.TIMES); @@ -77,14 +73,11 @@ public class FramesTest { frame.setBackgroundColor(new Color(255, 240, 180)); frame.setPadding(20, 15, 10, 15); frame.setMargin(50, 50, 20, 10); - paragraph = new Paragraph(); paragraph.addMarkup(text2, 11, BaseFont.TIMES); paragraph.addMarkup(text2, 11, BaseFont.TIMES); frame.add(paragraph); - document.add(frame); - - document.render().save(new FileOutputStream("build/frames.pdf")); + document.render().save(new FileOutputStream("build/frames.pdf")).close(); } } diff --git a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/HelloBarcodeTest.java b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/HelloBarcodeTest.java index 0bbcaf1..d85369f 100644 --- a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/HelloBarcodeTest.java +++ b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/HelloBarcodeTest.java @@ -14,7 +14,6 @@ import org.xbib.graphics.pdfbox.layout.font.BaseFont; import org.xbib.graphics.pdfbox.layout.text.Indent; import org.xbib.graphics.pdfbox.layout.text.SpaceUnit; import java.io.FileOutputStream; -import java.io.OutputStream; public class HelloBarcodeTest { @@ -31,7 +30,6 @@ public class HelloBarcodeTest { symbol.setHumanReadableLocation(HumanReadableLocation.BOTTOM); BarcodeElement barcodeElement = new BarcodeElement(symbol); document.add(barcodeElement, new VerticalLayoutHint(Alignment.LEFT, 10, 10, 10, 10, true)); - OutputStream outputStream = new FileOutputStream("build/hellobarcode.pdf"); - document.render().save(outputStream); + document.render().save(new FileOutputStream("build/hellobarcode.pdf")).close(); } } diff --git a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/HelloCatTest.java b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/HelloCatTest.java index 6fbdbed..4228233 100644 --- a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/HelloCatTest.java +++ b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/HelloCatTest.java @@ -8,7 +8,6 @@ import org.xbib.graphics.pdfbox.layout.elements.render.VerticalLayoutHint; import org.xbib.graphics.pdfbox.layout.text.Alignment; import org.xbib.graphics.pdfbox.layout.font.BaseFont; import java.io.FileOutputStream; -import java.io.OutputStream; import javax.imageio.ImageIO; public class HelloCatTest { @@ -22,7 +21,6 @@ public class HelloCatTest { ImageElement imageElement = new ImageElement(ImageIO.read(getClass().getResourceAsStream("cat.jpg"))); imageElement.setScale(0.1f); document.add(imageElement, new VerticalLayoutHint(Alignment.LEFT, 10, 10, 10, 10, true)); - final OutputStream outputStream = new FileOutputStream("build/hellocat.pdf"); - document.render().save(outputStream); + document.render().save(new FileOutputStream("build/hellocat.pdf")).close(); } } diff --git a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/HelloDoc.java b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/HelloDocTest.java similarity index 74% rename from graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/HelloDoc.java rename to graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/HelloDocTest.java index c7ffa92..80b26f8 100644 --- a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/HelloDoc.java +++ b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/HelloDocTest.java @@ -5,19 +5,15 @@ import org.xbib.graphics.pdfbox.layout.elements.Document; import org.xbib.graphics.pdfbox.layout.elements.Paragraph; import org.xbib.graphics.pdfbox.layout.font.BaseFont; import java.io.FileOutputStream; -import java.io.OutputStream; -public class HelloDoc { +public class HelloDocTest { @Test public void test() throws Exception { Document document = new Document(40, 60, 40, 60); - Paragraph paragraph = new Paragraph(); paragraph.addText("Hello Document", 20, BaseFont.HELVETICA); document.add(paragraph); - final OutputStream outputStream = new FileOutputStream("build/hellodoc.pdf"); - document.render().save(outputStream); - + document.render().save(new FileOutputStream("build/hellodoc.pdf")).close(); } } diff --git a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/HelloNotoFontTest.java b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/HelloNotoFontTest.java index eaaaca5..eb3703c 100644 --- a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/HelloNotoFontTest.java +++ b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/HelloNotoFontTest.java @@ -4,11 +4,11 @@ import org.junit.jupiter.api.Test; import org.xbib.graphics.pdfbox.layout.elements.Document; import org.xbib.graphics.pdfbox.layout.elements.PageFormats; import org.xbib.graphics.pdfbox.layout.elements.Paragraph; +import org.xbib.graphics.pdfbox.layout.font.Font; import org.xbib.graphics.pdfbox.layout.font.NotoSansFont; import org.xbib.graphics.pdfbox.layout.text.Indent; import org.xbib.graphics.pdfbox.layout.text.SpaceUnit; import java.io.FileOutputStream; -import java.io.OutputStream; public class HelloNotoFontTest { @@ -17,12 +17,12 @@ public class HelloNotoFontTest { Document document = new Document(PageFormats.A4_PORTRAIT); Paragraph paragraph = new Paragraph(); paragraph.add(new Indent(32, SpaceUnit.pt)); - paragraph.addMarkup("Hello Noto Regular\n", 12, new NotoSansFont(document)); - paragraph.addMarkup("*Hello Noto Bold*\n", 12, new NotoSansFont(document)); - paragraph.addMarkup("_Hello Noto Italic_\n", 12, new NotoSansFont(document)); - paragraph.addMarkup("*_Hello Noto Bold Italic_*\n", 12, new NotoSansFont(document)); + Font font = new NotoSansFont(document); + paragraph.addMarkup("Hello Noto Regular\n", 12, font); + paragraph.addMarkup("*Hello Noto Bold*\n", 12, font); + paragraph.addMarkup("_Hello Noto Italic_\n", 12, font); + paragraph.addMarkup("*_Hello Noto Bold Italic_*\n", 12, font); document.add(paragraph); - final OutputStream outputStream = new FileOutputStream("build/hellonotofont.pdf"); - document.render().save(outputStream); + document.render().save(new FileOutputStream("build/hellonotofont.pdf")).close(); } } diff --git a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/IndentationTest.java b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/IndentationTest.java index a3226f6..7457e14 100644 --- a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/IndentationTest.java +++ b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/IndentationTest.java @@ -13,7 +13,6 @@ import org.xbib.graphics.pdfbox.layout.util.Enumerators.LowerCaseAlphabeticEnume import org.xbib.graphics.pdfbox.layout.util.Enumerators.LowerCaseRomanEnumerator; import org.xbib.graphics.pdfbox.layout.util.Enumerators.RomanEnumerator; import java.io.FileOutputStream; -import java.io.OutputStream; public class IndentationTest { @@ -21,7 +20,6 @@ public class IndentationTest { public void test() throws Exception { String bulletOdd = getBulletCharacter(1) + " "; String bulletEven = getBulletCharacter(2) + " "; - Document document = new Document(40, 60, 40, 60); Paragraph paragraph = new Paragraph(); paragraph.addMarkup("This is an example for the new indent feature. Let's do some empty space indentation:\n", @@ -33,36 +31,27 @@ public class IndentationTest { paragraph.add(new Indent(70, SpaceUnit.pt)); paragraph.addMarkup("any new indent comes.\n", 11, BaseFont.TIMES); document.add(paragraph); - paragraph = new Paragraph(); paragraph.addMarkup("New paragraph, now indentation is gone. But we can indent with a label also:\n", 11, BaseFont.TIMES); paragraph.addIndent("This is some label", 100, SpaceUnit.pt, 11, BaseFont.TIMES); paragraph.addMarkup("Here we go indented.\n", 11, BaseFont.TIMES); paragraph.addMarkup("And again, the Indentation holds for the rest of the paragraph, or any new indent comes.\nLabels can be aligned:\n", 11, BaseFont.TIMES); paragraph.addIndent("Left", 100, SpaceUnit.pt, 11, BaseFont.TIMES, Alignment.LEFT); - //PDType1Font.TIMES_BOLD, Alignment.LEFT)); paragraph.addMarkup("Indent with label aligned to the left.\n", 11, BaseFont.TIMES); paragraph.addIndent("Center", 100, SpaceUnit.pt, 11, BaseFont.TIMES, Alignment.CENTER); - //PDType1Font.TIMES_BOLD, Alignment.CENTER)); paragraph.addMarkup("Indent with label aligned to the center.\n", 11, BaseFont.TIMES); paragraph.addIndent("Right", 100, SpaceUnit.pt, 11, BaseFont.TIMES, Alignment.RIGHT); - //PDType1Font.TIMES_BOLD, Alignment.RIGHT)); paragraph.addMarkup("Indent with label aligned to the right.\n", 11, BaseFont.TIMES); document.add(paragraph); - paragraph = new Paragraph(); paragraph.addMarkup("So, what can you do with that? How about lists:\n", 11, BaseFont.TIMES); paragraph.addIndent(bulletOdd, 4, SpaceUnit.em, 11, BaseFont.TIMES, Alignment.RIGHT); - //PDType1Font.TIMES_BOLD, Alignment.RIGHT)); paragraph.addMarkup("This is a list item\n", 11, BaseFont.TIMES); paragraph.addIndent(bulletOdd, 4, SpaceUnit.em, 11, BaseFont.TIMES, Alignment.RIGHT); - //PDType1Font.TIMES_BOLD, Alignment.RIGHT)); paragraph.addMarkup("Another list item\n", 11, BaseFont.TIMES); paragraph.addIndent(bulletEven, 8, SpaceUnit.em, 11, BaseFont.TIMES, Alignment.RIGHT); - //PDType1Font.TIMES_BOLD, Alignment.RIGHT)); paragraph.addMarkup("Sub list item\n", 11, BaseFont.TIMES); paragraph.addIndent(bulletOdd, 4, SpaceUnit.em, 11, BaseFont.TIMES, Alignment.RIGHT); - //PDType1Font.TIMES_BOLD, Alignment.RIGHT)); paragraph.addMarkup("And yet another one\n", 11, BaseFont.TIMES); document.add(paragraph); @@ -71,19 +60,14 @@ public class IndentationTest { RomanEnumerator e1 = new RomanEnumerator(); LowerCaseAlphabeticEnumerator e2 = new LowerCaseAlphabeticEnumerator(); paragraph.addIndent(e1.next() + ". ", 4, SpaceUnit.em, 11, BaseFont.TIMES, Alignment.RIGHT); - //PDType1Font.TIMES_BOLD, Alignment.RIGHT)); paragraph.addMarkup("First item\n", 11, BaseFont.TIMES); paragraph.addIndent(e1.next() + ". ", 4, SpaceUnit.em, 11, BaseFont.TIMES, Alignment.RIGHT); - //PDType1Font.TIMES_BOLD, Alignment.RIGHT)); paragraph.addMarkup("Second item\n", 11, BaseFont.TIMES); paragraph.addIndent(e2.next() + ") ", 8, SpaceUnit.em, 11, BaseFont.TIMES, Alignment.RIGHT); - //PDType1Font.TIMES_BOLD, Alignment.RIGHT)); paragraph.addMarkup("A sub item\n", 11, BaseFont.TIMES); paragraph.addIndent(e2.next() + ") ", 8, SpaceUnit.em, 11, BaseFont.TIMES, Alignment.RIGHT); - //PDType1Font.TIMES_BOLD, Alignment.RIGHT)); paragraph.addMarkup("Another sub item\n", 11, BaseFont.TIMES); paragraph.addIndent(e1.next() + ". ", 4, SpaceUnit.em, 11, BaseFont.TIMES, Alignment.RIGHT); - //PDType1Font.TIMES_BOLD, Alignment.RIGHT)); paragraph.addMarkup("Third item\n", 11, BaseFont.TIMES); document.add(paragraph); @@ -91,23 +75,17 @@ public class IndentationTest { paragraph.addMarkup("The following types are built in:\n", 11, BaseFont.TIMES); paragraph.addIndent(new ArabicEnumerator().next() + " ", 4, SpaceUnit.em, 11, BaseFont.TIMES, Alignment.RIGHT); - //PDType1Font.TIMES_BOLD, Alignment.RIGHT)); paragraph.addMarkup("ArabicEnumerator\n", 11, BaseFont.TIMES); paragraph.addIndent(new RomanEnumerator().next() + " ", 4, SpaceUnit.em, 11, BaseFont.TIMES, Alignment.RIGHT); - //PDType1Font.TIMES_BOLD, Alignment.RIGHT)); paragraph.addMarkup("RomanEnumerator\n", 11, BaseFont.TIMES); paragraph.addIndent(new LowerCaseRomanEnumerator().next() + " ", 4, SpaceUnit.em, 11, BaseFont.TIMES, Alignment.RIGHT); - //PDType1Font.TIMES_BOLD, Alignment.RIGHT)); paragraph.addMarkup("LowerCaseRomanEnumerator\n", 11, BaseFont.TIMES); paragraph.addIndent(new AlphabeticEnumerator().next() + " ", 4, SpaceUnit.em, 11, BaseFont.TIMES, Alignment.RIGHT); - //PDType1Font.TIMES_BOLD, Alignment.RIGHT)); paragraph.addMarkup("AlphabeticEnumerator\n", 11, BaseFont.TIMES); paragraph.addIndent(new LowerCaseAlphabeticEnumerator().next() + " ", 4, SpaceUnit.em, 11, BaseFont.TIMES, Alignment.RIGHT); - //PDType1Font.TIMES_BOLD, Alignment.RIGHT)); paragraph.addMarkup("LowerCaseAlphabeticEnumerator\n", 11, BaseFont.TIMES); document.add(paragraph); - paragraph = new Paragraph(); String text1 = "For your convenience, you can do all that much easier with markup, e.g. simple indentation\n" + "--At vero eos et accusam\n\n" @@ -128,8 +106,7 @@ public class IndentationTest { + "-#{I ->:5}And yet another one\n\n"; paragraph.addMarkup(text1, 11, BaseFont.TIMES); document.add(paragraph); - - document.render().save(new FileOutputStream("build/indentation.pdf")); + document.render().save(new FileOutputStream("build/indentation.pdf")).close(); } private static String getBulletCharacter(final int level) { diff --git a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/Landscape.java b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/LandscapeTest.java similarity index 98% rename from graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/Landscape.java rename to graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/LandscapeTest.java index 9fadefb..67daeec 100644 --- a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/Landscape.java +++ b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/LandscapeTest.java @@ -12,7 +12,7 @@ import org.xbib.graphics.pdfbox.layout.elements.render.VerticalLayoutHint; import org.xbib.graphics.pdfbox.layout.font.BaseFont; import java.io.FileOutputStream; -public class Landscape { +public class LandscapeTest { @Test public void main() throws Exception { @@ -103,6 +103,6 @@ public class Landscape { document.add(paragraph2); document.add(paragraph3); - document.render().save(new FileOutputStream("build/landscape.pdf")); + document.render().save(new FileOutputStream("build/landscape.pdf")).close(); } } diff --git a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/Letter.java b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/LetterTest.java similarity index 98% rename from graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/Letter.java rename to graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/LetterTest.java index dee0127..d217e12 100644 --- a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/Letter.java +++ b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/LetterTest.java @@ -12,10 +12,9 @@ import org.xbib.graphics.pdfbox.layout.text.Position; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; -import java.io.OutputStream; import javax.imageio.ImageIO; -public class Letter { +public class LetterTest { @Test public void test() throws Exception { @@ -80,6 +79,6 @@ public class Letter { paragraph.setAbsolutePosition(new Position(hMargin, vMargin)); document.add(paragraph); - document.render().save(new FileOutputStream("build/letter.pdf")); + document.render().save(new FileOutputStream("build/letter.pdf")).close(); } } diff --git a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/LineSpacingTest.java b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/LineSpacingTest.java index 027c614..b535a8e 100644 --- a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/LineSpacingTest.java +++ b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/LineSpacingTest.java @@ -7,7 +7,6 @@ import org.xbib.graphics.pdfbox.layout.elements.Paragraph; import org.xbib.graphics.pdfbox.layout.elements.render.ColumnLayout; import org.xbib.graphics.pdfbox.layout.font.BaseFont; import java.io.FileOutputStream; -import java.io.OutputStream; public class LineSpacingTest { @@ -44,9 +43,6 @@ public class LineSpacingTest { document.add(right); document.add(right); - - final OutputStream outputStream = new FileOutputStream("build/linespacing.pdf"); - document.render().save(outputStream); - + document.render().save(new FileOutputStream("build/linespacing.pdf")).close(); } } diff --git a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/LinksTest.java b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/LinksTest.java index 6084328..c0eb882 100644 --- a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/LinksTest.java +++ b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/LinksTest.java @@ -5,7 +5,6 @@ import org.xbib.graphics.pdfbox.layout.elements.Document; import org.xbib.graphics.pdfbox.layout.elements.Paragraph; import org.xbib.graphics.pdfbox.layout.font.BaseFont; import java.io.FileOutputStream; -import java.io.OutputStream; public class LinksTest { @@ -51,22 +50,16 @@ public class LinksTest { Paragraph paragraph4 = new Paragraph(); paragraph4.addMarkup("\n\n{anchor:hello}Here{anchor} comes the internal anchor named *hello*\n\n", 15, BaseFont.COURIER); - document.add(paragraph1); document.add(paragraph3); document.add(paragraph1); document.add(paragraph2); document.add(paragraph1); document.add(paragraph3); - document.add(paragraph4); - document.add(paragraph2); document.add(paragraph1); document.add(paragraph1); - - final OutputStream outputStream = new FileOutputStream("build/links.pdf"); - document.render().save(outputStream); - + document.render().save(new FileOutputStream("build/links.pdf")).close(); } } diff --git a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/Listener.java b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/ListenerTest.java similarity index 95% rename from graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/Listener.java rename to graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/ListenerTest.java index cf16577..ff50ba5 100644 --- a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/Listener.java +++ b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/ListenerTest.java @@ -13,9 +13,8 @@ import org.xbib.graphics.pdfbox.layout.text.TextFlow; import org.xbib.graphics.pdfbox.layout.text.TextFlowUtil; import org.xbib.graphics.pdfbox.layout.text.TextSequenceUtil; import java.io.FileOutputStream; -import java.io.OutputStream; -public class Listener { +public class ListenerTest { @Test public void test() throws Exception { @@ -71,9 +70,6 @@ public class Listener { document.add(paragraph); document.add(paragraph); document.add(paragraph); - - final OutputStream outputStream = new FileOutputStream("build/listener.pdf"); - document.render().save(outputStream); - + document.render().save(new FileOutputStream("build/listener.pdf")).close(); } } diff --git a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/LowLevelText.java b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/LowLevelText.java index 328a543..6d9fc0d 100644 --- a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/LowLevelText.java +++ b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/LowLevelText.java @@ -19,7 +19,6 @@ import org.xbib.graphics.pdfbox.layout.text.TextSequenceUtil; import org.xbib.graphics.pdfbox.layout.text.annotations.AnnotationDrawListener; import java.awt.Color; import java.io.FileOutputStream; -import java.io.OutputStream; public class LowLevelText { @@ -103,11 +102,8 @@ public class LowLevelText { annotationDrawListener.afterPage(null); contentStream.close(); - annotationDrawListener.afterRender(); - - final OutputStream outputStream = new FileOutputStream("build/lowleveltext.pdf"); - pdDocument.save(outputStream); + pdDocument.save(new FileOutputStream("build/lowleveltext.pdf")); pdDocument.close(); } } diff --git a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/Margin.java b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/MarginTest.java similarity index 93% rename from graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/Margin.java rename to graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/MarginTest.java index b14b299..371d9ab 100644 --- a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/Margin.java +++ b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/MarginTest.java @@ -7,9 +7,8 @@ import org.xbib.graphics.pdfbox.layout.elements.render.VerticalLayoutHint; import org.xbib.graphics.pdfbox.layout.text.Alignment; import org.xbib.graphics.pdfbox.layout.font.BaseFont; import java.io.FileOutputStream; -import java.io.OutputStream; -public class Margin { +public class MarginTest { @Test public void test() throws Exception { @@ -50,9 +49,6 @@ public class Margin { paragraph.addText(text3, 11, BaseFont.HELVETICA); document.add(paragraph, new VerticalLayoutHint(Alignment.RIGHT, 150, 150, 20, 0)); - - final OutputStream outputStream = new FileOutputStream("build/margin.pdf"); - document.render().save(outputStream); - + document.render().save(new FileOutputStream("build/margin.pdf")).close(); } } diff --git a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/MarkupTest.java b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/MarkupTest.java index 448637f..c2b546d 100644 --- a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/MarkupTest.java +++ b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/MarkupTest.java @@ -68,6 +68,6 @@ public class MarkupTest { paragraph.addMarkup(text1, 11, BaseFont.TIMES); document.add(paragraph); - document.render().save( new FileOutputStream("build/markup.pdf")); + document.render().save( new FileOutputStream("build/markup.pdf")).close(); } } diff --git a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/MultiplePagesTest.java b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/MultiplePagesTest.java index ac4cfa6..99c48b9 100644 --- a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/MultiplePagesTest.java +++ b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/MultiplePagesTest.java @@ -68,6 +68,6 @@ public class MultiplePagesTest { document.add(paragraph2); document.add(paragraph2); - document.render().save(new FileOutputStream("build/multiplepages.pdf")); + document.render().save(new FileOutputStream("build/multiplepages.pdf")).close(); } } diff --git a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/RotationTest.java b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/RotationTest.java index 335b255..fbe5f0f 100644 --- a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/RotationTest.java +++ b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/RotationTest.java @@ -108,6 +108,6 @@ public class RotationTest { document.add(paragraph2); document.add(paragraph3); - document.render().save(new FileOutputStream("build/rotation.pdf")); + document.render().save(new FileOutputStream("build/rotation.pdf")).close(); } } diff --git a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/Section.java b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/Section.java index d4961e2..7bbe3b4 100644 --- a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/Section.java +++ b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/Section.java @@ -2,12 +2,11 @@ package org.xbib.graphics.pdfbox.layout.test; import org.xbib.graphics.pdfbox.layout.elements.Paragraph; import org.xbib.graphics.pdfbox.layout.font.BaseFont; -import java.io.IOException; public class Section extends Paragraph { private final int number; - public Section(int number) throws IOException { + public Section(int number) { super(); this.number = number; addMarkup(String.format("*Section %d", number), 16, BaseFont.TIMES); diff --git a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/script/ScriptTest.java b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/script/ScriptTest.java index bd905f3..72f76b4 100644 --- a/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/script/ScriptTest.java +++ b/graphics-pdfbox-layout/src/test/java/org/xbib/graphics/pdfbox/layout/test/script/ScriptTest.java @@ -11,11 +11,14 @@ public class ScriptTest { @Test public void script() throws Exception { - Settings settings = Settings.settingsBuilder().loadFromResource("json", getClass().getResourceAsStream("script.json")) + Settings settings = Settings.settingsBuilder() + .loadFromResource("json", getClass().getResourceAsStream("script.json")) .build(); Engine engine = new Engine(); engine.execute(settings); - Document document = engine.getState().document; - document.render().save(new FileOutputStream("build/script.pdf")); + for (Document document : engine.getState().getDocuments()) { + document.render().save(new FileOutputStream("build/script.pdf")).close(); + } + engine.close(); } } diff --git a/graphics-pdfbox-layout/src/test/resources/org/xbib/graphics/pdfbox/layout/test/script/script.json b/graphics-pdfbox-layout/src/test/resources/org/xbib/graphics/pdfbox/layout/test/script/script.json index d3afb2e..13d67ce 100644 --- a/graphics-pdfbox-layout/src/test/resources/org/xbib/graphics/pdfbox/layout/test/script/script.json +++ b/graphics-pdfbox-layout/src/test/resources/org/xbib/graphics/pdfbox/layout/test/script/script.json @@ -23,11 +23,35 @@ } }, "paragraph2": { + "text1": { + "value": "Hello World", + "size": 24, + "font": "HELVETICA" + } + }, + "paragraph3": { + "text1": { + "value": "Hello World", + "size": 24, + "font": "HELVETICA" + } + }, + "paragraph4": { + "type": "horizontalruler" + }, + "paragraph5": { "text1": { "value": "*Hello World*", "size": 16, "font": "NOTOSANS" } }, + "paragraph6": { + "text1": { + "value": "*Hello World*", + "size": 20, + "font": "NOTOSANS" + } + } } }