iText7:在单元格内添加 PDF(页面末尾截断)

iText7: Adding a PDF inside a Cell (cutoff at end of page)

我们正在创建一个 PDF,它包含一个大 table,带有 headers(粗体)、sub-headers(非粗体)、行和单元格。

其中一个要求是在单元格内(sub-header 下)添加一个已经存在的 PDF(可以是多页)。这就是我们正在努力的地方。到目前为止我们已经尝试了什么:

正在将 PDF 转换为 FormXObject,并将其添加到单元格中。

FontProvider fontProvider = new FontProvider();
ConverterProperties props = new ConverterProperties();
props.SetFontProvider(fontProvider);

var historyId = text.Replace("=Spectec_template", "");

var pdfTemplate = templateToPdfClient.GetPdf(historyId, "HI").Result;
PdfDocument srcDoc = new PdfDocument(new PdfReader(pdfTemplate.FileStream));
for (int i = 1; i < srcDoc.GetNumberOfPages() + 1; i++)
{
    Cell newCell = new Cell(1, columnInfo.ColumnSpan).SetFont(PdfFontFactory.CreateFont(_fontName));
    PdfPage origPage = srcDoc.GetPage(i);

    Rectangle rect = origPage.GetPageSize();
    PdfFormXObject pageCopy = origPage.CopyAsFormXObject(pdf);
    Image image = new Image(pageCopy);
    image.SetBorder(Border.NO_BORDER);
    image.SetMaxWidth(UnitValue.CreatePercentValue(100));
    image.SetMaxHeight(UnitValue.CreatePercentValue(50));

    Div div = new Div();
    div.Add(image.SetMaxWidth(UnitValue.CreatePercentValue(100)));

    newCell.Add(div);
    newCell = ApplyLayoutsToCell(newCell, cellStyles);
    table.AddCell(newCell);
}

但最终结果是我们只看到 1 页,并且在页面末尾完全重叠。

当我们设置 image.SetAutoScale(true); 时,PDF 可见但非常小。 将 Image 添加到 Paragraph 而不是 DIV 时,PDF 页面会并排显示。

有什么想法、建议吗?

谢谢

感谢@mkl 和@KJ,我解决了这个问题。

我最终将每个 PDF 页面添加到一个新单元格中,并将图像缩放比例设置为 0.6f。

for (int i = 1; i < srcDoc.GetNumberOfPages() + 1; i++)
{
    newCell = new Cell(1, columnInfo.ColumnSpan).SetFont(PdfFontFactory.CreateFont(_fontName));

    PdfPage origPage = srcDoc.GetPage(i);

    PdfFormXObject pageCopy = origPage.CopyAsFormXObject(pdf);
    Image image = new Image(pageCopy);
    image.SetBorder(Border.NO_BORDER);
    image.Scale(0.6f, 0.6f);

    newCell.Add(image);
    newCell = ApplyLayoutsToCell(newCell, cellStyles);

    table.AddCell(newCell);
}