itextsharp - 如何将页面缩放小于 1%?

标签 itextsharp

我想缩放完整的 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/

相关文章:

c# - ITextSharp 使用外部 css 文件在 PDF 中重复 HTML 表头

itextsharp - 从itextsharp中的模板创建pdf并作为内容处置输出。

.net - 如何使用iTextSharp将PDF与可填写的表单字段合并/合并?

c# - 使用 iTextSharp 在 C# 中旋转 PDF

c# - 当我有 anchor 标记时 itextsharp "the document has no pages"错误

c# - iTextSharp - 在添加到列之前计算短语/段落高度

c# - 在 .NET 中将 HTML 转换为 PDF

c# - 如何使用 iTextSharp 使表格不间断

java - 在 java eclipse 中使用 iText 在 Pdf 中打印字符串时如何使特定的子字符串加粗?

pdf - 转换 PDF 文档中所有链接的缩放级别