gpt4 book ai didi

c# - 使用 itextsharp 将页面插入现有 PDF

转载 作者:太空狗 更新时间:2023-10-29 21:02:48 26 4
gpt4 key购买 nike

我们使用 itextsharp 从多个 PDF 文件创建一个 PDF。如何将新页面插入到文件中已有多个页面的 PDF 文件中?当我使用添加页面时,它会覆盖现有页面并仅保存所选的第 1 页。

这是我用来将页面添加到现有 PDF 的代码:

PdfReader reader = new PdfReader(sourcePdfPath);
Document document = new Document(reader.GetPageSizeWithRotation(1));
PdfCopy pdfCopy = new PdfCopy(document, new System.IO.FileStream(outputPdfPath, System.IO.FileMode.Create));
MemoryStream memoryStream = new MemoryStream();
PdfWriter writer = PdfWriter.GetInstance(document, memoryStream);
document.AddDocListener(writer);
document.Open();

for (int p = 1; p <= reader.NumberOfPages; p++)
{
if (pagesToExtract.FindIndex(s => s == p) == -1) continue;
document.SetPageSize(reader.GetPageSize(p));
document.NewPage();
PdfContentByte cb = writer.DirectContent;
PdfImportedPage pageImport = writer.GetImportedPage(reader, p);

int rot = reader.GetPageRotation(p);
if (rot == 90 || rot == 270)
{
cb.AddTemplate(pageImport, 0, -1.0F, 1.0F, 0, 0, reader.GetPageSizeWithRotation(p).Height);
}
else
{
cb.AddTemplate(pageImport, 1.0F, 0, 0, 1.0F, 0, 0);
}

pdfCopy.AddPage(pageImport);
}

pdfCopy.Close();

最佳答案

此代码有效。您需要有一个不同的文件来输出结果。

private static void AppendToDocument(string sourcePdfPath1, string sourcePdfPath2, string outputPdfPath)
{
using (var sourceDocumentStream1 = new FileStream(sourcePdfPath1, FileMode.Open))
{
using (var sourceDocumentStream2 = new FileStream(sourcePdfPath2, FileMode.Open))
{
using (var destinationDocumentStream = new FileStream(outputPdfPath, FileMode.Create))
{
var pdfConcat = new PdfConcatenate(destinationDocumentStream);
var pdfReader = new PdfReader(sourceDocumentStream1);

var pages = new List<int>();
for (int i = 0; i < pdfReader.NumberOfPages; i++)
{
pages.Add(i);
}

pdfReader.SelectPages(pages);
pdfConcat.AddPages(pdfReader);

pdfReader = new PdfReader(sourceDocumentStream2);

pages = new List<int>();
for (int i = 0; i < pdfReader.NumberOfPages; i++)
{
pages.Add(i);
}

pdfReader.SelectPages(pages);
pdfConcat.AddPages(pdfReader);

pdfReader.Close();
pdfConcat.Close();
}
}
}
}

关于c# - 使用 itextsharp 将页面插入现有 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6657899/

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