如何解决合并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 举报,一经查实,本站将立刻删除。