我正在尝试获取我的XFA表单中所有字段的简单列表.我正在使用此代码:
private void ListFieldNames()
{
string pdfTemplate = @"C:\Projects\iTextSharp\SReport.pdf";
MemoryStream m = new MemoryStream();
// title the form
this.Text += " - " + pdfTemplate;
// create a new PDF reader based on the PDF template document
PdfReader pdfReader = new PdfReader(pdfTemplate);
PdfStamper pdfStamper = new PdfStamper(pdfReader, m);
AcroFields formFields = pdfStamper.AcroFields;
AcroFields form = pdfReader.AcroFields;
XfaForm xfa = form.Xfa;
StringBuilder sb = new StringBuilder();
sb.Append(xfa.XfaPresent ? "XFA form" : "AcroForm");
sb.Append(Environment.NewLine);
foreach (string key in form.Fields.Keys)
{
sb.Append(key);
sb.Append(Environment.NewLine); …
Run Code Online (Sandbox Code Playgroud) 当我使用单元格的对齐,所以它的工作原理:
PdfPCell cell1 = new PdfPCell(new Phrase("Text" , Font));
cell1.HorizontalAlignment = 2;
Run Code Online (Sandbox Code Playgroud)
但是一旦对齐不起作用:
PdfPCell cell1 = new PdfPCell();
cell1.AddElement(new Phrase("Text 1", Font));
cell1.AddElement(new Phrase("Text 2", Font));
cell1.HorizontalAlignment = 2;
Run Code Online (Sandbox Code Playgroud)
原因?
我在一个文件夹中有一堆PDF文档,我想用水印来增加它们.Java服务器上下文有哪些选择?
优选地,水印将支持透明度.矢量和光栅都是可取的.
我想在一行上向左侧和右侧显示两段内容(可能是段落或文本).我的输出应该是这样的
Name:ABC date:2015-03-02
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
当我创建一个包含AcroForm格式的文本字段(PDF字典,没有XFA)的PDF表单(例如使用Acrobat),并且我将数据提交给服务器时,如何指定/检索将使用的编码?
例如.当我提交中文字形'测试'(测试)时,我在服务器端收到以下标题和内容:
accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
content-type: application/x-www-form-urlencoded
content-length: 23
acrobat-version: 10.1.4
user-agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MDDC; .NET4.0C; AskTbCLA/5.15.1.22229)
accept-encoding: gzip, deflate
connection: Keep-Alive
Song=%b2%e2%ca%d4&Test=
Run Code Online (Sandbox Code Playgroud)
除了x-www-form-urlencoded之外,没有对编码的引用.这两个字形表示为四个字节:B2 E2 CA D4.经过一些调查,我知道B2E2是第一个字形的GBK值,CAD4是第二个字形的GBK值,但是我不能从请求头中获取它.
它总是GBK吗?我想通过在PDF中的字典中设置特定键来更改数据编码,但似乎没有.例如:我想确保PDF始终发送Unicode字符而不是GBK.
请注意,我已经通过更改文本字段的默认字体(和编码)进行了实验.我还搜索了ISO-32000-1中的字段编码,但我发现的只是为复选框定义非拉丁字符的方法,以及有关FDF文件编码的一些信息.这些都没有回答我的问题.
"在PDF查看器中打开时,通常有多种方法可以创建看起来像同卵双胞胎的PDF文档.即使您使用完全相同的代码创建两个相同的PDF文档,两个结果文件之间也会有很小的差异. PDF格式固有的."
我在"Itext in action-second edition"中读到了这一段.(第17页).任何人都可以解释一下作者所说的是什么样的差异.如果我可以说,pdf格式有这个缺陷的原因.
我对iText中的LTV感到困惑.我已经阅读了论文,讨论但有一点仍然不清楚.LTV和文档时间戳之间有什么联系?或者更准确地说,如何在不使用时间戳的情况下启用pdf LTV?有一点我肯定知道,要创建一个支持LTV的文档,我不需要时间戳.我尝试在acrobat中使用数字证书签署文档,打开时说文档已启用LTV,我没有使用任何时间戳.
我尝试使用ItextSharp在pdf表中对齐单元格内容。不知何故,它根本不起作用,始终在左侧对齐。
var pageSize = PageSize.A4;
if (_pdfSettings.LetterPageSizeEnabled)
{
pageSize = PageSize.LETTER;
}
var doc = new Document(pageSize);
PdfWriter.GetInstance(doc, stream);
doc.Open();
//fonts
var normalFont = GetFont();
normalFont.Color = BaseColor.BLACK;
normalFont.Size = 14;
//..titlefont, smallfont,largefont....
var addressTable = new PdfPTable(1);
addressTable.WidthPercentage = 100f;
cell = new PdfPCell();
cell.AddElement(new Paragraph("Ng??i G?i", titleFont));
cell.AddElement(new Paragraph("TAKARA.VN", largeFont));
cell.HorizontalAlignment = Element.ALIGN_RIGHT;
addressTable.AddCell(cell);
doc.Add(addressTable);
doc.Add(new Paragraph("", normalFont));
Run Code Online (Sandbox Code Playgroud)
更新:我找到了答案
您在混淆文本模式和复合模式。
文字模式:
Phrase p = New Phrase("value");
PdfPCell cell = new PdfPCell(p);
cell.HorizontalAlignment = Element.ALIGN_CENTER;
table.AddCell(cell);
Run Code Online (Sandbox Code Playgroud)
复合模式:
PdfPCell cell …
Run Code Online (Sandbox Code Playgroud) 我有一个现有的文件,我想在绝对位置标记图像.我能够做到这一点,但我也想让这个图像可以点击:当用户点击图像时,我希望PDF转到文档的最后一页.
这是我的代码:
PdfReader readerOriginalDoc = new PdfReader("src/main/resources/test.pdf");
PdfStamper stamper = new PdfStamper(readerOriginalDoc,new FileOutputStream("NewStamper.pdf"));
PdfContentByte content = stamper.getOverContent(1);
Image image = Image.getInstance("src/main/resources/images.jpg");
image.scaleAbsolute(50, 20);
image.setAbsolutePosition(100, 100);
image.setAnnotation(new Annotation(0, 0, 0, 0, 3));
content.addImage(image);
stamper.close();
Run Code Online (Sandbox Code Playgroud)
知道怎么做吗?
我用PdfContentByte创建了矩形.现在我想在这个矩形中添加一个文本.我怎样才能做到这一点.如果有人有想法请与我分享.我的矩形代码是
Document doc = new Document(new Rectangle(570, 924f));
PdfWriter writer = PdfWriter.GetInstance(doc,Response.OutputStream);
PdfContentByte cb = writer.DirectContent;
cb.Rectangle(doc.PageSize.Width -90f, 830f, 50f,50f);
cb.Stroke();
Run Code Online (Sandbox Code Playgroud)