我使用 itextsharp 库和 c# 创建了一个带有图像的 pdf。现在我需要在那个图像上有一个超链接,这样当点击它时,它就会转到一个特定的站点。我该怎么做?我试图找到链接到图像对象的属性,但找不到。
我正在使用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) 我试图从多页 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) 我想在我的 pdf 中添加阿拉伯语文本。我需要做一个 RTL 对齐。PDF 中的希伯来语文本给出了如何使用 PdfpTable 的答案。
并使用
table.RunDirection = PdfWriter.RUN_DIRECTION_RTL;
Run Code Online (Sandbox Code Playgroud)
我可以做到。但是,当我根本不创建 PdfPTable 时,还有其他方法可以这样做吗?
我环顾四周,似乎无法找到适合我的方式.我正在创建一个网站,我有两个按钮,一个下载按钮(工作正常)和一个应该打印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.
我想允许用户输入他自己的文件名,就像保存文件对话框和流一样(例如: 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 窗体的屏幕截图并将图像导出到用户输入名称下的 …
我正在尝试在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) 这是一个简单的代码:
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)
现在矩形不可见。为什么 ?
我有一些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属性设置单元格的背景.谢谢路易斯!
我以下列方式使用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
c# ×10
itextsharp ×10
pdf ×4
asp.net ×2
itext ×2
.net ×1
asp.net-mvc ×1
formatting ×1
html ×1
printing ×1
string ×1
winforms ×1