iTextSharp-move Acrofield
我有一个过程,将内容表插入现有的Acroform中,并且我能够跟踪需要启动该内容的位置.但是,根据我插入的桌子的高度,我的现有Acrofield需要在这一点以下,需要向上或向下移动.这样,我该如何改变杂技的位置?以下是我可以用来"获得"位置的代码...但是现在我还需要能够"设置"它. .... // Initialize Stamper ("output" is a MemoryStream object) PdfStamper stamper = new PdfStamper(pdf_rdr, output); // Get Reference to PDF Document Fields AcroFields fields = stamper.AcroFields; //call method to get the field's current p
0 2024-04-21
编程技术问答社区
用PDFBox 2.x在PDF上放置一个按钮
我希望有人可以帮助我解决使用PDFBox 2.x创建的PDF上的按钮和Textfields的问题. 我试图在页面上放一个按钮,该按钮在带有JavaScript函数的文本字段中设置了一个日期.效果很好. 然后,我试图将文档和包含多个页面的文档中的按钮放在文档中,以便每页出现Textfield和按钮,但是这样,页面上的按钮仅将日期写入按钮所在的页面上的Textfield,我单击了. 从此我收到问题,第一个页面上的按钮对第一页的Textfield做出了反应,但是第一个页面是唯一的页面反应. 然后,我保存了4个文档,每个文档都有一个页面,每个文档工作正常. 但是,当我将4个文档合并到一个带有4页的一个文档时,我收到了与以前相同的问题. 有人可以告诉我,这里有什么问题? 谢谢 托马斯 这是我的Java代码: import java.io.File; import java.io.IOException; import java.text.Decima
16 2024-04-05
编程技术问答社区
ITextSharp 4.1.6-从PDF模板中删除现有行数
我有一个在libreoffice中创建的PDF模板,我正在使用Acrofields填充它.在某些极少数情况下,我想隐藏一个特定的字段,因此我使用RemoveField方法将其删除.然而,它一直留在那里.根据我的谷歌搜索,似乎这可能是Libreoffice创建表格的方式. 到目前为止,我想到的是要获得田野的矩形,并用白色图像覆盖它.但是问题是,使用背景图像和/或其他背景颜色创建模板的客户计划比白色使我当前的解决方案几乎无法使用 因此,问题是 - 有什么方法可以删除边界吗? [例如.通过访问ItextSharp的一些低级对象模型,或类似的东西] 非常感谢 解决方案 删除单个图形对象可能会变得有些棘手,但并非不可能.最难的部分是确定要删除的对象.以下是一些示例代码定位ITEXTSHARP 4.1.6,首先创建一个带有两个矩形的PDF,然后根据第一个矩形创建第二个PDF,其中一个矩形已删除.您需要应用逻辑以找出要删除的矩形.您实际上可能没有矩形,而是恰好形成矩形的线,在
8 2024-04-02
编程技术问答社区
阿拉伯语数据在iText中的表格扁平化时消失了
我使用PDFSTAMPER填充了一些阿拉伯数据.当我将表格弄平时,文字在英语工作正常时就会消失.请指导. BaseFont unicode = null; unicode = BaseFont.createFont("D:/arialuni.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); form.setGenerateAppearances(true); form.addSubstitutionFont(unicode); form.setField("TextBox","اب اب اب اب اب اب اب اب اب اب اب اب اب اب اب اب اب"); stamper.setFormFlattening(true); 解决方案 保存,编译或执行代码时可能是一个编码问题(这意味着您的问题与Itext无关).这是我尝试过的代码: PdfRea
6 2024-03-03
编程技术问答社区
使用Apache FOP添加一个PDF可填表(acrofield)。
我正在尝试添加一个可填充的表格(以便最终用户可以使用Acrobat读取器将信息插入其中,然后将其保存到使用Apache FOP生成的PDF.如果可能的话,我似乎找不到有关如何完成此操作的任何信息. Google并没有提供太多相关信息,主要是因为它是不可能的,但是大多数信息可以追溯到2000年代初期. . 有没有办法使用FOP? 添加Acrofields 解决方案 (披露:我是FOP开发人员,尽管现在不是很活跃) xsl-fo语言是FOP的输入语言,没有格式化对象定义表单字段,因此FOP无法从头开始创建Acroforms(您需要开发延期实现这一点). 但是,当用户 @mkl 在评论中说, pdf images插件允许在FOP创建的最终PDF中包含来自现有PDF文件的页面,就像它们是图像一样;根据发行说明,该插件提供了"对Acroforms(PDF表格)的支持有限". 因此,如果您已经有了PDF表格,则可以像普通图像一样使用它:
12 2024-02-28
编程技术问答社区
PDF hostContainer的回调
遵循此解决方案在这里要在PDF文档中将单击事件通知客户功能? PDF文件是在用户控件中创建的,然后渲染到HTML对象中: string container = (""); pdf上的JS文件是这样完成的: var webClient = new WebClient(); string htmlContent = webClient.DownloadString(fileurl + "pdf_script.js"); PdfAction action = PdfAction.JavaScript(htmlContnent, pdfstamper.Writer); pdfstamper.Writer.SetOpenAction(action); 和JS文件的内容: this.disclosed = true; if (this.exte
8 2024-01-19
编程技术问答社区
如何在iText中获取AcroField修订的名称?
我目前正在使用用于应用和验证PDF文档上的数字签名的工具.我知道PDF文档中的每个签名都应用于Acrofields的某个修订版.每次用户更改某些输入(即,通过填写PDF表单)会创建新的修订. 我的问题是:如何从Acrofields对象中检索所有修订?我知道如何获得单修订,如果我有这样的名字: AcroFields fields = ...; fields.getRevision("revision1"); 但是我如何检索所有修订(或至少他们的名字)?到目前为止,我还没有在Itext API和网络中找到任何东西. 我在版本2.1.7中使用itext. 谢谢,问候, 汤姆 解决方案 有些背景 通常,PDF文件由标头,一个主体,交叉参考信息和预告片组成,请参见下面的图2.更新此类PDF文件时,您可以选择 重新构建整个文档都集成了所有更改(这再次导致PDF像原始文件一样形成) 或者您可以附加身体元素的更改并交叉引用文档,并添加新的预告片也引用了以
12 2023-09-03
编程技术问答社区
PDFBOX acroForm已填好,但在Acrobat reader中打开时数值消失了
我有pdf表单,我试图用pdfbox填充它.它有效,填充表单,并且我与其他读者或浏览器打开,我可以看到值,但是当我尝试在Adobe Reader值中打开时,我尝试了所有可能的方法来找出原因,但是不可见. P> 我有模板表单,我使用并填写数据,重命名字段并将其合并到其他文档中,并重做该过程,直到填写所有表单. 我不确定这是否与我的代码或Adobe读取器有关. > 这是我的代码填充表格. abstract class AbstractPDFFormFiller { private val logger = LogManager.getLogger() private val merge = PDFMergerUtility() private val PAGE_SIZE = 12 fun fillForm(templatePath: String, data: List, headerParam: Map
44 2023-06-30
编程技术问答社区
使用pdfbox调用acroform.getFields()时得到空值
我试图以PDF表单获取所有字段,但是当使用PDFBox. 样本: pdDoc = PDDocument.load(fileName); PDAcroForm form = pdDoc.getDocumentCatalog().getAcroForm(); if(form!=null) { List field = form.getFields(); //here I am getting null pointer exception } 解决方案 这是因为您的PDF如果不包含任何Acroform 其他解决方案 我遇到了同样的错误,事实证明,我只是假设我们收藏中的所有PDF都从该特定屏幕中都有字段.事实证明,事实并非如此,我们的客户拥有某些根本没有字段的PDF.因此,只需添加一个空检查即可确保Actroform不是空的,您应该很好.
16 2023-06-06
编程技术问答社区
PDF表格字段中的特殊字符以及基于全局和字段的DR
我有一个关于怪异形式的现场行为的问题. 两个PDF文档,都使用Helvetica作为字体 都有Textfield(S) 两者都使用相同的ITEXT逻辑(Cp.下)填充值 两个PDF的场值(/V)都是正确的,但是场外观却不是. 一个PDF正常工作的另一个特殊角色(例如欧元符号或德国人物)等特殊角色. 我试图定义替代字体(如书中所述),但是从来没有工作过. 我发现的唯一区别是A/DR Dictionary是在非工作pdf的字段级别上定义的(在全球范围内).但是,如果我将其删除,则€标志仍然不起作用.请注意,我不是在这里谈论亚洲或一些异国情调的Unicode字符 - 所有这些都是标准Helvetica字体的一部分(正如其他PDF所证明的那样) 问题: 有什么想法如何使非工作的PDF正确显示角色? 还是PDF违反了PDF规格? (它是使用Acrobat创建的,这使得这不太可能但并非不可能). 如果您建议替换 field field font - 我如何区分工作
8 2023-06-05
编程技术问答社区
PDFBox如何从另一个pdf导入acrofield?
我对导入存在问题,存在于从pdf到另一个PDF的Acrofield. 两个PDF相似.我尝试导入并保存文件(下面的代码).如果我从文件系统打开它,我看不到更改,但是如果使用PDFBox打开它,则会看到较早的Acrofiles. 我注意到文件大小增加了,但是当我打开时,我看不到字段可填充. 预先感谢您 PDDocument documentSrc = PDDocument.load(new File(SRC)); PDAcroForm acroFormSrc = documentSrc.getDocumentCatalog().getAcroForm(); PDDocument documentDest = PDDocument.load(new File(DEST)); PDAcroForm acroFormDest = new PDAcroForm(documentDest); System
22 2023-05-22
编程技术问答社区
如何使用java PDFBox以编程方式将图像插入AcroForm字段?
我创建了带有3个标签的简单PDF文档:名字,姓氏和照片.然后,我使用Adobe Acrobat Pro DC. 因此,如果我想填写表格,我可以在常规的Acrobat读取器中打开此PDF文件,并通过键入名字,姓氏,姓氏和插入照片来填充,我单击图像占位符,然后在打开的对话框窗口中选择照片. 但是我该如何编程地做同样的事情? 创建了使用Apache PDFBox Library(版本2.0.7)查找表单字段和插入值的简单Java应用程序. 我可以轻松地填充文本编辑字段,但无法弄清楚如何插入图像: public class AcroFormPopulator { public static void main(String[] args) { AcroFormPopulator abd = new AcroFormPopulator(); try { abd.populateAndCopy("test.p
34 2023-05-22
编程技术问答社区
PDFBox API:如何改变字体以处理AcroForm字段中的西里尔字母值
我需要使用PDFBox API向字段添加西里尔值的帮助.这是我到目前为止所拥有的: PDDocument document = PDDocument.load(file); PDDocumentCatalog dc = document.getDocumentCatalog(); PDAcroForm acroForm = dc.getAcroForm(); PDField naziv = acroForm.getField("naziv"); naziv.setValue("Наслов"); // this part right here naziv.setValue("Naslov"); // it works like this 当我的输入在拉丁字母中时,它的功能非常完美.但是我也需要处理西里尔的输入. 我该怎么办? P.S.这是我得到的例外: 引起的是:java.lang.illegalargumentException:u+043d('afii10079')在
32 2023-05-22
编程技术问答社区
我可以使用iText在PDF中查找字段的边框颜色吗?
无论如何,是否有使用itext最新版本在我的PDF中找到特定字段的边界彩色?我可以得到Acrofield.item,但我看不到从那里获得边界色的选项. 解决方案 请看一下此pdf:.此PDF是使用 textfields 示例而创建的.以下代码段用于设置字段的边框,名称text_2: text.setBorderStyle(PdfBorderDictionary.STYLE_SOLID); text.setBorderColor(BaseColor.BLUE); text.setBorderWidth(2); 现在,当我们使用 itext rups ,我们在现场看一件看,该字段的字典/小部件注释,我们看到以下结构: 我们看到/BS字典定义了固体边框样式(/S键的值为/S)和带有值2的边框宽度(/W). 我们还看到,/MK条目的边框颜色(/BC)条目是一个具有三个值的数组:[ 0 0 1 ].这意味着边框颜色是RGB颜色,其中红色值为0,绿色值为0,蓝色的值为1
14 2023-05-22
编程技术问答社区
使用iText更改现有PDF中的AcroFields顺序?
我有一个带有文本表单字段的PDF,一个层面是一个层面.当我通过itext填充字段并弄平表单时,我在另一个表单字段顶部创建的表单字段现在在底部. 例如,我有一个名为" number_field"的文本字段,该字段在第二个文本字段下,标题为" name_field".当我通过itext设置这些字段的值(SO number_field和'name_field的'john'),number_field现在位于name_field的顶部. 如何使用ITEXT更改这些字段页面上的顺序?有可能吗? 链接到示例pdf: 解决方案 我在Itext Group的" esseage Tracker"中制作了以下票: 问题是由于Itext将字段项读为 HashMap,因此无法预测他们将在哪个顺序上 被扁平.这通常不是问题.我不认为这个问题 如果您不将PDF弄平,则会发生,因为在这种情况下 外观存储在小部件注释中,取决于PDF 查看者决定在重叠的情况下哪个字段覆盖另一个字段 字段.
22 2023-05-22
编程技术问答社区
使用iTextSharp将HTML格式的文本填充到PDF模板acrofield中
我正在使用ItextSharp填充PDF模板.我使用的数据保存在数据库中,并格式为HTML.我的问题是,当我用本文加载AcroField时,我会让它进行划分,但没有大胆或斜体. 我已经尝试使用HTMLWorker,但是在线所有示例都表明它用于将HTML转换为PDF,但我试图在PDF模板中设置AcroField. . 解决方案 花了几天的时间浏览论坛和itextsharp源代码后,我找到了一个解决方案.我没有用HTML格式的文本填充Acrofield,而是使用了columnText.我解析HTML文本,然后将iements加载到段落中.然后将段落添加到列文本中.然后,我使用该场的坐标覆盖了Acrofield所在位置的柱状文本. public void AddHTMLToContent(String htmlText,PdfContentByte contentBtye,IList pos) {
24 2023-05-22
编程技术问答社区
在iText中将图像添加到acrofield?
我正在尝试使用Acrofields填充PDF,我可以完美地添加字符串数据,但是在向Acrofield添加图像时有问题. 这是我添加字符串数据的代码. File f = new File("F:/Test/Agreement.pdf"); InputStream sourceTemplatePDFUrlStream = new BufferedInputStream(new FileInputStream(f)); File destinationFile = new File("F:/Test/ag1.pdf"); PdfReader reader = new PdfReader(sourceTemplatePDFUrlStream); PdfStamper stamper = new PdfStamper(reader, new FileOutputStream( destinationFile)); A
28 2023-05-22
编程技术问答社区
扁平化后的AcroForm值丢失
我正在使用libreoffice 4.1.3.2生产可填充的PDF: 创建一个作者文档 设置一些文本和测试字段 导出到PDF 使用Acrobar Reader打开PDF文件显示正确的可填充PDF. 接下来,我使用ItextSharp 5.4.5来填充字段并保存平坦的文档: var pdf = new PdfReader(srcFilename); using (var fw = new FileStream(dstFilename, FileMode.Create)) { var stamper = new PdfStamper(pdf, fw); var f = stamper.AcroFields; f.SetField("field1", "John Doe"); f.SetField("field2", "12/04/2013"); stamper.FormFlattening = true; stampe
12 2023-02-07
编程技术问答社区
如何在现有表格中使用iText将复选框样式设置为 "检查"?
我有使用Adobe Acrobat Standard DC创建的Acroform的PDF. 使用Java Itext 5填充的Chekcbox字段. 当我在属性中创建它时,我将其设置为"检查"框样式,以便在检查时将" V"样式符号放置. ,如果我在预览模式下打开表单并检查此复选框: 但是,当我使用itext 5设置此字段至检查状态时,它检查它是交叉的: 我不知道为什么它会改变样式? 我的代码很简单: void populateCheckBox(AcroFields form, String searchKey, String value) throws IOException, DocumentException { if (form.getFieldType(searchKey) == AcroFields.FIELD_TYPE_CHECKBOX) { String[] states = form.getA
16 2022-12-28
编程技术问答社区
将AcroField文本大小设置为自动
使用itextsharp,我正在尝试将表单文本字段的字体大小设置为auto. 我目前正在做这样的事情: Object d = 0.0; PdfReader reader = new PdfReader(path); byte [] pdf; using (var ms = new MemoryStream()) { PdfStamper stamper = new PdfStamper(reader, ms); AcroFields fields = stamper.AcroFields; foreach (var f in fields.Fields.Keys) { fields.SetFieldProperty(f, "textsize", d, null); } } 但是我会收到以下错误: System.InvalidCastException: Specified cast is not va
34 2022-12-16
编程技术问答社区