gpt4 book ai didi

c# - 通过 ItextSharp 合并 PDF

转载 作者:太空宇宙 更新时间:2023-11-03 17:25:51 26 4
gpt4 key购买 nike

如何使用 iTextSharp 将多个 pdf 页面合并为一个页面?它还支持合并具有 form 元素的页面,例如 textboxes , checkboxes

我通过谷歌搜索尝试了很多,但没有一个效果很好。

最佳答案

在这里查看我的回答 Merging Memory Streams .我给出了一个如何使用 itextsharp 合并 PDF 的示例。

要更新表单字段名称,请添加使用压模更改表单字段名称的代码。

/// <summary>
/// Merges pdf files from a byte list
/// </summary>
/// <param name="files">list of files to merge</param>
/// <returns>memory stream containing combined pdf</returns>
public MemoryStream MergePdfForms(List<byte[]> files)
{
if (files.Count > 1)
{
string[] names;
PdfStamper stamper;
MemoryStream msTemp = null;
PdfReader pdfTemplate = null;
PdfReader pdfFile;
Document doc;
PdfWriter pCopy;
MemoryStream msOutput = new MemoryStream();

pdfFile = new PdfReader(files[0]);

doc = new Document();
pCopy = new PdfSmartCopy(doc, msOutput);
pCopy.PdfVersion = PdfWriter.VERSION_1_7;

doc.Open();

for (int k = 0; k < files.Count; k++)
{
for (int i = 1; i < pdfFile.NumberOfPages + 1; i++)
{
msTemp = new MemoryStream();
pdfTemplate = new PdfReader(files[k]);

stamper = new PdfStamper(pdfTemplate, msTemp);

names = new string[stamper.AcroFields.Fields.Keys.Count];
stamper.AcroFields.Fields.Keys.CopyTo(names, 0);
foreach (string name in names)
{
stamper.AcroFields.RenameField(name, name + "_file" + k.ToString());
}

stamper.Close();
pdfFile = new PdfReader(msTemp.ToArray());
((PdfSmartCopy)pCopy).AddPage(pCopy.GetImportedPage(pdfFile, i));
pCopy.FreeReader(pdfFile);
}
}

pdfFile.Close();
pCopy.Close();
doc.Close();

return msOutput;
}
else if (files.Count == 1)
{
return new MemoryStream(files[0]);
}

return null;
}

关于c# - 通过 ItextSharp 合并 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15521972/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com