c# - 如何使用 iText 7 重新排序 pdf 文档

标签 c# pdf itext itext7

我正在学习 iText 7 库,我希望它有两个主要功能:重新排序页面和旋转页面。后者在快速入门指南中很容易理解。前者我遇到了一些麻烦,因为我能找到的所有示例都是旧的或用于 Java(或两者)。

我目前只是想设置一个将第一页移到第二页之后的示例:

PdfReader reader = new PdfReader(FILE_READ_LOCATION);
PdfWriter writer = new PdfWriter(FILE_WRITE_LOCATION);
PdfDocument document = new PdfDocument(reader, writer);

PdfPage pageToMove = document.GetPage(1);

document.AddPage(3, pageToMove);
document.RemovePage(pageToMove);

document.Close();

出于某种原因,document.Close(); 抛出一个 NullReferenceException(但我没有看到任何 null)。有什么建议吗?

这是我对 copyToCopyPagesTo 方法所做的尝试(dest.Close(); 抛出异常说 文档没有页面):

PdfReader reader = new PdfReader(FILE_READ_LOCATION);
PdfWriter writer = new PdfWriter(FILE_WRITE_LOCATION);

PdfDocument src = new PdfDocument(reader);
PdfDocument dest = new PdfDocument(writer);

src.GetPage(1).CopyTo(dest);
src.CopyPagesTo(new List<int>(1), dest);

src.Close();
dest.Close();

最佳答案

正如@Bruno 指出的那样,可以使用 PdfDocument 的重载使用 iText 7 轻松地重新排序 pdf 文档。方法 CopyPagesTo .

关于你的尝试

  • src.GetPage(1).CopyTo(dest);

    CopyTo(dest)将页面数据从源复制到目标,只是尚未将其添加到目标页面树。这就是为什么 CopyTo返回一个页面对象,您可以将其与 dest.AddPage(...) 一起使用重载;这尤其允许您在所需的任何位置插入页面。

  • src.CopyPagesTo(new List<int>(1), dest);

    new List<int>(1)创建一个容量为 1空列表。你可能想做 new List<int> { 1 } (带花括号)创建一个包含一个条目的列表,一个 1 .

关于c# - 如何使用 iText 7 重新排序 pdf 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46869842/

相关文章:

c#有没有一种简单的方法可以将月份整数转换为名称

c# - 在 Silverlight 中生成类似 UML 的框图

html - 从 PDF 中的 HTML 背景色创建 PDF

macos - 调整 PDF NSImage OSX

javascript - 将 bootstrap 模态打印为 PDF

c# - 初学者在这里 : How does my Repository Layer know which user is logged in?

c# - Lazy Operator C# 用于自己的数据访问

cocoa - 是否可以不在使用 PDFKit 生成的 PDF 中嵌入字体?

java - iText5 : Header content is coming two times while creating PDF

image - itextsharp 5.4.4 - GetDrawingImage 以错误的方式解码此图像 - 为什么?