C# 裁剪PDF页面的一部分并使用itextsharp或itext7将其保存为新的PDF文档?
我需要将PDF文件的矩形区域保存到新的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
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();