当我创建一个包含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中完美地提取了一个jpeg图像.问题是如何从特定页面(例如第1页)或从其他页面中提取图像.我不想阅读整个PDF来搜索图像.
有什么建议?
提取图像的代码:
private void List<System.Drawing.Image> ExtractImages(String PDFSourcePath)
{
List<System.Drawing.Image> ImgList = new List<System.Drawing.Image>();
iTextSharp.text.pdf.RandomAccessFileOrArray RAFObj = null;
iTextSharp.text.pdf.PdfReader PDFReaderObj = null;
iTextSharp.text.pdf.PdfObject PDFObj = null;
iTextSharp.text.pdf.PdfStream PDFStremObj = null;
try
{
RAFObj = new iTextSharp.text.pdf.RandomAccessFileOrArray(PDFSourcePath);
PDFReaderObj = new iTextSharp.text.pdf.PdfReader(RAFObj, null);
for (int i = 0; i <= PDFReaderObj.XrefSize - 1; i++)
{
PDFObj = PDFReaderObj.GetPdfObject(i);
if ((PDFObj != null) && PDFObj.IsStream())
{
PDFStremObj = (iTextSharp.text.pdf.PdfStream)PDFObj;
iTextSharp.text.pdf.PdfObject subtype = PDFStremObj.Get(iTextSharp.text.pdf.PdfName.SUBTYPE);
if ((subtype != null) && subtype.ToString() == iTextSharp.text.pdf.PdfName.IMAGE.ToString())
{
byte[] …
Run Code Online (Sandbox Code Playgroud) 我使用Java中的iText生成PDF文件。我的表格列具有固定的宽度和文本,对于单元格中的一行换行而言,这太长了。但是不使用连字符。单词“ Leistungsscheinziffer”显示为:Leistungssc //在此处断裂heinziffer
我使用连字符的代码:
final PdfPTable table = new PdfPTable(sumCols);
table.getDefaultCell().setBorder(Rectangle.NO_BORDER);
table.getDefaultCell().setPadding(4f);
table.setWidths(widthsCols);
table.setWidthPercentage(100);
table.setSpacingBefore(0);
table.setSpacingAfter(5);
final Phrase result = new Phrase(text, font);
result.setHyphenation(new HyphenationAuto("de", "DE", 2,2));
final PdfPCell cell = new PdfPCell(table.getDefaultCell());
cell.setPhrase(result);
table.addCell(cell);
...
Run Code Online (Sandbox Code Playgroud)
连字符被激活,以下测试结果为“ Lei-stungs-schein-zif-fer”
Hyphenator h = new Hyphenator("de", "DE", 2, 2);
Hyphenation s = h.hyphenate("Leistungsscheinziffer");
System.out.println(s);
Run Code Online (Sandbox Code Playgroud)
我忘记设置连字符在该表上工作了吗?谢谢你的帮助。如果您需要有关我的代码的更多信息,我会告诉您。
我正在使用clj-pdf库生成一个页面,其中包含40000页,每页上有两个相同的图像.考虑到我们曾经用python更快地完成它,它花了我大约1分30秒来生成pdf.我能做些什么让它更快?
这是堆栈跟踪.
user=> (defn
#_=> gen-pdf
#_=> []
#_=> (println (new java.util.Date))
#_=> (pdf [{} (for [i (range 80000)] (do [:paragraph [:image "sample_logos/batman.jpeg"] [:image "sample_logos/superman.jpeg"] ] ) )] "super.pdf")
#_=> (println (new java.util.Date)))
#'user/gen-pdf
user=> (gen-pdf)
#inst "2013-12-26T07:03:05.695-00:00"
#inst "2013-12-26T07:04:23.175-00:00"
nil
user=>
Run Code Online (Sandbox Code Playgroud) 我可以通过多种方式从PDF页面提取文本:
String pageText = PdfTextExtractor.GetTextFromPage(reader, i);
Run Code Online (Sandbox Code Playgroud)
这可用于获取页面上的任何文本。
或者:
byte[] contentBytes = iTextSharp.text.pdf.parser.ContentByteUtils.GetContentBytesForPage(reader, i);
Run Code Online (Sandbox Code Playgroud)
可能性是无止境的。
现在,我想删除/编辑某些单词,例如显式单词,敏感信息(在其上放上黑匣子显然是一个坏主意:)或PDF中的所有内容(仅是简单的文本)。使用上面的方法,我可以找到一个合适的单词。我可以数出它的出现等等。
我不在乎布局,也不在乎PDF并不是真的要以这种方式进行操作。
我只是想知道是否有一种机制可以让我以这种方式操纵PDF的原始内容。您可能会说我正在寻找“ SetContentBytesForPage()” ...
我有一个名为"DocumentContent"的富文本框,我将使用以下代码将其内容添加到pdf:
iTextSharp.text.Font font = FontFactory.GetFont(@"C:\Windows\Fonts\arial.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 12f, Font.NORMAL, BaseColor.BLACK);
DocumentContent = System.Web.HttpUtility.HtmlDecode(DocumentContent);
Chunk chunkContent = new Chunk(DocumentContent);
chunkContent.Font = font;
Phrase PhraseContent = new Phrase(chunkContent);
PhraseContent.Font = font;
PdfPTable table = new PdfPTable(2);
table.WidthPercentage = 100;
PdfPCell cell;
cell = new PdfPCell(new Phrase(PhraseContent));
cell.Border = Rectangle.NO_BORDER;
table.AddCell(cell);
Run Code Online (Sandbox Code Playgroud)
问题是当我打开PDF文件时,内容显示为HTML而不是文本,如下所示:
<p>Overview  line1 </p><p>Overview  line2
</p><p>Overview  line3 </p><p>Overview 
line4</p><p>Overview  line4</p><p>Overview 
line5 </p>
Run Code Online (Sandbox Code Playgroud)
但它应该如下所示
Overview line1
Overview line2
Overview line3
Overview line4
Overview line4
Overview line5
Run Code Online (Sandbox Code Playgroud)
我要做的是保留用户应用于富文本的所有样式,只需将字体系列更改为Arial.
我可以更改字体系列,但我需要将此内容从HTML解码为文本.
您能否提一些建议?谢谢
我想使用iText将一系列html文件转换为PDF.
例如:如果有这些文件:
现在我要创建一个PDF文件,其中page1.html是第一页,page2.html是第二页,依此类推......
我知道如何将单个HTML文件转换为PDF,但我不知道如何将这个操作产生的这些不同的PDF组合成一个PDF.
我正在使用iText 5.5.3签署PDF文档.我需要将这些文档加上时间戳并启用LTV.我按照说明操作并使用了addLtv方法(代码示例5.9,Lowagie白皮书中的第137页).我得到一个带有2个签名的PDF,这是正常的:第一个是我自己的签名,第二个是文档级时间戳.
但是,Acrobat告诉我我的签名是启用了LTV,但时间戳签名不是:
来自Acrobat Pro XI的图片http://img15.hostingpics.net/pics/727285so2.jpg
这是因为时间戳证书的吊销信息未嵌入到文档中:
缺少撤销信息1 http://img15.hostingpics.net/pics/491507so2a.jpg
缺少撤销信息2 http://img15.hostingpics.net/pics/312720so2b.jpg
根据我的理解,addLtv方法应该获取所需的所有吊销信息并将其嵌入到文档中.这是正确的,还是我必须"手动"获取并嵌入这些信息?
我有一个String
由恒定部分和可变部分组成的。我希望变量在文本段落中使用常规字体设置格式,而我希望常量部分为粗体。
这是我的代码:
String cc_cust_name = request.getParameter("CC_CUST_NAME");
document.add(new Paragraph(" NAME " + cc_cust_name, fontsmallbold));
Run Code Online (Sandbox Code Playgroud)
我在表中单元格的代码如下所示:
cell1 = new PdfPCell(new Phrase("Date of Birth" + cc_cust_dob ,fontsmallbold));
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,第一部分(" NAME "
和"Date of Birth"
)应为粗体,可变部分(cc_cust_name
和cc_cust_dob
)应为规则。
我正在使用itext库设计一个pdf报告.我已经在其中实现了一个段落.现在根据我的要求,我必须在背景颜色的矩形框内设置这个段落,但我无法做到.
这是我在java中的Itext代码...
Font f = new Font(FontFamily.TIMES_ROMAN, 25.0f, Font.BOLD, BaseColor.CYAN);
Paragraph p = new Paragraph("Total Cost:" + dbsumcallcost, f);
document.add(p);
Run Code Online (Sandbox Code Playgroud)
请大家帮帮我 提前致谢..