自动缩放图像和段落以适合文档 iTextSharp
AutoScaling an image and paragraph to fit the document iTextSharp
我正在使用 iTextSharp 5.5.13.2。我的程序正在做的是生成一个新的 PDF,它将加载到多个 pdf 中,并在每个文档页面中加载一个段落。问题是我想让它适合整个文档,但留下了 space,尝试了多种方法,例如:
· 添加一个 table 和两个单元格使第一个单元格适合整个文档,第二个单元格在其他页面上。
· 添加一个 table 和一个单元格会导致文档异常。
工作代码,但如第一点所述:
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();
}
}
我该如何解决这个问题?谢谢!
我用这段代码解决了这个问题,我所做的是将两个单元格都添加到 table 并减少 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();
}
}
我正在使用 iTextSharp 5.5.13.2。我的程序正在做的是生成一个新的 PDF,它将加载到多个 pdf 中,并在每个文档页面中加载一个段落。问题是我想让它适合整个文档,但留下了 space,尝试了多种方法,例如:
· 添加一个 table 和两个单元格使第一个单元格适合整个文档,第二个单元格在其他页面上。 · 添加一个 table 和一个单元格会导致文档异常。
工作代码,但如第一点所述:
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();
}
}
我该如何解决这个问题?谢谢!
我用这段代码解决了这个问题,我所做的是将两个单元格都添加到 table 并减少 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();
}
}