我正在使用iText 7 for .NET实现PDF创建,从iTextSharp 5.5.12升级,一切都运行良好,它比以前的版本更简单,更快,但我认为我发现了一个错误.
具体来说,当使用预先存在的PDF并在其上填写表单字段并填写它时,如果字段标记为多行,则忽略任何预设或覆盖的文本对齐,并且文本始终保持对齐.如果我将该字段取消标记为多行,则会预设对齐.
有谁知道解决这个问题的任何方法?谢谢!
这确实是iText 7中的一个错误.我认为很难用你自己的代码来解决这个问题.在iText 7中修复bug时,能够为多行字段使用对齐的最简单方法可能是自己修复问题并从源代码构建二进制文件.
看一下PdfFormField实现.在这里,我采用了最新的开发版本,但master如果您愿意,可以随意使用或修改任何其他版本.
感兴趣的方法是drawMultiLineTextAppearance.您可以看到Canvas已创建Paragraph实例并将实例添加到Canvas.在任何地方都没有提到理由!这是我们应该解决的问题.首先,我们应该将justification属性转换为模块PdfFormField的TextAlignment属性,layout以后可以用于Paragraph:
Integer justification = getJustification();
if (justification == null) {
justification = 0;
}
TextAlignment textAlignment = TextAlignment.LEFT;
if (justification == ALIGN_RIGHT) {
textAlignment = TextAlignment.RIGHT;
} else if (justification == ALIGN_CENTER) {
textAlignment = TextAlignment.CENTER;
}
Run Code Online (Sandbox Code Playgroud)
我们差不多完成了!剩下的是设置TextAlignment段落.在Paragraph添加到Canvas:之前一定要这样做:
// This line was already there
Paragraph paragraph = new Paragraph(strings.get(index)).setFont(font).setFontSize(fontSize).setMargins(0, 0, 0, 0).setMultipliedLeading(1);
// This is the new line we are adding to fix the alignment problem
paragraph.setTextAlignment(textAlignment);
Run Code Online (Sandbox Code Playgroud)
完整的代码:
// The block below was already there:
Paragraph paragraph = new Paragraph(strings.get(index)).setFont(font).setFontSize(fontSize).setMargins(0, 0, 0, 0).setMultipliedLeading(1);
paragraph.setProperty(Property.FORCED_PLACEMENT, true);
// These are the new lines
Integer justification = getJustification();
if (justification == null) {
justification = 0;
}
TextAlignment textAlignment = TextAlignment.LEFT;
if (justification == ALIGN_RIGHT) {
textAlignment = TextAlignment.RIGHT;
} else if (justification == ALIGN_CENTER) {
textAlignment = TextAlignment.CENTER;
}
paragraph.setTextAlignment(textAlignment);
Run Code Online (Sandbox Code Playgroud)
而已!剩下要做的是用mvn package/ 构建模块mvn install.另请参阅BUILDING.md有关建筑的其他信息.
说明适用于Java,但如果您使用的是.NET版本,那么基本上它是相同的,只有构建步骤会有所不同.
iText是一个开源产品,所以请不要害怕探索代码并玩游戏.
| 归档时间: |
|
| 查看次数: |
222 次 |
| 最近记录: |