Tag: pdf

如何将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个元素,仅限于一个页面表。 […]

iTextSharp – 添加垂直文本框

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

没有办公室的Excel到PDF

我需要在我正在处理的Windows应用程序中生成PDF报告,我通过将.xlsx文件导出为pdf来完成此操作。 我目前正在使用互操作,但是: 我需要这样做而不需要用户购买软件,因此没有微软办公室擅长。 我也不能使用任何重依赖(如open / libre office)。 该应用程序在.NET winforms中并且是本地的(不依赖于Internet连接)。 我试过的事情: 我已经尝试过iTextSharp,但是这会像溢出列这样的东西变得非常复杂。 试过closedXML但无法转换为PDF。 (如前所述)尝试互操作但无法找到办法让它独立于办公室。 将不胜感激,谢谢你提前:) 编辑: iTextSharp的 我会使用它,除了我需要导出一个具有可变列数(最多30列)的大型DataTable,如果有很多列,那么处理该列溢出变得非常复杂,这在互操作中很容易。 阅读Aspose 看起来太贵了,因为我在一家目前资源非常有限的小公司工作。

使用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 […]

使用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 […]

设置PDF的边距,页眉和页脚而不重叠

我需要一些帮助,在我的文本区域旁边调整PDF页眉/页脚。 第一页看起来还不错,从那里开始变得更糟。 页眉和页脚是否进入我现有的边距空间? 我想知道出了什么问题以及我可以通过调整来设置以下内容: 页面宽度 边距宽度 头 页脚 文字区域 我的标题覆盖function如下: public partial class Header : PdfPageEventHelper { public override void OnStartPage(PdfWriter writer, Document doc) { PdfPTable headerTbl = new PdfPTable(2); headerTbl.SetWidths(new float[] { 4, 1 }); headerTbl.TotalWidth = doc.PageSize.Width; iTextSharp.text.Image logo = iTextSharp.text.Image.GetInstance(HttpContext.Current.Server.MapPath(“~/Images/view.gif”)); logo.ScalePercent(5); PdfPCell cell = new PdfPCell(logo); cell.HorizontalAlignment = Element.ALIGN_RIGHT; cell.PaddingRight = 20; […]

使用iTextSharp在底部的PDF页脚

我正在尝试使用iTextSharp 5.0.6在c#中创建一个pdf文档。 我想分别为OnStartPage和OnEndPage事件中的每个页面添加页眉和页脚。 在页脚的情况下,存在页面结束时创建页脚的问题,而我希望位于页面底部。 iTextSharp中是否有一种方法可以指定页面高度,以便始终在底部创建页脚。 谢谢!

将Word转换为PDF – 禁用“保存”对话框

我有一个用c#编写的Word to PDF Converter,除了一件事情以外工作正常。 有时(在某些Word文件上)背景中有一条消息, 源文件中保存更改 – >是否取消 – 但我没有在源文件中进行任何更改。 我只是想从Word文件创建一个PDF文件,而不做任何改动。 那么有可能禁用此提示,或自动设置为“否”。 ? 这是我的代码: // Create an instance of Word.exe Microsoft.Office.Interop.Word._Application oWord = new Microsoft.Office.Interop.Word.Application(); // Make this instance of word invisible oWord.Visible = false; oWord.DisplayAlerts = Microsoft.Office.Interop.Word.WdAlertLevel.wdAlertsNone; oWord.Options.SavePropertiesPrompt = false; oWord.Options.SaveNormalPrompt = false; // Interop requires objects. object oMissing = System.Reflection.Missing.Value; object isVisible = […]