我想缩放完整的 pdf 页面并插入到新文档中。这很好用。但是当因子小于 1% 时,我对比例因子有疑问。例如,当系数为 0.5% 时,不会发生缩放。使用 0.7% 的系数,文档(矩形)具有正确的大小,但缩放后的页面大于计算出的新大小。有没有办法连续缩放页面?看起来,在这种比例因子非常小的情况下,缩放只能分阶段进行。还是内部矩阵计算有问题?
float scale = 1.005f; //100,5%
var newWidth = originWidth*scale;
var newHeight = originHeight*scale;
PdfReader reader = new PdfReader(inputfile);
var newMediaBox = new Rectangle(newWidth, newHeight);
Document doc = new Document(newMediaBox);
PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(outputfile,FileMode.Create));
doc.Open();
PdfContentByte cb = writer.DirectContent;
PdfImportedPage page = writer.GetImportedPage(reader, 1); //page #1
cb.AddTemplate(page, scale, 0, 0, scale, 0, 0);
doc.Close();
另一种方式:我可以计算或读出缩放后的新尺寸吗?
谢谢。
最佳答案
默认情况下,iTextSharp 在添加模板时会使用四舍五入的两位小数。您可以通过将 ByteBuffer
类的 HIGH_PRECISION
静态变量设置为 true
来更改此设置,这将为您提供六位小数。我不知道这是否会影响您的整体应用程序性能,但我相信它不会。
iTextSharp.text.pdf.ByteBuffer.HIGH_PRECISION = true;
关于itextsharp - 如何将页面缩放小于 1%?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24306328/