我想缩放完整的pdf页面并插入新文档。这很好用。但是当因子小于1%时,我对比例因子有问题。例如,因子为0.5%,没有发生规模。使用0.7%的因子,文档(rectagle)具有正确的大小,但缩放的页面大于计算的新大小。有没有办法连续缩放页面?看起来,在具有非常小的比例因子的情况下,缩放仅在阶段中起作用。或者内部矩阵计算可能有问题吗?
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();
另一种方式:我可以在缩放后计算或读出新尺寸吗?
感谢。
答案 0 :(得分:2)
默认情况下,iTextSharp在添加模板时将使用四舍五入的小数位。您可以通过将HIGH_PRECISION
类的ByteBuffer
静态变量设置为true
来更改此值,这将给您六位小数。我不知道这是否会影响您的整体应用程序性能,但我相信它不会。
iTextSharp.text.pdf.ByteBuffer.HIGH_PRECISION = true;