Tag: itextsharp

使用itextSharp 5.3.3对数字签名和validationPdf文档

我正在尝试使用iTextSharp 5.3.3对服务器(c#)上的pdf文档进行数字签名和validation。 我使用DigiSign(在线工具)生成.Pfx文件,然后使用Windows生成证书(.cer)文件 /// /// Signs a PDF document using iTextSharp library /// /// The path of the source pdf document which is to be signed /// The path at which the signed pdf document should be generated /// A Stream containing the private/public key in .pfx format which would be used to sign the […]

使用ItextSharp PdfPTable,table.TotalHeight返回0.0,但期望正浮点值

我正在使用ItextSharp创建一个包含多个PdfPTable的PDF文档。 我使用列表对多个PdfPTable进行分组,列表在函数中创建并作为列表返回。 然后我获取列表并循环遍历它以将每个PdfPTable添加到文档中。 如果列表中的下一个PdfPTable大于文档上的剩余空间,我想添加一个新页面。 使用断点,我注意到“table.TotalHeight”总是返回0,当我希望它返回一个正浮点值时。 我可能误解了table.TotalHeight的工作方式,但根据我的理解,它应该返回单个表的总高度。 for (count1 = 0; count1 (writer.GetVerticalPosition(false) – doc.BottomMargin)) { doc.Add(new Paragraph(“Quote continues on next page”)); doc.NewPage(); } doc.Add(new Paragraph(” “)); doc.Add(table); }

如何将PdfPTable插入现有的PDF模板?

更新: 经过一番讨论,我们决定选择TeX,特别是兼容Windows的MiKTeX 。 我们意识到即使我们可以通过微观管理布局(这似乎不可能或者像计算每行的行高一样繁琐)来获得动态加长表,还有其他动态控件,如大文本框,我们也会需要微观管理,所以我们决定动态生成整个文档。 考虑到这一点,去TeX是显而易见的选择,因为它的力量和我们之前的经验,现在一周之后,我很高兴我们这样做,因为我们的所有报告都是动态生成的,而且背后的代码是干净的最小的。 原版的: 我有一个使用LiveCycle生成的pdf表单模板,我想填写它(pdfstamper)并添加一些表(pdfptable),但事实certificate它比我最初的想法更难。 我打开pdf并使用pdfstamper编辑静态字段: using (var outputPDF1 = new MemoryStream()) { var pdfReader = new PdfReader(pdf); var pdfStamper = new PdfStamper(pdfReader, outputPDF1); var pdfFields = pdfStamper.AcroFields; pdfFields.SetField(“Field1”, “Value1”); 这是直截了当的。 然后我尝试添加一个表,该表将从几个页面上的设置位置开始。 这里有一个尝试3岁,有一个更老版本的itextsharp,它是非常手动的。 该代码的关键是使用GetOverContent插入ColumnText与生成的表,但这需要知道表高度并手动切割表大小 var cb = pdfStamper.GetOverContent(1); var ct = new ColumnText(cb); ct.Alignment = Element.ALIGN_CENTER; ct.SetSimpleColumn(36, 36, PageSize.A4.Width-36, PageSize.A4.Height-300); ct.AddElement(table); ct.Go(); 还有另一个答案Itextsharp:在一页上调整2个元素,仅限于一个页面表。 […]

如何在不写入文件的情况下获取DataVisualization.Charting.Chart到iTextSharp.text.Image的图像?

我正在编写一个用于可视化测量数据的软件。 为此,我使用System.Windows.Forms.DataVisualization.Charting.Chart,我知道我可以通过chartObj.SaveImage获取显示的图像,以将其存储到文件中。 我的软件应有PDF导出,其中应包含图片。 为此,我正在使用iTextSharp。 同样,我知道如何通过iTextSharp.text.Image.GetInstance将我存储在文件中的图片放入PDF中。 所以到现在为止,我可以拍摄图表的图片,将其放入文件(例如.jpg文件)并再次加载此文件以将其放入我的PDF中。 现在我正在寻找一个很好的解决方案,将图片放入PDF而不将其存储到文件中,可能通过Stream或类似的东西。 我已经尝试了很长时间,但直到现在我还没有成功。 我想到了类似的东西 Stream imageStream = image of chartObj; iTextSharp.text.Image picture = iTextSharp.text.Image.GetInstance(imageStream); 据我所知,我无法将chartObj中的图片放入Stream而不是文件中。 如果我有这个,我想我可以通过iTextSharp.text.Image.GetInstance加载Stream。 有没有人可以提供一些帮助? 猜猜不是那么难,但我是C#和iText的新手,所以我只是有点卡在这里。 提前感谢您对此的每一个想法! 安娜

iTextSharp – 添加垂直文本框

有谁知道是否可以使用itextsharp将垂直文本框添加到PDF文档。 我先尝试过旋转页面 PdfDictionary pDict = reader.GetPageN(1); pDict.Put(PdfName.ROTATE, new PdfNumber(90)); AddTextBox(stamper, ………..) // Rotate back 但这只是水平添加文本框,我需要在旋转后获得另一个压模实例吗?

使用iTextSharp(C#)从PDF中提取嵌入式XML

我需要使用C#提取嵌入在破产法庭文件中的 XML数据。 在PDF Reader中,该文件看起来像一个典型的法庭文档。 在记事本中,XML隐藏在文本中。 我尝试使用SimpleTextExtractionStrategy使用此文本和另一个代码片段提取文本。 第一个结果是文件中没有来自PDF和第二个输出符号的可识别文本。 我也试过将它作为AcroField和Xfaform访问。 它似乎不是基于Watch窗口的那些。 通过Visual Studio中的代码,XML显示在Watch窗口中的PDFReader >> Catalog >> Keys >> Raw >> Non-Public Members >>字典下。 我不知道怎么做到这一点。 由于它与Watch中的其他PDFNames一起列出,我认为我可以通过PDFReader.Catalog.GetAsDict访问它,但它不会显示为PDFName。 这些文件的提供者有一个似乎只读取文本的Java应用程序。 不确定我是否需要使用不同的提取策略,或者直接访问包含XML的目录项。 我从来没有以编程方式使用PDF文件或iTextSharp,所以我很挣扎。 任何代码建议?

试图在c#中将图像插入pdf

我需要根据生成的条形码文件插入图像。 我遇到的问题是当使用iTextSharp库我通常可以填写文本,如 PdfReader pdfReader = new PdfReader(oldFile); PdfStamper pdfStamper = new PdfStamper(pdfReader, outFile); AcroFields fields = pdfStamper.AcroFields; fields.SetField(“topmostSubform[0].Page1[0].BARCODE[0]”, “X974005-1”); 虽然有一个字段在pdf中,如果我点击它,它会提示我插入到字段中的图像,但我似乎无法以编程方式完成此操作。 根据一些谷歌搜索和绊倒stackoverflow页面,我插入以下代码,期望它按预期工作: string fieldName = “topmostSubform[0].Page1[0].BARCODE[0]”; string imageFile = “test-barcode.jpg”; AcroFields.FieldPosition fieldPosition = pdfStamper.AcroFields.GetFieldPositions(fieldName)[0]; PushbuttonField imageField = new PushbuttonField(pdfStamper.Writer, fieldPosition.position, fieldName); imageField.Layout = PushbuttonField.LAYOUT_ICON_ONLY; imageField.Image = iTextSharp.text.Image.GetInstance(imageFile); imageField.ScaleIcon = PushbuttonField.SCALE_ICON_ALWAYS; imageField.ProportionalIcon = false; imageField.Options = BaseField.READ_ONLY; […]

如何使用C#中的iTextSharp将添加的图像带到最前沿

好的,我必须制作一个有一些风格的PDF。 这是标签。 我有以下代码: Document doc = new Document(PageSize.A4); int labelHeight = 394; int labelWidth = 556; float labelTop = doc.PageSize.Height – 2; float labelBottom = doc.PageSize.Height – labelHeight; MemoryStream ms = new MemoryStream(); PdfWriter writer = PdfWriter.GetInstance(doc, ms); doc.Open(); PdfContentByte cb = writer.DirectContent; // Generate Boxes For Content cb.SetColorStroke(new CMYKColor(207, 115, 255, 133)); cb.SetLineWidth(4); cb.SetColorFill(new […]

计算iTextSharp PDF文件的高度?

使用iTextSharp时,如何计算PDF文档的高度? 我正在使用iTextSharp使用绝对位置在PDF文档上定位各种图像。 但是我注意到SetAbsolutePosition()从底部定位Y参数,所以我需要计算高度才能做到这样的事情: Y = PdfHeight – i

使用XMLWorker将HTML解析为PDF时设置行间距 – ITextSharp C#

我正在使用XMLWorker将HTML字符串解析为PDF文档,并且找不到控制正在生成的PDF的行间距的方法。 Document document = new Document(PageSize.LETTER, 72f, 72f, 108f, 90f); MemoryStream stream1 = new MemoryStream(); PdfWriter pdfWriter = PdfWriter.GetInstance(document, stream1); document.Open(); //parse HTML into document XMLWorkerHelper.GetInstance().ParseXHtml(pdfWriter, document, new StringReader(summary.Content)); “summary.Content”是来自数据库字段的HTML字符串。 现在,我最近将我们的ITextSharp库升级到5.5.5.0,并升级到新的XMLWorker库。 使用上面的代码,行间距(PDF格式中的“前导”)远小于之前生成的PDF。 我需要确保行间距看起来和以前一样。 我读到我可以在我构建的段落上设置前导,但是当简单地调用ParseXHtml()时,这对我没有帮助。 我读到ITextSharp的默认值是字体大小的1.5倍。 我在这里阅读了itextsupport文档 ,我可以使用这一行来使用XML Worker附带的default.css。 CSSResolver cssResolver = XMLWorkerHelper.getInstance()。getDefaultCssResolver(true); 我认为默认的CSS可能会生成与我的旧PDF相同的PDF,但是下面的代码产生了与我刚使用ParseXHtml()时相同的输出PDF。 var sr = new StringReader(summary.Content); HtmlPipelineContext htmlContext = new HtmlPipelineContext(null); htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory()); ICSSResolver […]