Saltar al contenido

¿Cómo agregar sangría en la lista de viñetas?

Ten en cuenta que en las ciencias un problema casi siempere suele tener diferentes resoluciones, así que mostramos lo más óptimo y eficiente.

Solución:

Esta sería una forma rápida de hacer una lista de viñetas sin usar attribute tag html, que ha definido correctamente como no compatible con jasper-reports.

Usa el símbolo unicode u2022 para representar la viñeta, con el siguiente texto de ejemplo (n es salto de línea)

"u2022 Some text on line 1 that gets longer to wrapnu2022 This is text on line 2"

Entonces puedes configurar leftPadding="10" y firstLineIndent="-10" como se describe en Sangría en PDF generado usando JasperReports

Ejemplo jrxml



    
    
        
    
        <band height="44" splitType="Stretch">
            <textField isStretchWithOverflow="true">
                <reportElement x="0" y="0" width="110" height="40" uuid="3563a40d-d80e-4e09-9d84-d4f1779c1895"/>
                <box topPadding="0" leftPadding="10" bottomPadding="0" rightPadding="0"/>
                <textElement markup="none">
                    <paragraph lineSpacing="Single" firstLineIndent="-10" leftIndent="0" spacingBefore="0"/>
                </textElement>
                <textFieldExpression><![CDATA["u2022 Some text on line 1 that gets longer to wrapnu2022 This is text on line 2"]]></textFieldExpression>
            </textField>
        </band>
    

Producción

resultado

Probablemente, sin embargo, si fuera yo, habría convertido el texto en un
JRDataSource
y usé el jr:list componente. Para obtener un ejemplo sobre cómo crear una fuente de datos a partir de una cadena, consulte este artículo ¿Cómo convertir una cadena separada en un diseño de tabla? y si, en cambio, se pregunta cómo puede manipular su texto para insertar el Unicode, consulte ¿Cómo puedo reemplazar un carácter con una imagen Unicode?

Editar agregando la solución preferida por mí que evita firstLineIndent="-10" cortar a tajos

La solución es convertir el string en un JRDatasource en este ejemplo

 new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource(java.util.Arrays.asList($PtestText.split("n")))

y luego usó el jr:list, con

Jrxml completo



    
    
        
            
        
    
    
        
    
    
        
    
        <band height="34" splitType="Stretch">
            <componentElement>
                <reportElement x="0" y="0" width="170" height="20" uuid="a9d62b3a-cdad-4c44-a3e6-8e7688986380"/>
                <jr:list xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" printOrder="Vertical">
                    <datasetRun subDataset="ListDataset" uuid="a21cd89b-dd5a-4135-90e0-a84ef83bd9dc">
                        <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource(java.util.Arrays.asList($PtestText.split("n")))]]></dataSourceExpression>
                    </datasetRun>
                    <jr:listContents height="20" width="170">
                        <ellipse>
                            <reportElement x="13" y="4" width="4" height="4" backcolor="#000000" uuid="c2a202b7-ca0f-4ce4-a2d8-35b314f8e1ee">
                                <property name="com.jaspersoft.studio.unit.width" value="pixel"/>
                                <property name="com.jaspersoft.studio.unit.height" value="pixel"/>
                            </reportElement>
                        </ellipse>
                        <textField isStretchWithOverflow="true">
                            <reportElement x="30" y="0" width="80" height="20" uuid="31b05be1-9d89-4928-aec8-095e15e66711"/>
                            <textElement textAlignment="Left"/>
                            <textFieldExpression><![CDATA[$F_THIS]]></textFieldExpression>
                        </textField>
                    </jr:listContents>
                </jr:list>
            </componentElement>
        </band>
    

El resultado es el mismo que el anterior, pero no estamos pirateando con valores negativos que podrían crear problemas en ciertas exportaciones.

Puntuaciones y comentarios

Si estás de acuerdo, eres capaz de dejar una división acerca de qué le añadirías a esta división.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *