当前位置: 首页 > 知识库问答 >
问题:

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

沈嘉瑞
2023-03-14

其中一个要求是在单元格内(子标题下)添加一个已经存在的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);
}

当我们设置图像时。设置自动缩放(真) PDF是可见的,但它非常小。将图像添加到段落而不是DIV时,PDF页面会彼此相邻显示。

有什么想法和建议吗?

非常感谢。


共有1个答案

裴欣然
2023-03-14

多亏了@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);
}
 类似资料:
  • 我想知道如何在数组末尾添加或追加一个新元素。有什么简单的方法可以在末尾添加元素吗?我知道如何使用StringBuffer,但我不知道如何使用它在数组中添加元素。我更喜欢没有ArrayList或List。我想知道StringBuffer是否能处理整数。

  • 问题内容: 我有一个文本区域,其中包含一些文本,我想再次向其中添加一些行(第一行+我要添加的其他行),但是它不起作用。 我现在的操作方式将擦除旧文本并仅显示新行。 问题答案: 代替使用,使用。 将给定的文本追加到文档末尾。如果模型为null或字符串为null或为空,则不执行任何操作。 这会将文字添加到您的末尾。 另一个选择是使用来从中获取文本,然后操作String(添加或删除或更改String),

  • 注意,这个空间只在最末端可见,因为我不想改变布局。我可以使recycerview有一个50dp的边际底部,但我不想这样做。

  • 我试图创建一个嵌套表,该表与单元格的右边缘对齐,但尽管向包含单元格添加了,但它仍然保持在左侧。 灰色底纹显示表格和单元格的实际位置: 正在制作的内容: 所以基本上,我想问的是,我是否缺少了什么东西,可以使嵌套表正确地向右对齐。

  • 我当前正试图添加一个链接到pdf文档的页脚页眉,但是库给出了以下错误System.IndexoutOfrangeException:“请求的页码0已超出范围。”当使用IText7库将链接添加到标头时。 我在IText7中找不到任何关于这个问题的在线代码示例,ITextSharp中的解决方案不再适用。 我的问题是我如何添加一个链接到一个外部网站到PDF的标题?当前的行为是库中的bug还是有意的? 包

  • 我在运行时用一个模板文件在itext7.pdfhtml中构建一个PDF。我想在生成的PDF中的每一页都添加一个页脚,该PDF有两页,但出于某种原因,页脚只出现在第二页。