我正在学习iText 7库,我希望它有两个主要功能:重新排序页面和旋转页面。后者在快速入门指南中很容易理解。前者我遇到了一些麻烦,因为我可以找到的所有示例都是旧的或者对于java(或两者)。如何使用iText重新订购PDF文档7
我目前只是试图建立第二页后移动第一页的例子:
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
)。有什么建议么?
这里是我已经尝试什么为copyTo
或CopyPagesTo
方法(dest.Close();
抛出一个异常,说Document has no pages
):
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();
'new List(1)'创建一个**空列表**,**容量为1 **。你可能想要做'新列表 {1}'(带花括号),它创建一个列表,一个条目,一个'1'。 –
mkl
@mkl哦,我的愚蠢举动。这似乎工作。现在任何建议'src.GetPage(1).CopyTo(dest);'? – derekantrican
'src.GetPage(1).CopyTo(dest)'将页面*数据*从源复制到目的地,它只是不会将其添加到目标页面树中。这就是为什么'CopyTo'返回一个页面对象,你可以使用'dest.AddPage(...)';这允许您在任何想要的位置插入页面。 – mkl