Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# iText7,有没有办法控制矩形内的回车?_C#_Pdf_Itext7 - Fatal编程技术网

C# iText7,有没有办法控制矩形内的回车?

C# iText7,有没有办法控制矩形内的回车?,c#,pdf,itext7,C#,Pdf,Itext7,我用的是iText 7和C,我得写一行长的字 使用canvas.BeginText.ShowTextMy text,我找不到使文本在第二行上传递的方法,\n无法识别 所以我使用了矩形和文档渲染器,但我有同样的问题,我无法控制我的文本在哪里创建新行 我使用一个现有的PDF模型,我必须写一些短到一行的文本和一些由几行组成的段落。这些元素是在xml中定义的,在xml中我可以使用一些回车来分隔段落中的新行。简而言之,文档是动态组合的,其内容和元素的位置在xml文件中定义。使用低级方法(如BeginTex

我用的是iText 7和C,我得写一行长的字

使用canvas.BeginText.ShowTextMy text,我找不到使文本在第二行上传递的方法,\n无法识别

所以我使用了矩形和文档渲染器,但我有同样的问题,我无法控制我的文本在哪里创建新行


我使用一个现有的PDF模型,我必须写一些短到一行的文本和一些由几行组成的段落。这些元素是在xml中定义的,在xml中我可以使用一些回车来分隔段落中的新行。简而言之,文档是动态组合的,其内容和元素的位置在xml文件中定义。

使用低级方法(如BeginText、ShowText、EndText等)添加内容需要对PDF规范ISO 32000有充分的了解。您对被忽略的事实感到惊讶,这告诉我您对PDF不是很精通

iText是为那些不想处理PDF低级语法的人编写的。例如:如果要使用iText在矩形内添加文本,只需创建一个画布对象,将矩形对象传递到该画布对象:

这个例子可以在在线iText 7教程中找到。


屏幕截图显示了一个长句子是如何添加到一个矩形中的,以及该句子是如何分布在不同的行上的,并自动引入新行。当有疑问时,PDF检查ISO 32000中不存在\n字符的概念。如果要引入换行符,将内容的一部分放在一个段落中,另一部分放在另一个段落中就足够了。

如果要添加适合矩形的文本,为什么要使用低级方法?请参见本教程的第1部分。“你想用一种困难的方式做一件容易得多的事情,这有什么原因吗?”herve说到主题:“我添加的屏幕截图显示了一个长句是如何添加到一个矩形中的,以及这个句子是如何分布在不同的行中,自动引入新行的。”。当有疑问时,PDF检查ISO 32000中不存在\n字符的概念。如果你想引入换行符,将内容的一部分放在一段中,另一部分放在另一段中就足够了。为什么这不能解决你的问题?谢谢你的回答。它部分地解决了这个问题。在我的例子中,我使用一个现有的PDF模型,其中我必须写一些短到一行的文本和一些由几行组成的段落。这些元素是在xml中定义的,在xml中我可以使用一些回车来分隔段落中的新行。简而言之,文档是动态组合的,它的内容和元素的位置是在xml文件中定义的。我们建议您改进您的问题。这是你这样做的机会。请注意,PDF不是文字处理格式。PDF中的所有内容都是在绝对坐标和固定位置添加的。您不能仅仅添加内容,而期望现有内容能够适应新内容。您可能想解释一下,如何使用静态文档来创建现有的PDF不会与您声称的动态编写文档相矛盾。需要进一步澄清。
PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
PdfPage page = pdf.AddNewPage();
PdfCanvas pdfCanvas = new PdfCanvas(page);
Rectangle rectangle = new Rectangle(36, 650, 100, 100);
Canvas canvas = new Canvas(pdfCanvas, pdf, rectangle);
PdfFont font = PdfFontFactory.CreateFont(FontConstants.TIMES_ROMAN);
PdfFont bold = PdfFontFactory.CreateFont(FontConstants.TIMES_BOLD);
Text title =
    new Text("The Strange Case of Dr. Jekyll and Mr. Hyde").SetFont(bold);
Text author = new Text("Robert Louis Stevenson").SetFont(font);
Paragraph p = new Paragraph().Add(title).Add(" by ").Add(author);
canvas.Add(p);
pdf.Close();