使用PdfStamper / PdfReader复制pdf页面

时间:2016-06-01 16:17:58

标签: c# .net pdf-generation itextsharp

我有一个包含多个运送标签的文件,每页2个(我无法选择此格式)。我正在尝试修改文件,以便每个标签都可以在4x6标签打印机上打印。

我有一个问题是将pdf页面的内容复制到另一个页面,以便我可以裁剪每个页面不同的区域以生成2个页面,其中一个页面包含原始页面中的每个标签。我目前的代码如下:

 string filename = "Package.pdf";
        using (var existingFileStream = new FileStream(filename, FileMode.Open))
        {
            var pdfReader = new PdfReader(existingFileStream);

            using (FileStream output = new FileStream("Mod_package.pdf", FileMode.Create, FileAccess.Write))
            {
                using (PdfStamper pdfStamper = new PdfStamper(pdfReader, output))
                {
                    int originalpages = pdfReader.NumberOfPages;
                    for(int page = 1; page <=originalpages; page++)
                    {
                        Rectangle rect = pdfReader.GetCropBox(page);
                        pdfStamper.InsertPage(page * 2, rect);
                    }
                    for(int page = 2; page <=pdfReader.NumberOfPages; page=page+2)
                    {

                        //I want to insert the content from pdf page 1 into
                        //page 2, page 3 into page 4 etc etc.
                    }
                    for (int page = 1; page <= pdfReader.NumberOfPages; page++)
                    {
                        //The basic jyst of how I'm cropping
                        //This will be modified to use an even/odd page scheme
                        Rectangle rect = pdfReader.GetCropBox(page);
                        rect.Bottom = rect.Bottom / 2;
                        pdfReader.GetPageN(page).Put(PdfName.CROPBOX, new PdfRectangle(rect));
                        rect = pdfReader.GetCropBox(page);
                        rect.Top = rect.Top / 2;
                        pdfReader.GetPageN(page).Put(PdfName.CROPBOX, new PdfRectangle(rect));
                    }
                }
            }
            pdfReader.Close();
        }

如果我有一些奇怪的ITextSharp代码,我将不胜感激任何有关如何完成此任务的建议和道歉......我对它相对较新。

1 个答案:

答案 0 :(得分:2)

它认为,只要我花时间发布问题,我就会找到答案。在上面的代码中,我插入了以下内容:

pdfStamper.ReplacePage(pdfReader, page - 1, page);

在第二个for循环中,第1页的内容转移到第2,3页等4等。