はい、 JasperReportsでデザインを実現できます。
タスクを解決する手順。
最初のステップ。行の文字数とページの行数が必要です。この目的のために、 net.sf.jasperreports.export.text.page.widthとnet.sf.jasperreports.export.text.page.height
レポートのプロパティの
ペアを使用できます。最初のプロパティの代わりに、レポートのプロパティのnet.sf.jasperreports.export.text.character.widthとnet.sf.jasperreports.export.text.character.heightのペアを使用することもできます。
第二段階。ページ形式のサイズ (たとえば、ピクセル単位。マージンのない A4 の場合: 555x802) がわかっているので、行の文字数とページの行数を設定します。staticTextおよびtextField要素の位置 ( x、y座標、および要素の幅と高さのプロパティ)の正確な値を計算して設定できます。
標本、見本
サンプルデータソース
csvデータソース ( points.csvファイル)を使用しました。
USER_NAME,LAST_ACCESSED,IS_ACTIVE,POINTS
John Doe,10/26/2013,Y,87.9
Sarah Connor,10/23/2013,Y,80.5
Viktor Navorski,10/14/2013,Y,95.5
Forrest Gump,10/25/2013,Y,97.0
Raymond Babbitt,10/24/2013,Y,88.5
Thomas Crown,10/24/2013,Y,88.0
Danny Ocean,09/30/2013,Y,90.5
レポートのデザイン
マージンを削除し、A4レポートの形式 (555x802 ピクセル) を設定しました。

jrxml ファイル
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="text_output" language="groovy" pageWidth="555" pageHeight="802" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="9a0b1db2-1ed0-44e1-960b-4626cea0097d">
<property name="net.sf.jasperreports.export.text.page.width" value="80"/>
<property name="net.sf.jasperreports.export.text.page.height" value="40"/>
<field name="USER_NAME" class="java.lang.String"/>
<field name="LAST_ACCESSED" class="java.lang.String"/>
<field name="IS_ACTIVE" class="java.lang.String"/>
<field name="POINTS" class="java.lang.String"/>
<columnHeader>
<band height="43" splitType="Stretch">
<staticText>
<reportElement uuid="d065f8ed-0c05-47d0-a679-a392c9cfabe5" x="0" y="0" width="152" height="20"/>
<textElement/>
<text><![CDATA[USER_NAME]]></text>
</staticText>
<staticText>
<reportElement uuid="573550a9-5fc9-41ee-ae4f-7b550868c75d" x="152" y="0" width="143" height="20"/>
<textElement/>
<text><![CDATA[LAST_ACCESSED]]></text>
</staticText>
<staticText>
<reportElement uuid="4b1f5b5c-4c61-4159-9357-041fd8e3e775" x="295" y="0" width="138" height="20"/>
<textElement/>
<text><![CDATA[IS_ACTIVE]]></text>
</staticText>
<staticText>
<reportElement uuid="1c851f50-9ace-4e30-be1e-7d5454127db8" x="433" y="0" width="103" height="20"/>
<textElement/>
<text><![CDATA[POINTS]]></text>
</staticText>
<staticText>
<reportElement uuid="7e358a83-b348-40ca-b6f4-009d6bed4b24" x="0" y="20" width="100" height="23"/>
<textElement/>
<text><![CDATA[----------------------]]></text>
</staticText>
<staticText>
<reportElement uuid="523a7abd-0fbd-4b63-b8d5-2ed78ee795cc" x="295" y="20" width="100" height="23"/>
<textElement/>
<text><![CDATA[---------]]></text>
</staticText>
<staticText>
<reportElement uuid="7ebe2ec7-9450-4fdf-b99a-48af5fe3ce49" x="152" y="20" width="100" height="23"/>
<textElement/>
<text><![CDATA[-------------]]></text>
</staticText>
<staticText>
<reportElement uuid="155d3972-9d99-4d3b-bb41-05f08dcdd5fa" x="433" y="20" width="100" height="23"/>
<textElement/>
<text><![CDATA[--------]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="20" splitType="Stretch">
<textField>
<reportElement uuid="652256e2-0f1e-4848-b1d0-d064caaa5020" x="0" y="0" width="152" height="20"/>
<textElement/>
<textFieldExpression><![CDATA[$F{USER_NAME}]]></textFieldExpression>
</textField>
<textField>
<reportElement uuid="380af714-4dbd-4e0f-ae23-bfada0449a2f" x="152" y="0" width="143" height="20"/>
<textElement/>
<textFieldExpression><![CDATA[$F{LAST_ACCESSED}]]></textFieldExpression>
</textField>
<textField>
<reportElement uuid="752c0f18-2dea-4209-bd0d-d787d8c462a8" x="295" y="0" width="63" height="20"/>
<textElement textAlignment="Right"/>
<textFieldExpression><![CDATA[$F{IS_ACTIVE}]]></textFieldExpression>
</textField>
<textField>
<reportElement uuid="40807ad0-58a4-42b7-9636-04f01c0c3bf5" x="433" y="0" width="54" height="20"/>
<textElement textAlignment="Right"/>
<textFieldExpression><![CDATA[$F{POINTS}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
結果 - JRTextExporter 経由で生成された txt ファイル
出力ファイルの生成にiReportを使用しました。このtxtファイルの内容は次のとおりです。

Java コードの使用
Javaコードを使用する場合、 JRTextExporterに次のパラメータを設定する必要があります: JRTextExporterParameter.PAGE_WIDTHおよびJRTextExporterParameter.PAGE_HEIGHT
サンプルコード:
public static void generateReport() throws JRException {
JRCsvDataSource dataSource = new JRCsvDataSource(JRLoader.getLocationInputStream(csvFileName));
dataSource.setRecordDelimiter("\r\n");
dataSource.setUseFirstRowAsHeader(true);
dataSource.setColumnNames(new String[]{ "USER_NAME", "LAST_ACCESSED", "IS_ACTIVE", "POINTS"});
JasperReport jasperReport = JasperCompileManager.compileReport(reportSource);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, dataSource);
JRTextExporter exporter = new JRTextExporter();
exporter.setParameter(JRTextExporterParameter.PAGE_WIDTH, 80);
exporter.setParameter(JRTextExporterParameter.PAGE_HEIGHT, 40);
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, outputFileName);
exporter.exportReport();
}
このサンプルでは、データソースと同じcsvファイルを使用しました。
x 座標の計算方法
サンプルでは、2 番目の列を 23 個のシンボルで開始したいと考えています。わかりました、私のサンプルを見てみましょう。私たちが持っているもの:
- ページ幅は555ピクセルです
- 行の文字数は80です
この場合の 1 文字の幅は555/80=6,9375です。
2 列目の最初のシンボルの前に 22 個のシンボルがあります。22*6,9375=152,625ピクセルです。私のサンプルでは、2 番目の列ヘッダーのxプロパティに152を設定しました。私のサンプルでは、2 列目のヘッダーの最初のシンボルの位置は23です。
3 列目の計算値は43*6,9375=298,3125で、サンプルの実際のxは295です(3 列目は44シンボルの星)。
ご覧のとおり、計算は正確すぎます。
ノート:
テキスト ファイルへのエクスポートに関する情報は、テキストエクスポートのサンプルを参照してください。