如何使用 syncfusion pdf creator 创建多页 PDF?

How to create multi page PDF using syncfusion pdf creator?

我正在尝试使用 syncfusion pdf 包创建 pdf 文档。目前我可以制作单页 pdf,但我得到的数据将转到多页。如何识别所提供数据的长度并创建多个页面以将数据添加到 PDF

我的代码

Future<void> _createPDFAndDownload(String? dataToAdd, int? fileName) async {
final PdfDocument document = PdfDocument();
PdfPage page = document.pages.add();
document.pageSettings.size = PdfPageSize.a4;

final PdfPageTemplateElement headerTemplate =
    PdfPageTemplateElement(const Rect.fromLTWH(0, 0, 515, 50));

headerTemplate.graphics.drawString(
    'Management', PdfStandardFont(PdfFontFamily.helvetica, 12),
    bounds: const Rect.fromLTWH(200, 15, 200, 20));

document.template.top = headerTemplate;

PdfFont font = PdfStandardFont(PdfFontFamily.helvetica, 12);

page.graphics.drawString(
  dataToAdd!,
  font,
  bounds: Rect.fromLTWH(
      0, 0, page.getClientSize().width, page.getClientSize().height),
);

PdfSecurity security = document.security;

//Specifies encryption algorithm and key size
security.algorithm = PdfEncryptionAlgorithm.rc4x128Bit;

security.userPassword = 'password';

Size pageSize = page.getClientSize();
Size waterMarkSize = font.measureString('Management');
PdfGraphics graphics = page.graphics;
double x = pageSize.width / 2;
double y = pageSize.height / 2;
graphics.save();
graphics.translateTransform(x, y);
graphics.setTransparency(0.25);
graphics.rotateTransform(-40);
graphics.drawString('Management', font,
    pen: PdfPen(PdfColor(255, 0, 0)),
    brush: PdfBrushes.blue,
    bounds: Rect.fromLTWH(
        -waterMarkSize.width / 2,
        -waterMarkSize.height / 2,
        waterMarkSize.width,
        waterMarkSize.height));
graphics.restore();

List<int> bytes = document.save();

final folderName = "Management";
final subdirectory = "Docs";
final _fileName = fileName.toString();
final path = Directory("storage/emulated/0/$folderName/");
final path2 = Directory("storage/emulated/0/$folderName/$subdirectory/");
File fileDef =
    File("storage/emulated/0/$folderName//$subdirectory/$_fileName.pdf");
var status = await Permission.storage.status;
if (!status.isGranted) {
  await Permission.storage.request();
}
if ((await path.exists())) {
  await fileDef.writeAsBytes(bytes, flush: true);
  showToast("File Location " + path2.path);
} else {
  await path.create();
  await path2.create();
  fileDef.writeAsBytes(bytes, flush: true);
  showToast("File Location " + path2.path);
}
document.dispose();
}

dataToAdd 将有跨越第一页的数据我想创建多页添加到它

我可以使用以下代码获取多页 pdf

Future<void> _createPDFAndDownload(String? dataToAdd, int? fileName) async {
final PdfDocument document = PdfDocument();
final PdfPage page = document.pages.add();

final PdfLayoutResult? layoutResult = PdfTextElement(
        text: dataToAdd!,
        font: PdfStandardFont(PdfFontFamily.helvetica, 12),
        brush: PdfSolidBrush(PdfColor(0, 0, 0)))
    .draw(
        page: page,
        bounds: Rect.fromLTWH(
            0, 0, page.getClientSize().width, page.getClientSize().height),
        format: PdfLayoutFormat(
          layoutType: PdfLayoutType.paginate,
        ));
}