All Downloads are FREE. Search and download functionalities are using the official Maven repository.

gutenberg.itext.pegdown.ParaNodeProcessor Maven / Gradle / Ivy

There is a newer version: 1.3.0
Show newest version
package gutenberg.itext.pegdown;

import com.itextpdf.text.Chunk;
import com.itextpdf.text.Element;
import com.itextpdf.text.Paragraph;
import org.pegdown.ast.Node;

import java.util.List;

/**
 * @author @aloyer
 */
public class ParaNodeProcessor extends Processor {

    public static final Object PARAGRAPH_SPACING_BEFORE = "paragraph-spacing-before";
    public static final Object PARAGRAPH_SPACING_AFTER = "paragraph-spacing-after";

    @Override
    public void process(int level, Node node, InvocationContext context) {
        List subs = context.collectChildren(level, node);
        Paragraph p = new Paragraph();
        for (Element sub : subs) {
            p.add(discardNewline(sub));
        }

        Float spacingBefore = context.iTextContext().getNullable(PARAGRAPH_SPACING_BEFORE).or(5f);
        Float spacingAfter = context.iTextContext().getNullable(PARAGRAPH_SPACING_AFTER).or(5f);
        p.setSpacingBefore(spacingBefore);
        p.setSpacingAfter(spacingAfter);
        context.append(p);
    }

    private static Element discardNewline(Element sub) {
        if (sub instanceof Chunk) {
            Chunk c = (Chunk) sub;
            if (c.getContent().equals("\n")) {
                return new Chunk(" ");
            }
        }
        return sub;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy