Obtenga el ancho absoluto de la columna PdfPTable (iText)

¿Cómo obtener el ancho absoluto de una columna de iText cuando las columnas de la tabla se especifican con su tamaño relativo ?

Lo que probé

Especifiqué 3 columnas con su ancho relativo como flotante como este:

PdfPCell cell2;
PdfPTable table2 =  new PdfPTable(new float[]{(float) 4.5, (float) 0.5, 9});
table2.setWidthPercentage(100);

Lo que obtuve

Traté de usar table2.getAbsoluteWidths()[2]pero el resultado es flotante 0.0.

Lo que esperaba

Quiero obtener el ancho absoluto (que se maximizó) para cada columna, después de que el ancho de la tabla se haya calculado dinámicamente en el PDF.

----------------------- EDITAR ----------------------

En realidad, necesito el ancho de una columna antes de agregar el documento y luego reemplazar mi restricción de variable flotante de código duro .

Tengo muchas cadenas de datos y quiero establecerlas en otra columna cuando obtengo la página de ancho máximo con división en la función restrictWidthOfFont

String fullAlamatPP = "test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test test ";

float restrictions = (float) 330.12103; // this is width of a column from table

String alamatSesuaiKtpPP[] = restrictWidthOfFont(fullAlamatPP, font_body, restrictions);

Phrase p_alamat1_ct = new Phrase(alamatSesuaiKtpPP[0], font_body);
p_alamat1_ct.add(dottedline);
cell2 = new PdfPCell(p_alamat1_ct);
cell2.setBorder(PdfPCell.NO_BORDER);
table2.addCell(cell2);

Phrase p_alamat2_ct = new Phrase(alamatSesuaiKtpPP[1], font_body);
p_alamat2_ct.add(dottedline);
cell2 = new PdfPCell(p_alamat2_ct);
cell2.setBorder(PdfPCell.NO_BORDER);
table2.addCell(cell2);    

private static String[] restrictWidthOfFont(String character, Font font, float restrictions) {
        String results[];
        results = new String[] {"",""};
        String concatChar = " ";
        float widthOfString = 0;
        for (int i = 0; i < character.length();i++) {
            concatChar += character.charAt(i); 
            widthOfString = font.getCalculatedBaseFont(true).getWidthPoint(concatChar, font.getCalculatedSize());
//                System.out.println("widthOfString " + widthOfString);
            if (widthOfString > restrictions) {
                results[0] = concatChar.substring(0, concatChar.length() - 1);
                results[1] = character.substring(i, character.length());
                break;
            }
        }

        if (results[0] == "") {
            results[0] = character;
        }
        return results;
}    

que es posible obtener el ancho de una columna antes de agregar el documento de la tabla?

Respuesta 1

Quiero crear una red como stackexchange solo con subdominios. por ejemplo, subdominio1.test.com subdominio2.test.com subdominio3.test.com subdominio4.test.com También quiero tener todos los sitios web en ...

Quiero una aplicación que arroje una excepción desde un botón. La excepción debería cerrar la aplicación (excepción no controlada). (Necesito eso para verificar mi código en Runtime.getRuntime (). AddShutDownHook () ...

Cada vez que quiero verificar mi aplicación, necesito compilarla, cargarla en mi servidor y ejecutarla. Toma mucho tiempo Y no puedo depurar. ¿Hay alguna forma más efectiva de hacerlo? O incluso depurar mi ...

Leí un artículo sobre la redefinición correcta equals / hashCode: https://vladmihalcea.com/how-to-implement-equals-and-hashcode-using-the-jpa-entity-identifier/ Estas anulaciones se realizan en orden no ... .