Utiliser FloatingBox pour la mise en page PDF en Java
Aspose.PDF for Java utilise FloatingBox pour créer des conteneurs de texte réutilisables et des mises en page basées sur des colonnes.
Créer et ajouter une boîte flottante
Utilisez cet exemple lorsque le texte doit être placé à l’intérieur d’un conteneur flottant bordé.
- Créez un nouveau document PDF et ajoutez une page.
- Créez un
FloatingBox, définissez sa taille et sa bordure, puis ajoutez du contenu textuel. - Ajoutez la boîte à la page et enregistrez le document.
public static void createAndAddFloatingBox(Path outputFile) {
try (Document document = new Document()) {
Page page = document.getPages().add();
FloatingBox box = new FloatingBox(400, 30);
box.setBorder(new BorderInfo(BorderSide.All, 1.5f, Color.getDarkGreen()));
box.setNeedRepeating(false);
String phrase = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce quam odio, sollicitudin ac mauris vel, suscipit pellentesque nisi.";
box.getParagraphs().add(new TextFragment(phrase));
page.getParagraphs().add(box);
document.save(outputFile.toString());
}
}
Créer une mise en page multicolonne répétitive
Utilisez cet exemple lorsqu’un texte long doit s’étendre sur plusieurs colonnes à l’intérieur d’une seule boîte flottante.
- Créez une page et configurez les marges.
- Calculez les largeurs de colonne et configurez les paramètres de colonne
FloatingBox. - Ajoutez des fragments de texte répétés dans la zone et enregistrez le document.
public static void multiColumnLayout(Path outputFile) {
try (Document document = new Document()) {
Page page = document.getPages().add();
page.getPageInfo().setMargin(new MarginInfo(36, 18, 36, 18));
int columnCount = 3;
int spacing = 10;
double width = page.getPageInfo().getWidth()
- page.getPageInfo().getMargin().getLeft()
- page.getPageInfo().getMargin().getRight()
- (columnCount - 1) * spacing;
double columnWidth = width / 3;
FloatingBox box = new FloatingBox();
box.setNeedRepeating(true);
box.getColumnInfo().setColumnWidths(columnWidth + " " + columnWidth + " " + columnWidth);
box.getColumnInfo().setColumnSpacing(String.valueOf(spacing));
box.getColumnInfo().setColumnCount(3);
String phrase = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce quam odio, sollicitudin ac mauris vel, suscipit pellentesque nisi.";
for (int i = 0; i < 10; i++) {
box.getParagraphs().add(new TextFragment(phrase));
}
page.getParagraphs().add(box);
document.save(outputFile.toString());
}
}
Commencer chaque fragment comme premier élément d’une colonne
Utilisez cet exemple lorsque chaque fragment inséré doit commencer un nouveau segment de flux de colonne.
- Créez une page et configurez le multi-colonne
FloatingBox. - Créez des fragments de texte et marquez-les avec
setFirstParagraphInColumn(true). - Ajoutez la boîte à la page et enregistrez le PDF.
public static void multiColumnLayout2(Path outputFile) {
try (Document document = new Document()) {
Page page = document.getPages().add();
page.getPageInfo().setMargin(new MarginInfo(36, 18, 36, 18));
int columnCount = 3;
int spacing = 10;
double width = page.getPageInfo().getWidth()
- page.getPageInfo().getMargin().getLeft()
- page.getPageInfo().getMargin().getRight()
- (columnCount - 1) * spacing;
double columnWidth = width / 3;
FloatingBox box = new FloatingBox();
box.setNeedRepeating(true);
box.getColumnInfo().setColumnWidths(columnWidth + " " + columnWidth + " " + columnWidth);
box.getColumnInfo().setColumnSpacing(String.valueOf(spacing));
box.getColumnInfo().setColumnCount(3);
String phrase = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce quam odio, sollicitudin ac mauris vel, suscipit pellentesque nisi.";
for (int i = 0; i < 10; i++) {
TextFragment text = new TextFragment(phrase);
text.setFirstParagraphInColumn(true);
box.getParagraphs().add(text);
}
page.getParagraphs().add(box);
document.save(outputFile.toString());
}
}
Ajouter une boîte flottante avec une couleur d’arrière-plan
Utilisez cet exemple lorsque le conteneur flottant doit avoir un remplissage d’arrière-plan visible.
- Créez un nouveau document PDF et ajoutez une page.
- Créez un
FloatingBox, définissez sa couleur d’arrière-plan et ajoutez du texte. - Placez la case sur la page et enregistrez le document.
public static void backgroundSupport(Path outputFile) {
try (Document document = new Document()) {
Page page = document.getPages().add();
FloatingBox box = new FloatingBox(400, 30);
box.setBackgroundColor(Color.getLightGreen());
box.setNeedRepeating(false);
box.getParagraphs().add(new TextFragment("text example"));
page.getParagraphs().add(box);
document.save(outputFile.toString());
}
}
Positionner une boîte flottante avec des décalages absolus
Utilisez cet exemple lorsque la boîte flottante doit apparaître à un décalage exact sur la page.
- Créez une page et préparez le contenu du texte environnant.
- Créez un
FloatingBox, définissez le positionnement absolu et attribuez des décalages haut et gauche. - Ajoutez le contenu à la page et enregistrez le document.
public static void offsetSupport(Path outputFile) {
try (Document document = new Document()) {
Page page = document.getPages().add();
FloatingBox box = new FloatingBox(400, 30);
box.setTop(45);
box.setLeft(15);
box.setPositioningMode(ParagraphPositioningMode.Absolute);
box.setBorder(new BorderInfo(BorderSide.All, 1.5f, Color.getDarkGreen()));
box.getParagraphs().add(new TextFragment("text example 1"));
page.getParagraphs().add(new TextFragment("text example 2"));
page.getParagraphs().add(box);
page.getParagraphs().add(new TextFragment("text example 3"));
document.save(outputFile.toString());
}
}
Aligner le texte à l’intérieur des boîtes flottantes
Utilisez cet exemple lorsque des boîtes flottantes doivent démontrer différents alignements verticaux avec le même alignement horizontal.
- Créez un nouveau document PDF et ajoutez une page.
- Créez plusieurs objets
FloatingBoxavec différents paramètres d’alignement. - Ajoutez-les à la page et enregistrez le résultat.
public static void alignTextToFloat(Path outputFile) {
try (Document document = new Document()) {
Page page = document.getPages().add();
FloatingBox floatBox = new FloatingBox(100, 100);
floatBox.setVerticalAlignment(VerticalAlignment.Bottom);
floatBox.setHorizontalAlignment(HorizontalAlignment.Right);
floatBox.getParagraphs().add(new TextFragment("FloatingBox_bottom"));
floatBox.setBorder(new BorderInfo(BorderSide.All, Color.getBlue()));
page.getParagraphs().add(floatBox);
FloatingBox floatBox2 = new FloatingBox(100, 100);
floatBox2.setVerticalAlignment(VerticalAlignment.Center);
floatBox2.setHorizontalAlignment(HorizontalAlignment.Right);
floatBox2.getParagraphs().add(new TextFragment("FloatingBox_center"));
floatBox2.setBorder(new BorderInfo(BorderSide.All, Color.getBlue()));
page.getParagraphs().add(floatBox2);
FloatingBox floatBox3 = new FloatingBox(100, 100);
floatBox3.setVerticalAlignment(VerticalAlignment.Top);
floatBox3.setHorizontalAlignment(HorizontalAlignment.Right);
floatBox3.getParagraphs().add(new TextFragment("FloatingBox_top"));
floatBox3.setBorder(new BorderInfo(BorderSide.All, Color.getBlue()));
page.getParagraphs().add(floatBox3);
document.save(outputFile.toString());
}
}