2014-09-28 149 views
1

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

pdf_printed

我试着用PDF换行字符(\ n)的,但C#自动将其转换输入字符串 另外,我无法理解线或物体的位置放置到文档中,因为我遵循这个guide online,谈论一个倒车轴的配置(x为高度,y为宽度),但似乎我没有抓住正确的方法(我把我的代码放在一个恒定的左边位置,在40处,并且变量顶部减少值(从600开始,如果数值小于0,我现在不管理多页)

这是生成PDF的代码:

http://pastebin.com/ZkZmbJdM 

(很抱歉,如果我用引擎收录,但使用这个编辑器代码函数的代码似乎是格式化为它所使用的特殊字符)

我在哪里做错了吗?

回答

3

PDF是一种图形格式,试图让你认为它是一种文档格式。但不,不过,就像使用GDI +进行绘图一样。这就是为什么它可以在许多平台/程序/等中实现相同的呈现输出,而不是像doc/docx这样的文本流格式。而且,这也是它能够真正呈现任何东西的原因。

所以,与文档格式相反,程序的责任是生成PDF以获得正确的布局。想想它,就像你用GDI +绘制一样。

在像docx或html这样的文档中,渲染程序必须完成布局工作。有了这样的文件,你只需写文本,观众就会照顾到它。

您的PDF库肯定有测量文本长度所需的代码。也许即使它有一些代码来提供一些布局功能。你将不得不使用这些函数来进行布局。

+0

Infact我不使用任何库。对于字符串宽度,我使用通过给定特定的FontSize和FontFamily以编程方式创建的假TextBlock,在TextBlock实例的Arrange和Measure方法调用之后提取ActualWidth属性并拆分字符串。但我的问题是,该文件没有创建任何新的行......我不明白为什么。 – 2014-09-28 17:40:57

+0

我想你应该每行使用一个文本块,这就是我所说的布局部分。 – 2014-09-28 17:42:12

+0

所以你说我试图为每个文本行使用缩进对象? N 0 OBJ **文本线N ** endobj G 0 OBJ **文本直线m ** endobj 等等? – 2014-09-28 17:47:44