【问题标题】:AutoScaling an image and paragraph to fit the document iTextSharp自动缩放图像和段落以适合文档 iTextSharp
【发布时间】:2021-05-31 12:08:31
【问题描述】:

我正在使用 iTextSharp 5.5.13.2。我的程序正在做的是生成一个新的 PDF,它将加载到多个 pdf 和每个文档页面的段落中。问题是我想让它适合整个文档但要留出空间,尝试了多种方法,例如:

· 添加一个表格和两个单元格使第一个单元格适合整个文档,第二个在其他页面上。 · 添加一个表格和一个单元格会导致文档异常。

工作代码,但如第一点所述发生:

foreach (KeyValuePair<string, string> key in dict)
        {
            PdfReader reader = new PdfReader(key.Key);

            for (int i = 1; i <= reader.NumberOfPages; i++)
            {
                PdfImportedPage page = writer.GetImportedPage(reader, i);
                PdfPTable table = new PdfPTable(1);
                table.WidthPercentage = 100;

                PdfPCell cell = new PdfPCell(iTextSharp.text.Image.GetInstance(page), true);
                cell.Border = iTextSharp.text.Rectangle.NO_BORDER;
                //cell.AddElement(new Phrase(key.Value));
                PdfPCell cell2 = new PdfPCell(new Phrase(key.Value));
                cell2.Border = iTextSharp.text.Rectangle.NO_BORDER;

                table.AddCell(cell);
                table.AddCell(cell2);

                document.Add(table);
                document.NewPage();
            }
        }

我该如何解决这个问题?谢谢!

【问题讨论】:

    标签: c# pdf itext


    【解决方案1】:

    我用这段代码解决了这个问题,我所做的就是将两个单元格添加到一个表格中并减少 WidthPercentage 以便所有内容都适合一页。

    foreach (KeyValuePair<string, string> key in dict)
            {
                PdfReader reader = new PdfReader(key.Key);
    
                for (int i = 1; i <= reader.NumberOfPages; i++)
                {
                    PdfImportedPage page = writer.GetImportedPage(reader, i);
                    PdfPTable table = new PdfPTable(1);
                    table.WidthPercentage = 68;
                    if (key.Value.Contains("word"))
                        table.WidthPercentage = 65;
    
                    PdfPCell cell = new PdfPCell(iTextSharp.text.Image.GetInstance(page), true);
                    cell.Border = iTextSharp.text.Rectangle.NO_BORDER;
                    //cell.AddElement(new Phrase(key.Value));
                    PdfPCell cell2 = new PdfPCell(new Phrase(key.Value));
                    cell2.Border = iTextSharp.text.Rectangle.NO_BORDER;
    
    
                    table.AddCell(cell);
                    table.AddCell(cell2);
                    
                    document.Add(table);
                    document.NewPage();
                }
            }
    

    【讨论】:

      猜你喜欢
      • 2012-03-05
      • 2012-04-14
      • 1970-01-01
      • 2014-05-31
      • 1970-01-01
      • 2012-04-17
      • 2012-07-26
      • 2019-04-08
      • 2015-07-14
      相关资源
      最近更新 更多