如何将文本换行以使其显示在带有飞碟的单个列中?

时间:2016-11-02 01:44:18

标签: pdf flying-saucer

我有发票的文档规范,其中一个元素垂直显示文本。像这样:

H   123 Elm St
O   PO Box 1
M   Anytown, ST
E   USA

我尝试使用css转换来旋转文本,使其侧向读取。我还尝试使用列宽为1的表,然后使用不同列中的地址。在浏览器中,它可以正确呈现。当我通过ITextRenderer运行它时,它不会包装字符(我在每个字符之间使用空格,因此它应该换行)。我在转换后尝试了这个并且旋转产生了相同的结果。

我也试过了表格布局:固定; css设置,没有运气。我最终得到了这个:

enter image description here

1 个答案:

答案 0 :(得分:0)

Flyingsaucer不支持css transform属性。

但是将文本放在一个窄列中的选项应该可行。

以下是一个例子:

<html>
<head>
    <style>
        td{border:1px solid blue}   
        .first{width:5mm;}
    </style>
</head>
<body>
    <table>
        <tr>
            <td class="first">H O M E</td>
            <td>
                123 Elm StO<br />
                PO Box 1<br />
                Anytown, ST<br />
                USA
            </td>
        </tr>
    </table>
</body>
</html>

它产生以下结果: PDF result

我使用飞碟9.1,java代码是:

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

import org.xhtmlrenderer.pdf.ITextRenderer;

import com.lowagie.text.DocumentException;

public class StackOverflow {
    public static void main(String[] args) throws IOException, DocumentException {

        String in = "so1.html";
        String out = "so1.pdf";

        File f = new File(in);
        String url = f.toURI().toURL().toString();

        createPDF(url, out);
    }

    public static void createPDF(String url, String pdf) throws IOException, DocumentException {
        try (OutputStream os = new FileOutputStream(pdf)) {
            ITextRenderer renderer = new ITextRenderer();
            renderer.setDocument(url);
            renderer.layout();
            renderer.createPDF(os);
        }
    }
}