微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用iText7从页面上切矩形并放置到另一个页面

如何解决使用iText7从页面上切矩形并放置到另一个页面

我想复制矩形大小的位置并放入另一页。例如。我有100页,我想切成xy并有widthheight坐标的54页矩形,然后将其分成3页。
我的方法如下:

public void copyRect(string filenamePdf,Rectangle rect,int sourcePageNumber,int destinationPageNumber)
{
}
  • 字符串filenamePdf是我的源pdf
  • 矩形rect是我的坐标(x,y,宽度,高度)
  • int sourcePageNumber是我要从中复制带有信息的矩形的页面
  • int destinantionPageNumber是我要在其中放置带有信息的矩形的页面

我应该如何描述这种方法?谢谢。

解决方法

在这里我找到了解决方法:

 public void CopyRectCopy(string filenamePdf,Rectangle rect,int sourcePageNumber,int destinationPageNumber)
    {
        PdfDocument srcDoc = new PdfDocument(new PdfReader(filenamePdf));
        PdfDocument resultPdfDoc = new PdfDocument(newPdfWriter(@"C:\Users\USER123"));
        int pageCounter = srcDoc.GetNumberOfPages();
        Rectangle toMove = rect;
        Rectangle pageSize = srcDoc.GetPage(sourcePageNumber).GetPageSize();
        PdfFormXObject pageXObject = srcDoc.GetPage(sourcePageNumber).CopyAsFormXObject(resultPdfDoc);


        PdfFormXObject formXObjectA = new PdfFormXObject(pageSize);
        for (int i = 1; i <= pageCounter; i++)
        {
            //deletes an rectangle from exact page.
            if (i == sourcePageNumber)
            {
                resultPdfDoc.AddNewPage();

                PdfCanvas canvasas = new PdfCanvas(formXObjectA,resultPdfDoc);
                canvasas.Rectangle(0,595.28,841.89);
                canvasas.Rectangle(toMove);
                canvasas.EoClip();
                canvasas.EndPath();
                canvasas.AddXObject(pageXObject,0);
            }
            else
            {
                srcDoc.CopyPagesTo(i,i,resultPdfDoc);
            }

        }
        // Create a formXObject of the area to move.
        PdfFormXObject formXObject2 = new PdfFormXObject(pageSize);
        PdfCanvas canvas2 = new PdfCanvas(formXObject2,resultPdfDoc);
        canvas2.Rectangle(toMove);
        // This method uses the nonzero winding rule to determine which regions lie inside the clipping path.
        canvas2.Clip();
        canvas2.EndPath();
        canvas2.AddXObject(pageXObject,0);


        PdfCanvas canvas = new PdfCanvas(resultPdfDoc.GetPage(destinationPageNumber));
        PdfCanvas canvass = new PdfCanvas(resultPdfDoc.GetPage(sourcePageNumber));
        // Add the area to move content,shifted 10 points to the left and 2 points to the bottom.
        canvas.AddXObject(formXObject2,-50);
        canvass.AddXObject(formXObjectA,0);

        srcDoc.Close();
        resultPdfDoc.Close();
    }

它从一页切出一个矩形,然后粘贴到另一页上。

已编辑。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。