如何在纯文本输出格式(.txt)的记录之间绘制线条?

时间:2016-03-11 14:13:36

标签: java jasper-reports plaintext

我的问题是,当我尝试将jasperprint导出到文本时,虽然它与pdf文件一起使用,但行/矩形不会出现在.txt文件中。

我试图修改笔宽但没有出现。

我的代码是:

JRDesignLine ltest = new JRDesignLine();
ltest.setBackcolor(Color.black);
ltest.setForecolor(Color.black);
ltest.setX(10);
ltest.setY(200);
ltest.setMode(JRDesignStaticText.MODE_OPAQUE);
ltest.setWidth(500);
ltest.setHeight(10);
ltest.setPen(JRDesignLine.FILL_SOLID);
bandHeader.addElement(ltest);

请提出任何建议。

1 个答案:

答案 0 :(得分:0)

您在询问plain text format,这很简单。

问题

JRTextExporter正在跳过 JRLine 元素并且不会绘制边框( JRLineBox )。

JRTextExporter的片段

protected void exportElements(List<JRPrintElement> elements) {
    for (int i = 0; i < elements.size(); i++) {
        Object element = elements.get(i);
        if (element instanceof JRPrintText) {
            exportText((JRPrintText) element);
        } else if (element instanceof JRPrintFrame) {
            JRPrintFrame frame = (JRPrintFrame) element;
            setFrameElementsOffset(frame, false);
            try {
                exportElements(frame.getElements());
            } finally {
                restoreElementOffsets();
            }
        }
    }

正如您所看到的,只会打印 JRPrintText protected void exportText(JRPrintText)方法对Boxes一无所知。您可以将它与 JRRtfExporter.exportText(JRPrintText)方法的来源进行比较。

解决方案

  • 您可以尝试使用 rtf 输出格式( JRRtfExporter
  • 另一个想法(不优雅,有点难看)是使用 staticText textField (有或没有条件)来模拟边框。
  • 您可以尝试设置net.sf.jasperreports.export.text.line.separator属性。例如,您可以设置值:&#xD;&#xA;_________________________________________________________&#xD;&#xA;。它在开始时是\ r \ n,在行尾有一些下划线和\ r \ n。报告属性可以是这样的:
<property name="net.sf.jasperreports.export.text.page.height" value="66"/>
<property name="net.sf.jasperreports.export.text.page.width" value="94"/>
<property name="net.sf.jasperreports.export.text.line.separator" value="&#xD;&#xA;_________________________________________________________&#xD;&#xA;"/>