[英]PDF Clown: creating lists
I'm looking to programmatically create PDF files using PDF Clown in Java. 我希望使用Java中的PDF Clown以编程方式创建PDF文件。 I require the use of lists, with bullet points. 我需要使用带有要点的列表。 Is this possible using the current stable release of PDF Clown? 使用当前稳定的PDF Clown版本可以做到这一点吗? If so, which class should I look at in the API Documentation? 如果是这样,我应该在API文档中查看哪个类? I have search for lists in the documentation however there is no mention of it. 我在文档中搜索列表,但是没有提及。
The only way I can think of doing this without specific support is by using a BlockComposer with an X offset, this however would not have Bullet points. 在没有特殊支持的情况下,我可以想到的唯一方法是使用具有X偏移量的BlockComposer,但是,它没有Bullet点。 Any solutions? 有什么办法吗?
I realise that this feature is planned for the next release of PDF Clown (0.2.0) however it is too far away for me to wait for it. 我意识到该功能已计划在下一版的PDF Clown(0.2.0)中使用,但它离我太远了,无法等待它。
import org.pdfclown.documents.Document;
import org.pdfclown.documents.contents.colors.DeviceRGBColor;
import org.pdfclown.documents.contents.composition.*;
. . .
DocumentComposer composer = new DocumentComposer(document);
/*
We decide that table cells sport a solid border by default (analogous
to CSS styles defined through an element type selector).
*/
composer.getStyle(Cell.class)
.withBorder(new Border(
new QuadColor(new DeviceRGBColor(0, 0, 0)),
new QuadBorderStyle(BorderStyleEnum.Solid),
new QuadLength(new Length(1)),
new QuadCornerRadius()))
.withPadding(new QuadLength(new Length(5)));
/*
The list will be included in a section.
*/
Section section = new Section("Hello World, this is PDF Clown!");
/*
This is the actual list composition.
*/
List list = new List(
new ListItem("Item 1"),
new ListItem("Item 2"),
new ListItem(
/* We decide that this list item has an arbitrary 5pt margin. */
new Style().withMargin(new QuadLength(new Length(5))),
"Item 3 (margin: 5pt)"
),
new ListItem("Item 4"),
new ListItem("Item 5"),
new ListItem(
/* We decide that this list item has a custom background color, border and padding. */
new Style()
.withBackground(new Background(new DeviceRGBColor(252f/255, 232f/255, 131f/255)))
.withBorder(new Border(
new QuadColor(new DeviceRGBColor(218f/255, 165f/255, 32f/255)),
new QuadBorderStyle(BorderStyleEnum.Dotted),
new QuadLength(new Length(2)),
new QuadCornerRadius(new Size(5))
))
.withPadding(new QuadLength(new Length(10))),
new Paragraph("Item 6 (background, border, padding test + nested table)"
+ "\nLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor "
+ "incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud "
+ "exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure "
+ "dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. "
+ "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt "
+ "mollit anim id est laborum."),
/* Nested table. */
new Table(
new Row(
new Cell("Cell1,1"),
new Cell("Cell1,2"),
new Cell("Cell1,3"),
new Cell("Cell1,4")
),
new Row(
new Cell("Cell2,1"),
new Cell("Cell2,2").withColSpan(2),
new Cell("Cell2,4")
)
)
),
new ListItem(
new Paragraph("Item 7 (sublist test)"),
/* Nested list. */
new List(
/* We decide this nested list sports circle markers. */
new Style().withListStyle(new ListStyle(ListStyleTypeEnum.Circle)),
new ListItem("Sublist Item 1"),
new ListItem(
new Paragraph("Sublist Item 2 (Sub-sublist with multiple custom markers mimicking an ordered list)"),
/* Level-2 nested list (custom ordered markers). */
new List(
/*
We decide this nested list sports a set of custom numerical symbols mapped
as octal codes to ZapfDingbats character set (see PDF Reference 1.7, § D.5, http://www.adobe.com/devnet/pdf/pdf_reference.html).
*/
new Style().withListStyle(new ListStyle(new char[]{0312, 0313, 0314, 0315, 0316, 0317, 0320, 0321, 0322})),
new ListItem("Sub-sublist Item 1"),
new ListItem("Sub-sublist Item 2"),
new ListItem("Sub-sublist Item 3"),
new ListItem("Sub-sublist Item 4"),
new ListItem("Sub-sublist Item 5")
)
),
new ListItem("Sublist Item 3"),
new ListItem(
new Paragraph("Sublist Item 4 (Sub-sublist with decimal markers)"),
/* Level-2 nested list (decimal markers). */
new List(
new Style().withListStyle(new ListStyle(ListStyleTypeEnum.Decimal)),
new ListItem("Sub-sublist Item 1"),
new ListItem(
new Paragraph("Sub-sublist Item 2 (Sub-sub-sublist with lower-latin markers)"),
/* Level-3 nested list (lower-latin markers). */
new List(
new Style().withListStyle(new ListStyle(ListStyleTypeEnum.LowerLatin)),
new ListItem("Sub-sub-sublist Item 1"),
new ListItem("Sub-sub-sublist Item 2"),
new ListItem("Sub-sub-sublist Item 3"),
new ListItem("Sub-sub-sublist Item 4"),
new ListItem("Sub-sub-sublist Item 5")
)
),
new ListItem("Sub-sublist Item 3"),
new ListItem("Sub-sublist Item 4"),
new ListItem("Sub-sublist Item 5")
)
),
new ListItem("Sublist Item 5")
),
new Paragraph("End of Item 7")
),
new ListItem("Item 8")
);
section.add(list);
composer.show(section);
composer.close();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.