C# 用于创建标记的itextsharp编辑器

C# 用于创建标记的itextsharp编辑器,c#,itextsharp,C#,Itextsharp,我想知道是否有一些程序可以编辑itextsharp代码 现在我直接在VS lile中编写代码: // Delivery address details int left_margin = 40; int top_margin = 720; writeText(cb, "Delivery address", left_margin, top_margin, f_cb, 10); writeText(cb, drHead["delCustomerName"].ToString(), left_mar

我想知道是否有一些程序可以编辑itextsharp代码

现在我直接在VS lile中编写代码:

// Delivery address details
int left_margin = 40;
int top_margin = 720;
writeText(cb, "Delivery address", left_margin, top_margin, f_cb, 10);
writeText(cb, drHead["delCustomerName"].ToString(), left_margin, top_margin-12, f_cn, 10);
writeText(cb, drHead["delAddress1"].ToString(), left_margin, top_margin-24, f_cn, 10);
writeText(cb, drHead["delAddress2"].ToString(), left_margin, top_margin-36, f_cn, 10);
writeText(cb, drHead["delAddress3"].ToString(), left_margin, top_margin-48, f_cn, 10);
writeText(cb, drHead["delZipcode"].ToString(), left_margin, top_margin-60, f_cn, 10);
writeText(cb, drHead["delCity"].ToString() + ", " + drHead["delCountry"].ToString(), left_margin+65, top_margin-60, f_cn, 10);

但是我想用一些编辑器来做这件事,因为手工写这件事太可怕了。我正在搜索编辑器,但找不到它。

我猜您继承了一些代码,对吗?我之所以这么说,是因为
writeText()
不是来自iTextSharp,而是某人的特定实现围绕着iTextSharp的代码

iTextSharp是一个最终生成PDF的库,因此受PDF规范的约束。这首先也是最重要的是要理解。即使你已经知道这一点,你也必须时刻牢记这一点

iText在两种基本模式下运行,1)完全抽象,在其中添加“段落”和“表格”,2)手动放置模式,在其中说“在这个坐标下使用这种字体编写文本,别担心,我已经测量了所有内容,所以我知道在何处插入换行符,这样看起来就不会奇怪。”

完全抽象模式(我的术语,而不是他们的术语)使用
文档
对象,您可以创建新的
段落
对象,并
将它们添加到
文档
中,然后iText为您计算出其余部分。控制更少,但如果你能在这种模式下生活,你的生活会轻松得多

手动放置模式(我的术语,不是他们的)使用
PdfWriter
PdfContentByte
类的实例来发出更接近PDF规范的命令。这种模式的使用假设您至少已经部分阅读了规范。例如,您应该知道“段落”和“表格”实际上并不存在于PDF中

您正在使用的变量cb
,几乎肯定是
PdfContentByte
的一个实例,因此您使用的是手动放置模式

现在回答你的问题


不,没有专门用于编辑iTextSharp代码的GUI程序。但是,有些程序,如Adobe Acrobat、Adobe Illustrator和Adobe InDesign,确实知道如何使用PDF。可能也有免费的。您可以使用这些程序,找到事物的x、y坐标,然后手动将它们写入代码中。

我喜欢这个术语;-)谢谢@BrunoLowagie!@Chris thx提供的信息。所以最好是使用Adobe并检查x,y坐标并将其转换为代码。如果你想设计东西,那么是的,我建议使用基于设计的程序。唯一的其他选择是你现在可能正在做的事情,尝试一些数字,看看它们的外观。你会发现ed必须非常清楚坐标的原点,不仅是角点,还包括它们的相对位置、页面边缘、页面边距等。