3

多数の列を含む html があります (このリンクでサンプルを見つけることができます)

空飛ぶ円盤( iText 2.1.X で動作するように再コンパイルされたjar リンク)を使用して PDF に変換しようとすると、生成された PDFの列が切り捨てられます。

空飛ぶ円盤を作成して、テーブルを壊したり、html コンテンツに応じてページの幅を広げたりする方法はありますか?

これは私が使用しているコードです

String doc = file.toURI().toURL().toString();
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(doc);
String outputFile = "test.pdf";
OutputStream os = new FileOutputStream(outputFile);
renderer.layout();
renderer.createPDF(os);
os.flush();
os.close();

fileは、変換しようとしている html です

4

2 に答える 2

1

必要なサイズがわかっている場合は、ページサイズを変更できます。

@pageこれにはルールを使用して
ください: 注: この例では、Jsoupを使用して html で作業しています(コメントを参照)。

/*
 * This part is optional - Jsoup is used for cleaning the html and inserting the style tag into the head.
 * You can use everything else for doing this.
 * 
 * If you will use Jsoup, make shure you set proper charset (2nd parameter).
 * 
 * Note: this is NOT a W3C Document but a Jsoup one.
 */
Document doc = Jsoup.parse(file, null);

/*
 * Here you specify the pagesize you need (size: with height).
 * Inserting this html is the key part!
 */
doc.head().append("<style type=\"text/css\"><!--@page { size:50.0cm 20.0cm; }--></style>");


ITextRenderer renderer = new ITextRenderer();

/*
 * This part ist jsoup related. 'doc.toString()' does nothing else than
 * returning the Html of 'doc' as a string.
 * 
 * You can set it like in your code too.
 */
renderer.setDocumentFromString(doc.toString());

final String outputFile = "test.pdf";
OutputStream os = new FileOutputStream(outputFile);
renderer.layout();
renderer.createPDF(os);
os.flush();
os.close();

このコードを使用すると、テーブル全体が横向きのページにある Pdf を取得できます (必要に応じて幅/高さを変更する必要がある場合があります。

于 2012-11-27T19:46:18.847 に答える