我测试帮助中的如下代码, 想通过缩放功能将页面四周的 1厘米 的白边切掉, 但是最终效果不精确, 总是偏左,
请问有办法做到精确控制吗? 下面有相关的源文件, 谢谢!
- Code: Select all
//创建PDFDocument实例并加载文档
PdfDocument testDoc = new PdfDocument();
testDoc.LoadFromFile(@"C:\Users\Administrator\Desktop\裁切前.pdf");
//创建一个新文档实例
PdfDocument newDoc = new PdfDocument();
//定义新文档要增加的页边距, 单位cm
float top = -1;
float bottom = -1;
float left = -1;
float right = -1;
//将度量单位转换为磅
PdfUnitConvertor unitCvtr = new PdfUnitConvertor();
top = unitCvtr.ConvertUnits(top, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point);
bottom = unitCvtr.ConvertUnits(bottom, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point);
left = unitCvtr.ConvertUnits(left, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point);
right = unitCvtr.ConvertUnits(right, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point);
foreach (PdfPageBase page in testDoc.Pages)
{
//给新文档添加新页面,设置页面大小与源文档相同
PdfPageBase newPage = newDoc.Pages.Add(page.Size, new PdfMargins(0));
//设置新文档内容的缩放比例
newPage.Canvas.ScaleTransform((page.ActualSize.Width - left - right)/page.ActualSize.Width ,
(page.ActualSize.Height - top - bottom)/page.ActualSize.Height);
//以模板的形式将源文档画到新文档
newPage.Canvas.DrawTemplate(page.CreateTemplate(), new PointF(left, top));
}
//保存并打开结果文档
newDoc.SaveToFile(@"C:\Users\Administrator\Desktop\裁切后.pdf", FileFormat.PDF);