C# PDF不';t自动换行&;尊重线路位置

C# PDF不';t自动换行&;尊重线路位置,c#,pdf,C#,Pdf,我试图通过代码生成PDF,因为并非所有实际的PDF.NET库都支持Windows/Windows Phone 8.1的新Windows运行时。 PDF保存正确,只有一个流位置计数的错误,我可以很容易地修复,但是,正如您所看到的,如果行太长,文本不会换行 我尝试使用PDF换行符(\n),但C#会在输入字符串中自动转换它 此外,我无法理解要放入文档中的行或对象的位置,因为我遵循这一点,讨论了反转轴配置(x表示高度,y表示宽度),但似乎我没有掌握正确的方法(我在代码中输入了一个恒定的左位置,即40,

我试图通过代码生成PDF,因为并非所有实际的PDF.NET库都支持Windows/Windows Phone 8.1的新Windows运行时。 PDF保存正确,只有一个流位置计数的错误,我可以很容易地修复,但是,正如您所看到的,如果行太长,文本不会换行

我尝试使用PDF换行符(\n),但C#会在输入字符串中自动转换它 此外,我无法理解要放入文档中的行或对象的位置,因为我遵循这一点,讨论了反转轴配置(x表示高度,y表示宽度),但似乎我没有掌握正确的方法(我在代码中输入了一个恒定的左位置,即40,以及一个可变的顶部递减值)(从600开始,如果值小于0,我现在不管理多页)

这是生成的PDF的代码:

http://pastebin.com/ZkZmbJdM 
(如果我使用Pastebin,很抱歉,但是使用此编辑器代码函数,代码对于用于它的特殊字符似乎是未格式化的)


我哪里做错了?

PDF是一种图形格式,试图让你认为它是一种文档格式。但不是,它就像用GDI+绘图一样。这就是为什么它可以在许多平台/程序等上实现相同的渲染输出,而不是像doc/docx这样的文本流格式。这也是为什么它真的可以什么都行

因此,与文档格式不同,生成PDF的程序负责正确布局,就像使用GDI+绘图一样

在docx或html等文档中,必须由渲染程序进行布局工作。有了这样的文档,您只需编写文本,查看器将负责布局


您的PDF库当然有必要的代码来测量文本长度。甚至可能它有一些代码来提供一些布局功能。您必须使用这些函数来进行布局。

事实上,我没有使用任何库。对于字符串宽度,我使用一个假TextBlock,该文本块由给定的FontSize和FontFamily以编程方式创建,在调用TextBlock实例的Arrange和Measure方法后,我提取了ActualWidth属性,并拆分了字符串。但我的问题是文档没有创建任何新行…我不明白为什么。我认为您应该每行使用一个文本块,这就是我所说的布局部分。因此,您是说我尝试使用I每个文本行的独立对象?n 0 obj文本行n endobj m 0 obj文本行m endobj等等?不完全正确。请参阅的第311页。您可以编写
(第一行)'(第二行)“
它可以工作!现在我必须只解决无法工作的自动换行,但我想我可以详细说明一个函数,它可以更好地计算字符串宽度。非常感谢!