gpt4 book ai didi

c# - 合并 PDF iTextSharp

转载 作者:行者123 更新时间:2023-12-02 19:37:04 25 4
gpt4 key购买 nike

我在网上查看了一些示例,并提出了使用 iTextSharp 合并 pdf 的代码。但我收到错误:.

{“文档没有页面。”}

它失败于Page = writer.GetImportedPage(reader, X);

这是堆栈跟踪:

 at iTextSharp.text.pdf.PdfPages.WritePageTree()
at iTextSharp.text.pdf.PdfWriter.Close()
at iTextSharp.text.pdf.PdfCopy.Close()
at iTextSharp.text.Document.Close()

我调试的时候有3页。这里出了什么问题??

这是我的代码

public static MemoryStream MergePdfs(List<MemoryStream> pdfStreams)
{
//Create output stream
MemoryStream OutStream = new MemoryStream();
Document Document = null;

try
{
//Create Main reader
PdfReader Reader = new PdfReader(pdfStreams.ElementAt(0));
//Create Main Doc
Document = new Document(Reader.GetPageSizeWithRotation(1));
//Create main writer
PdfCopy Writer = new PdfCopy(Document, OutStream);
//Open document for writing
Document.Open();
//Add pages
AddPages(Reader.NumberOfPages, Reader, ref Writer);

//For each additional pdf after first combine them into main document
foreach (MemoryStream PdfStream in pdfStreams.Skip(1))
{
PdfReader Reader2 = new PdfReader(PdfStream);
// Add content
AddPages(Reader2.NumberOfPages, Reader2, ref Writer);
}
}
finally
{
// Step 5: Close the document
if (Document != null)
Document.Close();

foreach (var Strm in pdfStreams)
{
try { if (null != Strm) Strm.Dispose(); } catch { }
}
}

return OutStream;
}

private static void AddPages(int Pages, PdfReader reader, ref PdfCopy writer)
{
PdfImportedPage Page = null;

for (int X = 0; X < Pages; X++)
{
Page = writer.GetImportedPage(reader, X);
writer.AddPage(Page);
}

if (reader.AcroForm != null)
writer.CopyAcroForm(reader);
}

最佳答案

GetImportedPage 的页码从 1 开始。因此:

for (int X = 1; X < Pages + 1; X++)
{
Page = writer.GetImportedPage(reader, X);
writer.AddPage(Page);
}

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

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