我想使用itextsharp库将gridview导出为pdf.问题是在pdf文档中缺少一些土耳其字符,如İ,ı,Ş,ş等.用于导出pdf的代码是:
protected void LinkButtonPdf_Click(object sender, EventArgs e)
{
Response.ContentType = "application/pdf";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.AddHeader("content-disposition", "attachment;filename=FileName.pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
System.IO.StringWriter stringWrite = new StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
GridView1.RenderControl(htmlWrite);
StringReader reader = new StringReader(textConvert(stringWrite.ToString()));
Document doc = new Document(PageSize.A4);
HTMLWorker parser = new HTMLWorker(doc);
PdfWriter.GetInstance(doc, Response.OutputStream);
doc.Open();
parser.Parse(reader);
doc.Close();
}
public static string textConvert(string S)
{
if (S == null) { return null; }
try
{
System.Text.Encoding encFrom = System.Text.Encoding.UTF8;
System.Text.Encoding encTo = System.Text.Encoding.UTF8;
string str = S;
Byte[] b = …Run Code Online (Sandbox Code Playgroud) 是否有任何类似于Flying Saucer项目的开源.NET项目(或端口),它使用iText将HTML呈现为PDF?
假设我使用iTextSharp加载了一个PDF文件:
PdfStamper p = GetDocument();
AcroFields af = ps.AcroFields;
Run Code Online (Sandbox Code Playgroud)
如何从文档中获取所有字段名称的列表af?
我需要垂直文本或只是在ITextSharp中旋转ColumnText的方法.
(它需要绝对的位置)
直到现在我已经尝试了很多不同的解决方案,但没有运气.
这是几次尝试:
1.
_cb.SetFontAndSize(BaseFont.CreateFont(), 12f);
_cb.ShowTextAligned(Element.ALIGN_CENTER, "Hello World", 50, 50, 90);
Run Code Online (Sandbox Code Playgroud)
2.
var vt = new VerticalText(_cb);
vt.SetVerticalLayout(50, 50, 400, 8, 30);
vt.AddText(new Chunk("asdasd",_sf.ChildBackPageTextOneFont()));
vt.Go();
Run Code Online (Sandbox Code Playgroud)
3.
System.Drawing.Drawing2D.Matrix foo = new System.Drawing.Drawing2D.Matrix();
foo.Rotate(90);
_cb.ConcatCTM(foo);
Run Code Online (Sandbox Code Playgroud)
我也尝试用System.Drawing.Graphics绘制它,但质量非常差.
有解决方案吗 谢谢.
我想保存一个经过编辑的pdf模板.我怎么做?
using (MemoryStream ms = new MemoryStream())
{
PdfReader reader = new PdfReader("~/Content/Documents/Agreement.pdf");
PdfStamper formFiller = new PdfStamper(reader, ms);
AcroFields formFields = formFiller.AcroFields;
formFields.SetField("Name", formData.Name);
formFields.SetField("Location", formData.Address);
formFields.SetField("Date", DateTime.Today.ToShortDateString());
formFields.SetField("Email", formData.Email);
formFiller.FormFlattening = true;
formFiller.Close();
}
Run Code Online (Sandbox Code Playgroud) 我有一个pdf文档,其中包含我用c#以编程方式填写的表单字段.根据三个条件,我需要修剪(删除)该文档中的某些页面.
这可能吗?
条件1:我需要保留第1-4页,但删除第5页和第6页
对于条件2:我需要保留第1-4页但删除5并保持6
对于条件3:我需要保留1-5页但删除6
我需要使用Windows证书库中存在的证书来签署PDF文档.我一直在周围挖了一整天试图弄明白,我那么近又那么远.
所有缺少的是:如何获取IExternalSignature对象来签署PDF文件?
Rahul Singla写了一个很好的例子,说明如何使用新的iText 5.3.0 API签署PDF文档 - 只要你可以在某个地方访问PC上的.pfx文件.
有一个关于使用Windows证书存储区中的证书进行签名的问题,除了它使用的API版本SetCrypto仍然存在,并且签名显然是可选的.在iText 5.3.0中,API已经改变,SetCrypto不再是一件事.
这是我到目前为止所做的评论(为后代添加评论,因为这可能是如何在'网上)执行此操作的最完整和最新版本:
using iTextSharp.text.pdf;
using iTextSharp.text.pdf.security;
using BcX509 = Org.BouncyCastle.X509;
using Org.BouncyCastle.Pkcs;
using Org.BouncyCastle.Crypto;
using DotNetUtils = Org.BouncyCastle.Security.DotNetUtilities;
...
// Set up the PDF IO
PdfReader reader = new PdfReader(@"some\dir\SomeTemplate.pdf");
PdfStamper stamper = PdfStamper.CreateSignature(reader,
new FileStream(@"some\dir\SignedPdf.pdf", FileMode.Create), '\0');
PdfSignatureAppearance sap = stamper.SignatureAppearance;
sap.Reason = "For no apparent raisin";
sap.Location = "...";
// Acquire certificate chain
var …Run Code Online (Sandbox Code Playgroud) 我正在使用C#和iTextSharp为我的PDF文件添加水印:
Document document = new Document();
PdfReader pdfReader = new PdfReader(strFileLocation);
PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(strFileLocationOut, FileMode.Create, FileAccess.Write, FileShare.None));
iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(WatermarkLocation);
img.SetAbsolutePosition(100, 300);
PdfContentByte waterMark;
//
for (int pageIndex = 1; pageIndex <= pdfReader.NumberOfPages; pageIndex++)
{
waterMark = pdfStamper.GetOverContent(pageIndex);
waterMark.AddImage(img);
}
//
pdfStamper.FormFlattening = true;
pdfStamper.Close();
Run Code Online (Sandbox Code Playgroud)
它工作正常,但我的问题是,在一些PDF文件中没有添加水印虽然文件大小增加,任何想法?
我有一个pdf,我想使用iTextSharp获取pdf中每页的宽度和高度?
鉴于这是我想要使用的pdf
string source=@"D:\pdf\test.pdf";
PdfReader reader = new PdfReader(source);
Run Code Online (Sandbox Code Playgroud) 我需要能够从某些PDF文档中删除安全性/加密,最好使用itextsharp库.过去,这是可能的(如何通过提供文件使用C#参数的密码解密一个pdf文件?),但最近的变化到库意味着解决方案不再起作用.
我知道这可以通过Aspose PDF库(示例)完成,但这似乎是一个昂贵的选择.
编辑
所以这一次我以为我拥有我用来测试这个文档的所有者密码.但实际上我的密码是用户密码.的原因,我认为这是所有者密码,是因为它曾作为所有者的密码和其他值没有工作.我相信用户密码代替用户密码的原因是该PdfReader.unethicalreading字段被设置为true(它是一个碰巧在代码中的其他地方设置的全局标志).
c# ×10
itextsharp ×10
pdf ×5
.net ×3
asp.net ×2
certificate ×1
encryption ×1
html-to-pdf ×1
signing ×1