C# 裁剪PDF页面的一部分并使用itextsharp或itext7将其保存为新的PDF文档?

C# 裁剪PDF页面的一部分并使用itextsharp或itext7将其保存为新的PDF文档?,c#,itext,itext7,C#,Itext,Itext7,我需要将PDF文件的矩形区域保存到新的PDF文件,最好使用iTextSharp或iText7。我已经设法将页面拆分为大小相等的页面,这很好,但现在我需要使用自定义大小和位置的区域,并将其放在单独的页面中-一旦完成,我可以轻松提取页面并将其保存为单独的pdf 到目前为止,我掌握的代码是: public void manipulatePdf(string src, string dest) { PdfReader reader = new PdfReade

我需要将PDF文件的矩形区域保存到新的PDF文件,最好使用iTextSharp或iText7。我已经设法将页面拆分为大小相等的页面,这很好,但现在我需要使用自定义大小和位置的区域,并将其放在单独的页面中-一旦完成,我可以轻松提取页面并将其保存为单独的pdf

到目前为止,我掌握的代码是:

        public void manipulatePdf(string src, string dest)
    {  
        PdfReader reader = new PdfReader(src);
        iTextSharp.text.Rectangle pagesize = reader.GetPageSizeWithRotation(1); 
        Document document = new Document(pagesize); 
        PdfWriter writer = PdfWriter.GetInstance(document, 
            new FileStream(dest, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)); 
        document.Open();  
        PdfContentByte content = writer.DirectContent; 
        PdfImportedPage page = writer.GetImportedPage(reader, 1); 
        float x, y;

        x = 0;// -pagesize.Width * (0 % 4);
        y = 0;// pagesize.Height * (0 / 4 - 3);
        content.AddTemplate(page, 2, 0, 0, 2, x, y);
        document.NewPage();

        document.Close(); 
    }

在iText 7中发布解决方案

我们将创建一个包含一个页面的新文档,该页面将是我们想要从中获取区域的原始页面的精确副本,但已定义裁剪框。裁剪框将确保内容被剪切到所需的区域。请注意,在这种情况下,其余内容(在不可见区域中)没有消失,仍然存在于内部文档结构中,因此,如果您的文档中没有任何要剪切的敏感信息,可以应用此解决方案。如果您确实拥有此类敏感信息,请查看附加组件

原始文件:

裁剪结果(200x200):

PdfDocument source = new PdfDocument(new PdfReader("C:\\source.pdf"));
PdfDocument croppedSinglePageTarget = new PdfDocument(new PdfWriter("C:\\cropped.pdf"));
Rectangle area = new Rectangle(200, 400, 200, 200);
int pageToCopy = 1;
source.copyPagesTo(pageToCopy, pageToCopy, croppedSinglePageTarget);
croppedSinglePageTarget.getPage(1).setCropBox(area);
source.close();
croppedSinglePageTarget.close();