我正在尝试使用Python来处理一些使用Adobe Acrobat Reader填写和签名的PDF表单.
我试过了:
我可以继续寻找图书馆并尝试它们,但我希望有人已经有了这个有效的解决方案.
更新:根据史蒂文的回答,我调查了pdfminer,它很好地完成了这个工作.
from argparse import ArgumentParser
import pickle
import pprint
from pdfminer.pdfparser import PDFParser, PDFDocument
from pdfminer.pdftypes import resolve1, PDFObjRef
def load_form(filename):
"""Load pdf form contents into a nested list of name/value tuples"""
with open(filename, 'rb') as file:
parser = PDFParser(file)
doc = PDFDocument()
parser.set_document(doc)
doc.set_parser(parser)
doc.initialize()
return [load_fields(resolve1(f)) for f in
resolve1(doc.catalog['AcroForm'])['Fields']]
def load_fields(field):
"""Recursively load form fields"""
form = field.get('Kids', None)
if form: …Run Code Online (Sandbox Code Playgroud) 我想知道是否有一种方法可以在WHERE子句中使用用户定义的变量,如下例所示:
SELECT id, location, @id := 10 FROM songs WHERE id = @id
Run Code Online (Sandbox Code Playgroud)
此查询运行时没有错误,但无法按预期工作.
我设置了"set guioptions- = l",但只要启用了taglist,左手滚动条仍会显示,无法禁用(右手滚动条切换正常).另外,如果启用了taglist,vim将不会在启动时最大化.
如果以上不能修复,是否有任何taglist altenatives.
我无法理解:这真的是一个错误,还是我错过了一些东西?
我已经box-sizing: border-box在HTML文档中设置了所有div(当然包含所有-moz和-webkit前缀).所以它意味着heightdiv总是包含它padding.期望该min-height物业采取类似行动是合理的.但显然,在Firefox中却没有.
我的意思是,当我有一个没有height设置(即height: auto)但没有min-height(例如,220px)和padding(比如说10px)的div时,它会导致div的整体高度为240px而不是Firefox中的220!不过,它在Chrome和Opera中都保持不变.
这不应该是固定的,还是某种我没有得到的功能?
我已经在工作了一年左右的时间里使用gvim,就在我喜欢它的时候,抓住它并尝试j,k遍布Microsoft Outlook.然后我的电脑就死了.现在,最初我自己安装了gvim,当时这是一个"禁忌",现在真的是一个坏主意(所有人都将病毒引入网络等等).
当我想要"合法"安装gvim时,我们有一个软件审查委员会.我被告知标准文本编辑器是UltraEdit,他们不想支持多个.如果我想使用gvim,我需要谈谈管理,使其成为标准.
我有点不知所措.显然,我可以节省成本,但我很难解释我的大惊小怪.如果它是另一个程序员,我只是强迫他们使用它,他们会自己解决它.但管理人员并不太感兴趣,因为在你输入,呃,插入之前无法弄清楚你需要"我".
我告诉我的经理,就像有一艘划艇,而不是到处游泳.而且有时你会在那件事情上发生摩擦,但我正在寻找简洁而有说服力的论据,这些论据并非基于糟糕的类比.有许多相似的问题,但我担心它们的趋势太过技术性.有任何想法吗?
毕竟你的精彩建议赢得了我的一天,我如何让前UltraEdit用户成为gvimmers?
更新: 谢谢你的回答!我接受了一个但是从许多人那里拿走了(不知道是否重要,因为问题现在已经结束).即使它显然过于开放,但它正在帮助我用权力来恳求我的情况.
我正在尝试找到最有效的方法来解析我的System.Web.HTTPRequest.UrlReferrer,以找到用于驱动访问者访问我的网站的搜索词,假设他们通过搜索引擎结果页面到达我的网站.
我在想(希望)我会使用HttpUtility.ParseQueryString方法,但我的问题在于试图弄清楚要解析的变量.我有以下列表,我需要检查.该列表显示了搜索引擎和每个使用的参数.
daum:q,
eniro:search_word,
naver:query,
images.google:q,
google:q,
yahoo:p,
msn:q,
bing:q,
aol:query,
aol:encquery,
lycos:query,
ask:q,
altavista:q,
netscape:query,
cnn:query,
about:terms,
mamma:query,
alltheweb:q,
voila:rdata,
virgilio:qs,
live:q,
baidu:wd,
alice:qs,
yandex:text,
najdi:q,
aol:q,
mama:query,
seznam:q,
search:q,
wp:szukaj,
onet:qt,
szukacz:q,
yam:k,
pchome:q,
kvasir:q,
sesam:q,
ozu:q,
terra:query,
mynet:q,
ekolay:q,
rambler:words
Run Code Online (Sandbox Code Playgroud)
因此,虽然我可以通过每个人说出类似的话
NameValueCollection query = HttpUtility.ParseQueryString(UrlReferrer);
var referrer = Request.UrlReferrer.ToString();
if(referrer.Contains("google.com")
return (query["q"]);
else if(referrer.Contains("yahoo.com")
return (query["p"]);
Run Code Online (Sandbox Code Playgroud)
我认为必须有一个更好的方法,因为我有这个很好的名称/值对,以及ParseQueryString方法的力量,但我画了一个空白.
在我的.sh文件中,我有这个cp $file $SOME_PATH,而$ SOME_PATH被导出为export SOME_PATH="~/path/to/path/".但是当我运行这个.sh文件时,我得到的错误消息说*没有这样的"〜/ path/to/path /"存在.*我将〜替换为$ HOME,然后错误消失了.那么波士顿的最新动态是什么呢?
提前致谢.
使用ExecutorService过度运行的线程Runnable进入Thread构造函数有什么好处?
我在STL队列推送中遇到了一个我不太了解的行为。
基本上,我有两个结构
structA{
string a;
}
structB{
char b[256];
}
structA st1;
structB st2;
...assign a 256 characters string to both st1 and st2...
queue<structA> q1;
queue<structB> q2;
for(int i=0 ; i< 10000; i++){
q1.push(st1);
}
for(int i=0 ; i< 10000; i++){
q2.push(st2);
}
Run Code Online (Sandbox Code Playgroud)
我意识到,与字符串结构相比,使用char结构的队列在推入结构时将花费更长的时间(例如5倍)。通过检查单个推动,我发现该结构的推动性能到处都有很多尖峰(从2倍到10倍)。是什么原因呢?
谢谢。
这是我的原始查询......
SELECT `id`
FROM `properties`
LIMIT 10, 20
Run Code Online (Sandbox Code Playgroud)
该LIMIT条件是分页.
现在,我必须像以前一样得到所有,但我需要只有三分之一的行存在条件.
我想出了这个,只是LIMIT 30在我弄清楚如何做之前投入(总行数匹配/ 3)*2.
SELECT `id`
FROM `properties`
WHERE `id` NOT IN (SELECT `id`
FROM `properties`
WHERE `vendor` = "abc"
ORDER BY RAND()
LIMIT 30)
LIMIT 10, 20
Run Code Online (Sandbox Code Playgroud)
MySQL说......
1235 - 此版本的MySQL尚不支持'LIMIT&IN/ALL/ANY/SOME子查询'
我想我不能LIMIT在子查询中使用.
所以这是一个多问题但所有相关...
LIMIT子查询中是否有解决方法?