C# iTextSharp PdfContentByte添加模板

C# iTextSharp PdfContentByte添加模板,c#,itext,C#,Itext,我试图在iTextSharp PdfContentByte AddTemplate中使用缩放 PdfContentByte cb = writer.DirectContent; cb.AddTemplate(page, scalex, 0, 0, scaley, x, y); 它是有效的,但是scalexС和scaley循环。如果scalex=104776,在输出文件格式100 mm中,我得到的是105 mm,而不是104776 mm。 如果有机会在输出文件中获得104776 mm,则iTex

我试图在iTextSharp PdfContentByte AddTemplate中使用缩放

PdfContentByte cb = writer.DirectContent;
cb.AddTemplate(page, scalex, 0, 0, scaley, x, y);
它是有效的,但是scalexС和scaley循环。如果scalex=104776,在输出文件格式100 mm中,我得到的是105 mm,而不是104776 mm。
如果有机会在输出文件中获得104776 mm,则iText可提供两种模式,即正常模式和高精度模式。在正常模式下,文本使用一些不规则的模式对数字进行舍入;如果数字在1到32767之间,它最多四舍五入到2位小数

您的
1.04776
在该范围内,因此它被四舍五入为
1.05

在iTextSharp 5.x中,您可以通过设置

iTextSharp.text.pdf.ByteBuffer.HIGH_PRECISION = true;
也请阅读

在iText 7中有一个类似的静态变量,
iText.IO.Source.ByteUtils.HighPrecision
。由于它被声明为内部,您不能直接更改它,但在
iText.IO.Source.OutputStream
中有静态方法用于:

public static bool GetHighPrecision()
{
    return ByteUtils.HighPrecision;
}

public static void SetHighPrecision(bool value)
{
    ByteUtils.HighPrecision = value;
}
因此,要切换到高精度模式,请在此处调用

iText.IO.Source.OutputStream.SetHighPrecision(true);

对于向内容流写入浮点数,iText提供了两种模式:普通模式和高精度模式。在正常模式下,文本使用一些不规则的模式对数字进行舍入;如果数字在1到32767之间,它最多四舍五入到2位小数

您的
1.04776
在该范围内,因此它被四舍五入为
1.05

在iTextSharp 5.x中,您可以通过设置

iTextSharp.text.pdf.ByteBuffer.HIGH_PRECISION = true;
也请阅读

在iText 7中有一个类似的静态变量,
iText.IO.Source.ByteUtils.HighPrecision
。由于它被声明为内部,您不能直接更改它,但在
iText.IO.Source.OutputStream
中有静态方法用于:

public static bool GetHighPrecision()
{
    return ByteUtils.HighPrecision;
}

public static void SetHighPrecision(bool value)
{
    ByteUtils.HighPrecision = value;
}
因此,要切换到高精度模式,请在此处调用

iText.IO.Source.OutputStream.SetHighPrecision(true);

在iText 5.5.x代码中,我看不到任何舍入该值的内容。因此,为了使问题重现,请提供示例代码和输入PDF文件,或至少提供此类转换的结果PDF进行分析。请说明您是如何测量的,因为有时测量工具本身就是问题所在……这里的所有内容:测量工具是Enfocus PitStop。请在执行代码之前尝试设置
iTextSharp.text.pdf.ByteBuffer.HIGH_PRECISION=true
。结果不同吗?是的,结果不同而且很好。非常感谢!iText 7是否有类似物?在iText 5.5.x代码中,我看不到任何舍入该值的东西。因此,为了使问题重现,请提供示例代码和输入PDF文件,或至少提供此类转换的结果PDF进行分析。请说明您是如何测量的,因为有时测量工具本身就是问题所在……这里的所有内容:测量工具是Enfocus PitStop。请在执行代码之前尝试设置
iTextSharp.text.pdf.ByteBuffer.HIGH_PRECISION=true
。结果不同吗?是的,结果不同而且很好。非常感谢!iText 7有类似的版本吗?