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

合并pdf文件页面大小

如何解决合并pdf文件页面大小

我使用 itext7 PdfMerger 合并 pdf 文件, 但页面大小是从源文件复制的。 - 所以每个页面都有不同的大小 - 根据原始大小。 我希望合并的输出文件中的页面大小相等。 (即 A4 旋转)

 using(var ms = new MemoryStream()) {
   var pdfCombined = new PdfDocument(new PdfWriter(ms));
   var merger = new PdfMerger(pdfCombined);

   using(var pdfStream = file.OpenReadStream()) {

     var pdfReader = new PdfDocument(new PdfReader(pdfStream));

     merger.Merge(pdfReader,1,pdfReader.GetNumberOfPages());
     pdfReader.Close();
   }
 }

解决方法

private void Resize(Stream original,Stream stream)
    {
        original.Position = 0;
        stream.Position = 0;
        var orig = new PdfDocument(new PdfReader(original));
        var pdf = new PdfDocument(new PdfWriter(stream));
        pdf.GetWriter().SetCloseStream(false);
        var doc = new Document(pdf,PageSize);

        var pageSize = orig.GetPage(1).GetPageSizeWithRotation();

        var pageWidth = pageSize.GetWidth();
        var destWidth = PageSize.GetWidth();

        if (pageWidth > destWidth)
        {

            var transformationMatrix = AffineTransform.GetScaleInstance(
                pageWidth / destWidth / 2,pageSize.GetHeight() / PageSize.GetHeight() / 2);

            for (int i = 1; i <= orig.GetNumberOfPages(); i++)
            {
                var page = orig.GetPage(i);
                var formXObject = page.CopyAsFormXObject(pdf);
                var canvas = new PdfCanvas(pdf.AddNewPage(PageSize));
                canvas.ConcatMatrix(transformationMatrix);
                canvas.AddXObjectAt(formXObject,0);
            }

            doc.Close();
        }
    }

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