小编Bru*_*gie的帖子

使用AcroForm技术提交PDF表单时的数据编码

当我创建一个包含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

5
推荐指数
1
解决办法
2257
查看次数

从PDF中的特定页面提取图像

我想从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)

c# pdf itextsharp

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

如何对文字进行连字?

我使用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)

我忘记设置连字符在该表上工作了吗?谢谢你的帮助。如果您需要有关我的代码的更多信息,我会告诉您。

java itext hyphen

4
推荐指数
1
解决办法
1464
查看次数

如何使用clj-pdf更快地生成pdf?

我正在使用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)

clojure

4
推荐指数
1
解决办法
1067
查看次数

iText或iTextSharp基本文本编辑

我可以通过多种方式从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()” ...

c# pdf itext

4
推荐指数
1
解决办法
2643
查看次数

如何将富文本框(HTML)添加到表格单元格?

我有一个名为"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&#160; line1 </p><p>Overview&#160; line2
</p><p>Overview&#160; line3 </p><p>Overview&#160;
line4</p><p>Overview&#160; line4</p><p>Overview&#160;
line5&#160;</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解码为文本.

您能否提一些建议?谢谢

pdf itextsharp richtext

4
推荐指数
1
解决办法
3515
查看次数

如何将多个HTML文件解析为单个PDF?

我想使用iText将一系列html文件转换为PDF.

例如:如果有这些文件:

  • page1.html
  • page2.html
  • page3.html
  • ...

现在我要创建一个PDF文件,其中page1.html是第一页,page2.html是第二页,依此类推......

我知道如何将单个HTML文件转换为PDF,但我不知道如何将这个操作产生的这些不同的PDF组合成一个PDF.

itextsharp

4
推荐指数
1
解决办法
6820
查看次数

如何为时间戳签名启用LTV?

我正在使用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方法应该获取所需的所有吊销信息并将其嵌入到文档中.这是正确的,还是我必须"手动"获取并嵌入这些信息?

pdf itext

4
推荐指数
1
解决办法
4766
查看次数

如何在单个String中使用常规和粗体?

我有一个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_namecc_cust_dob)应为规则。

itext itextpdf

4
推荐指数
1
解决办法
5058
查看次数

如何在Java中将itext pdf文件的段落设置为带背景颜色的矩形

我正在使用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)

请大家帮帮我 提前致谢..

java pdf fonts itext

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

标签 统计

pdf ×6

itext ×5

itextsharp ×3

c# ×2

java ×2

clojure ×1

fonts ×1

hyphen ×1

itextpdf ×1

richtext ×1