2012-01-03 18 views
0

こんにちは私は、javaを使用してpdfファイルを作成しています。私はこのような出力が必要です:Javaを使用したPDF作成

t 
h this is text 1 
i this is text 2 
s                  
i 
s 
h 
t 
t 

これは、テキスト形式の外のテキストがあることを意味します。私はこのようなコードを書く:

PdfWriter.getInstance(document, new FileOutputStream("check.pdf")); 
document.open(); 
Font cellFont = FontFactory.getFont(FontFactory.TIMES_BOLD, 6, Font.BOLD); 
PdfPTable table = new PdfPTable(8); 
table.getDefaultCell().setBorder(1); 
table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER); 
PdfPCell cell = new PdfPCell(new Phrase("This is the text 1", cellFont)); 
cell.setColspan(8); 
cell.setBorder(0); 
cell.setHorizontalAlignment(3); 
table.addCell(cell); 
cell = new PdfPCell(new Phrase("This is the text 2", cellFont)); 
cell.setColspan(8); 
cell.setBorder(0); 
cell.setHorizontalAlignment(3); 
table.addCell(cell); 

document.add(table); 
document.close(); 

このように、この出力:

this is text 1 
this is text 2 

は、いずれかの方法を限られた情報から、自分の希望する出力

+3

どのような情報に左側縦書きテキストをベースに?私はあなたのコード内でそれを参照してください – AlanFoster

+0

テーブルの左側にあるテキストがある:ここでは "これはhtt"私はこの方法で私のテーブルの外にこのテキストを追加する方法を知らない – tanvir

答えて

2

を取得するには、このコードを変更する教えてもらえます、私はあなたの要件を完全に理解していません。とにかく、ほとんどの場合、回避策を見つけて必要なものを達成することができます。あなたが必要とするのは有効な方法ではない有効な行方法です。この行は、表のセル内に表をネストすることによって実現できます。私は以下のように、高速の例をコード化:

String text1 = "This is the text 1"; 
String text2 = "This is the text 2"; 

Document document = new Document(); 

PdfWriter.getInstance(document, new FileOutputStream(fileName)); 
document.open(); 
Font cellFont = FontFactory.getFont(FontFactory.TIMES_BOLD, 14, Font.BOLD); 

PdfPTable table = new PdfPTable(8); 
table.getDefaultCell().setBorder(0); 


PdfPTable nestedTable1 = new PdfPTable(1); 
nestedTable1.getDefaultCell().setBorder(0); 
nestedTable1.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER); 
nestedTable1.getDefaultCell().setVerticalAlignment(Element.ALIGN_CENTER); 

for(int i=0;i<text1.length();i++) { 
    PdfPCell nestedCell = new PdfPCell(new Phrase("" + text1.charAt(i), cellFont)); 
    nestedCell.setBorder(0); 
    nestedTable1.addCell(nestedCell); 
} 

PdfPTable nestedTable2 = new PdfPTable(1); 
nestedTable2.getDefaultCell().setBorder(0); 
nestedTable2.getDefaultCell().setHorizontalAlignment(Element.ALIGN_LEFT); 
nestedTable2.getDefaultCell().setVerticalAlignment(Element.ALIGN_CENTER); 

PdfPCell nestedCell1 = new PdfPCell(new Phrase(text1, cellFont)); 
nestedCell1.setBorder(0); 
PdfPCell nestedCell2 = new PdfPCell(new Phrase(text2, cellFont)); 
nestedCell2.setBorder(0); 

nestedTable2.addCell(nestedCell1); 
nestedTable2.addCell(nestedCell2); 

PdfPCell cell1 = new PdfPCell(nestedTable1); 
cell1.setBorder(0); 
cell1.setColspan(1); 

PdfPCell cell2 = new PdfPCell(nestedTable2); 
cell2.setBorder(0); 
cell2.setColspan(7); 

table.addCell(cell1); 
table.addCell(cell2); 

document.add(table); 
document.close(); 

とPDF出力は次のようになります。 enter image description here

+0

あなたの返信ありがとう。私は実際にこのような出力が必要です。これは私の要件のサンプルです。私はこの種の出力が必要です。そのため、私のメインテーブルでは、この情報をpdfファイルの中央に追加する必要があります。私はすでにファイルを作成しましたが、これを行うことはできません。これはサンプル出力です[リンク] http://imageshack.us/photo/my-images/339/screenshoot.png/ – tanvir

+0

tanvir、上のコードのロジックを使用している場合、次のようにそのレポートを作成できます。あなたの上記のリンク。多くのレポートを生成する必要がある場合は、Jasper Reportsのようなレポート・フレームワークを検討してください。そこでは、iReportレポート・デザイナーでレポートを設計し、Jasperレポート・エンジンを呼び出してレポートを生成することができます。 – bchetty

+0

@tanvirこれは非常に小さい画像です。より大きな例を投稿できますか? – AlanFoster

関連する問題