标签: itextsharp

带有超链接的 itextsharp 图像

我使用 itextsharp 库和 c# 创建了一个带有图像的 pdf。现在我需要在那个图像上有一个超链接,这样当点击它时,它就会转到一个特定的站点。我该怎么做?我试图找到链接到图像对象的属性,但找不到。

c# itextsharp

3
推荐指数
1
解决办法
2975
查看次数

Itext Sharp Merge Pdfs with acrofields

我正在使用itext sharp在我的模板上用值填充我的表单字段.

我使用pdfescape.com创建了模板

这是我用来将值放在pdf模板中的代码.

 private static byte[] GeneratePdf(Dictionary<String, String> formKeys, String pdfPath)
    {
        var templatePath = System.Web.HttpContext.Current.Server.MapPath(pdfPath);
        var reader = new PdfReader(templatePath);
        var outStream = new MemoryStream();
        var stamper = new PdfStamper(reader, outStream);

        var form = stamper.AcroFields;
        var fieldKeys = form.Fields.Keys;

        // "Flatten" the form so it wont be editable/usable anymore  
      //  stamper.FormFlattening = true;

        foreach (KeyValuePair<String, String> pair in formKeys)
        {
            if (fieldKeys.Any(f => f == pair.Key))
            {
                form.SetField(pair.Key, pair.Value);
                form.SetFieldProperty(pair.Key, "setfflags", PdfFormField.FF_READ_ONLY, null);
            }
        }
        stamper.Close(); …
Run Code Online (Sandbox Code Playgroud)

c# pdf asp.net-mvc itext itextsharp

3
推荐指数
1
解决办法
5304
查看次数

当我使用 iText 从 PDF 文件中提取文本时,我从前几页获取值

我试图从多页 PDF 文件中每一页的特定位置提取一段文本。

我有文本的位置,我能够在第一页上正确提取它。然而,在第一页之后的页面上,提取的文本似乎正在积累。

例如,如果第 1 页上的文本值是“A”,第 2 页是“B”,第 3 页是“C”,那么我通过 FOR 循环在每次迭代的输出字符串中收到以下值:

循环1:输出= A

循环2:输出= BA

循环3:输出= CBA

我在我的项目中使用 iTextSharp,用 C# 编写。

任何帮助,将不胜感激。

var reader = new PdfReader(foregroundFile);

RectangleJ customerIdRectangle = new RectangleJ(0, 495, 108, 27);
RenderFilter[] filters = new RenderFilter[1];
LocationTextExtractionStrategy regionFilter = new LocationTextExtractionStrategy();
filters[0] = new RegionTextRenderFilter(customerIdRectangle);
FilteredTextRenderListener strategy = new FilteredTextRenderListener(regionFilter, filters);

for (int i = 1; i <= reader.NumberOfPages; i++)
{
    string output = "";
    output = PdfTextExtractor.GetTextFromPage(reader, i, strategy);
    Console.WriteLine(output);
}
Run Code Online (Sandbox Code Playgroud)

c# pdf itext itextsharp

3
推荐指数
1
解决办法
2277
查看次数

itextsharp c#中的RTL对齐

我想在我的 pdf 中添加阿拉伯语文本。我需要做一个 RTL 对齐。PDF 中的希伯来语文本给出了如何使用 PdfpTable 的答案。

并使用

table.RunDirection = PdfWriter.RUN_DIRECTION_RTL;
Run Code Online (Sandbox Code Playgroud)

我可以做到。但是,当我根本不创建 PdfPTable 时,还有其他方法可以这样做吗?

c# itextsharp

3
推荐指数
1
解决办法
1871
查看次数

如何使用asp.net c#直接打印使用iTextSharp动态创建的PDF?

我环顾四周,似乎无法找到适合我的方式.我正在创建一个网站,我有两个按钮,一个下载按钮(工作正常)和一个应该打印PDF的打印按钮(甚至只需打开打印对话框打开adobe中的PDF).

我和其他许多问题的最大区别在于我不是要创建一个新文档.我的PDF是使用我已经创建的模板PDF生成的.

我只需要一种方法来打印文档.我无法将其保存在服务器上,因为我希望客户端能够打印它.我已经尝试了一个MemoryStream,但它没有工作(授予我可能没有正确编写,代码如下).标题是从不同的页面抓取的.

using (var ms = new MemoryStream())
{
    Response.ContentType = "application/octet-stream";
    Response.AppendHeader("Content-Disposition", header);   /

    Response.Buffer = true;
    Response.Clear();
    var bytes = ms.ToArray();
    PdfReader r = new PdfReader(template);         
    using (PdfStamper ps = new PdfStamper(r, Response.OutputStream))    
    {
        AcroFields af = ps.AcroFields;
        ...
        ps.FormFlattening = true;
    }
    Response.OutputStream.Write(bytes, 0, bytes.Length);
    Response.OutputStream.Flush();
Run Code Online (Sandbox Code Playgroud)

同样,我希望客户能够打印出单击"打印"按钮后生成的PDF.

c# printing pdf asp.net itextsharp

3
推荐指数
1
解决办法
6140
查看次数

使用用户输入文件名保存 pdf 文件 (iTextSharp)

我想允许用户输入他自己的文件名,就像保存文件对话框和流一样(例如: Stream s = File.Open(sfdPdf.FileName, FileMode.CreateNew)

这是我的代码:

    private void btnSave_Click(object sender, EventArgs e)
    {

        System.Drawing.Rectangle bounds = this.Bounds;
        using (Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height))
        {
            using (Graphics graphics = Graphics.FromImage(bitmap))
            {
                graphics.CopyFromScreen(new Point(bounds.Left, bounds.Top), Point.Empty, bounds.Size);
            }
            bitmap.Save("Image.jpeg", ImageFormat.Jpeg);
        }

        Document doc = new Document(PageSize.LETTER, bounds.Left, bounds.Right, bounds.Top, bounds.Bottom);
        PdfWriter wri = PdfWriter.GetInstance(doc, new FileStream("ImageTest.pdf", FileMode.Create));
        doc.Open();
        iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance("Image.jpeg");
        doc.Add(image);
        doc.Close();
}
Run Code Online (Sandbox Code Playgroud)

我希望将“ImageTest.pdf”部分命名为用户想要的 pdf 扩展名(和 .pdf 文件类型)。

PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream("ImageTest.pdf", FileMode.Create));

任何人都可以提供帮助或有人对我的问题有更好的解决方案吗?我想截取我的 windows 窗体的屏幕截图并将图像导出到用户输入名称下的 …

c# itextsharp export-to-pdf winforms

3
推荐指数
1
解决办法
1万
查看次数

打印到PDF时以字符串格式退格

我正在尝试在PDF中打印两列信息,其中包含用户输入的一些字符串。到目前为止,这是我的代码:

string s = "";
int width = 60 - name.Count(Char.IsWhiteSpace);                                                                  
s = s + string.Format("{0,-" + width +"}", "Name: " + name);
s = s + string.Format("{0,15}","AAA: ");
p1.Add(s);
document.Add(p1);

string p = "";
int width = 60 - surname.Count(Char.IsWhiteSpace);                                                                 
p = p + string.Format("{0,-"+ width +"}", "Surname: " + surname);
p = p + string.Format("{0,15}","BBB: ");
p2.Add(p);
document.Add(p2);

string r = ""; 
int width = 60 - school.Count(Char.IsWhiteSpace);                                                       
r = r + string.Format("{0,-"+ width +"}", "School: " + …
Run Code Online (Sandbox Code Playgroud)

c# pdf string formatting itextsharp

3
推荐指数
1
解决办法
821
查看次数

iTextSharp - 绘制矩形 - 边框宽度问题

这是一个简单的代码:

var w = Utilities.MillimetersToPoints(420);
var h = Utilities.MillimetersToPoints(210);

var doc1 = new Document(new Rectangle(w, h));

PdfWriter writer = PdfWriter.GetInstance(doc1, new FileStream("Doc1.pdf", FileMode.Create));

doc1.Open();

PdfContentByte cb = writer.DirectContent;

var rect = new Rectangle(200, 200, 100, 100);
Run Code Online (Sandbox Code Playgroud)

现在,如果我执行以下操作:

cb.Rectangle(200, 200, 100, 100);
cb.Stroke();
Run Code Online (Sandbox Code Playgroud)

然后我看到了矩形。但我需要设置它的边框宽度,所以我做

 rect.BorderWidth = 5;
 rect.BorderColor = new BaseColor(0,0,0);

 cb.Rectangle(rect);
 cb.Stroke();
Run Code Online (Sandbox Code Playgroud)

现在矩形不可见。为什么 ?

c# itextsharp

3
推荐指数
1
解决办法
2万
查看次数

如何使用iTextSharp设置HTML表格的背景颜色以输出为PDF

我有一些HTML,我用iTextSharp渲染到PDF文件.但是,我在设置表格单元格的背景颜色时遇到了一些问题.这是我正在使用的一些示例HTML:

<tr align="center">
<th width="16%" colspan="2" style="height: 16px; font-weight:bold;" color="#FF0000">Test Colored Text</th>
<td width="28%" colspan="2" style="height: 16px;"><asp:Literal runat="server" ID="litData" /></td>
</tr>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,<th>元素具有通过style属性设置的一些属性.在这种情况下,身高和字体重量.另外,我也设置了颜色属性.

这将表格输出到我的PDF文件,其中"测试彩色文本"文本根据颜色属性设置为红色.我的目标是设置此单元格的背景颜色,并尝试将css属性background-color添加样式标记中,但没有运气.

由于正在读取颜色属性,我尝试了一些其他属性,看看是否会采取: background-color, backgroundcolor, basecolor

但是,这些都没有有效地改变PDF文件中单元格的背景颜色.

我的问题是,它正在寻找设置背景颜色的属性名称是什么?我已经看了一下,并且只找到人们这样做的方法来购买代码中的单元格,这对我来说不是一个选项,因为我坚持使用这个需要设置样式的HTML.

编辑:使用bgcolor属性设置单元格的背景.谢谢路易斯!

html c# asp.net itextsharp

2
推荐指数
1
解决办法
1万
查看次数

PdfTable:最后一个单元格不可见

我以下列方式使用PdfPTable

var myTable = new PdfPTable( 3 );

foreach(var nextString in myStrings)
{

var nextCell = new PdfPCell( new Phrase( nextString, smallFont ) );
nextCell.Border = Rectangle.NO_BORDER;
nextCell.AddCell(nextCell);
}

pdfDocument.Add(myTable);
Run Code Online (Sandbox Code Playgroud)

一切都很完美,然后总细胞数乘以列数(3).但是当我想创建一个包含3列但只有4个单元格的表时 - 最后一行是不可见的.

怎么解决这个问题?

itextsharp 5.3.3.0

.net c# itextsharp

2
推荐指数
1
解决办法
1547
查看次数