PdfClown を使用して PDF を印刷すると、PdfClown が新しいページを作成せずに印刷がページからはみ出します。これを修正するにはどうすればよいですか?
コードは以下のとおりです。テキストをPDFページに印刷します。印刷がページの下部からはみ出し始めると、別のPDFページが自動的に追加されます。これを解決するPdfClown設定はありますか?
どんな助けでも大歓迎です。
import org.pdfclown.documents.Document;
import org.pdfclown.documents.Page;
import org.pdfclown.documents.contents.composition.BlockComposer;
import org.pdfclown.documents.contents.composition.PrimitiveComposer;
import org.pdfclown.documents.contents.composition.XAlignmentEnum;
import org.pdfclown.documents.contents.composition.YAlignmentEnum;
import org.pdfclown.documents.contents.fonts.StandardType1Font;
import org.pdfclown.files.File;
import org.pdfclown.files.SerializationModeEnum;
import org.pdfclown.util.math.geom.Dimension;
import java.awt.geom.Dimension2D;
import java.awt.geom.Rectangle2D;
public class PrintWithPdfClown{
private static final int Margin_X = 50;
private static final int Margin_Y = 50;
public void printAuthorInfo() {
// Create a document and add a page to it
try {
for (int j = 0; j < author.size(); j++) {
String name = author.get(j).getFirstName();
String lastName = author.get(j).getLastName();
String addressLine1 = author.get(j).getAddressLine1();
String addressLine2 = author.get(j).getAddressLine2();
String city = author.get(j).getCity();
String state = author.get(j).getState();
String postalCode = author.get(j).getPostalCode();
String country = author.get(j).getCountry();
Document document = new File().getDocument();
Page page = new Page(document);
document.getPages().add(page);
Dimension2D pageSize = page.getSize();
PrimitiveComposer composer = new PrimitiveComposer(page);
BlockComposer blockComposer = new BlockComposer(composer);
composer.beginLocalState();
Rectangle2D frame = new Rectangle2D.Double(Margin_X, Margin_Y, pageSize.getWidth() - Margin_X * 2, pageSize.getHeight() - Margin_Y * 2);
blockComposer.begin(frame, XAlignmentEnum.Left, YAlignmentEnum.Top);
Dimension breakSize = new Dimension(24, 8); // Indentation (24pt)
// and top margin (8pt).
composer.setFont(new StandardType1Font(document, StandardType1Font.FamilyEnum.Courier, true, false), 8);
blockComposer.begin(frame, XAlignmentEnum.Left, YAlignmentEnum.Top);
blockComposer.showText("########## Author Address ##########");
blockComposer.showBreak(breakSize);
blockComposer.showBreak(breakSize);
blockComposer.showText(name + " " + lastName + " " );
blockComposer.showBreak(breakSize);
blockComposer.showText(addressLine1);
blockComposer.showBreak(breakSize);
blockComposer.showText(addressLine2);
blockComposer.showBreak(breakSize);
blockComposer.showText(city + " " + state + " " + postalCode + " " + country);
blockComposer.showBreak(breakSize);
blockComposer.showBreak(breakSize);
for (int i = 0; i < author.get(j).booksOfAuthor.size(); i++) {
String productName = author.get(j).booksOfAuthor.get(i).getBookName();
String pages = author.get(j).booksOfAuthor.get(i).getPages();
blockComposer.showBreak(breakSize);
blockComposer.showText("########## <" + (i + 1) + ". Book > ##########");
blockComposer.showBreak(breakSize);
blockComposer.showText(" <Book Name:> " + bookName + " <Pages:> " + pages);
blockComposer.showBreak(breakSize);
blockComposer.showBreak(breakSize);
}
blockComposer.end();
composer.flush();
document.getFile().save(job.getAuthorFileLocalDir() + "/" + "Author_Info " + j + ".pdf", SerializationModeEnum.Standard);
}
} catch (Exception e) {
e.printStackTrace();
}
}