我在SWFTools和XPDF的帮助下将pdf提取到images/swf和文本中.我在PDF脚本中运行这些文件.
但是现在我想进一步尝试从PDF中获取TOC是否可以提取这些信息?
MuPdf库在从pdf页面渲染图像时比xpdf/poppler更快吗?他们说这是高性能的.
我正在使用pdfimages -j bar.pdf /tmp/image
从PDF中提取图像.我的目标是让它们在添加时处于原始状态.所以如果它是.tif我想得到一个.tif,如果它是一个jpg我想得到一个.jpg.我提取的所有东西都不断增加.ppm.
是否有可能以原始格式获取图像或者ppm是我唯一的选择?
更新:我想要这样做的主要目的是检查文档中包含的所有图像的DPI,或者检查它们是否是矢量.
我试图通过和(pdftotext.exe)解析PDF到文本.在我的本地主机上,每个人都运行良好,但是当我试图在服务器上移动所有东西时,我陷入了麻烦.PHP
XPDF
首先,我检查了服务器上的一些设置,并且safe_mode已关闭,exec未被禁用且权限为rwxrwxrwx
.
然后我试试这个
$command = "\\\\149.223.22.11\\cae\\04_Knowledge-base\\tools\\pdftotext.exe -enc UTF-8 ". $fileName . " \\\\149.223.22.11\\cae\\04_Knowledge-base\\output.txt";
$result = exec($command,$output,$args);
echo shell_exec($command);
Run Code Online (Sandbox Code Playgroud)
哪个不起作用.当我调查$result, $output,
是空的,但$ args返回1,它与本文档Windows系统错误代码对应的不正确的函数
整个命令看起来像\\149.223.22.11\cae\04_Knowledge-base\tools\pdftotext.exe -enc UTF-8 \\149.223.22.11\cae\04_Knowledge-base\testpdf\04_egerland_final_paper.pdf \\149.223.22.11\cae\04_Knowledge-base\output.txt
什么时候直接输入命令行,它的工作.
所以我有点想法.有人提示吗?
编辑20160201 - aditional尝试所以我做了aditional测试,当我尝试使用来自localhost的exec运行类似的命令(目标.exe文件,输入和输出文件在同一位置,只有我使用localhost而不是服务器)它的工作.我现在正在检查服务器设置的差异.那么这里可能有问题,localhosts Server Api是Apache 2.0 Handler,服务器是CGI/FASTCGI吗?
我正在使用 pdftoppm 从 pdf 文件中提取页面,因此我可以稍后使用 ImageMagick 将生成的 pbm 文件转换为多页 tiff。我已经使用以下代码让它工作了:
os.system('pdftoppm -f %i -l %i -aa no -mono -q "%s" %sx' % (StartPage[item], EndPage[item], pdfname, wkgdir))
Run Code Online (Sandbox Code Playgroud)
但是,对于每个项目,即使我有 -q 标志来防止它们被写入输出,我也会不断收到这些错误:
错误:“符号”没有显示字体
错误:“Zapf Dingbats”没有显示字体
这是程序的一个已知错误,还是我应该做些什么来防止打印这些错误,因为它们会减慢我的程序速度?
我正在使用“ pdftotext -bbox file.pdf
”将pdf
文件转换为HTML
.
以下是输出的示例行:
<word xMin="351.852025" yMin="42.548936" xMax="365.689478"
yMax="47.681498">foo</word>
Run Code Online (Sandbox Code Playgroud)
有没有办法获取每个单词的字体信息,例如:
我有兴趣知道 pdftotext 的 poppler 或 xpdf 版本是否可以做到这一点。
XPDFs pdftotext将pdf转换为文本并在命令行级别输出.如果需要,它会在TextOutputDev.cc中指定的页面之间插入PageBreaks:
eopLen = uMap->mapUnicode(0x0c, eop, sizeof(eop));
Run Code Online (Sandbox Code Playgroud)
此Unicode符号是独立编码的,-enc ASCII7
不会更改它.我目前愿意使用PHP将PDF文件转换并拆分为几个TXT页面以进行数据库存储.但是,以下功能确实有效,但是一次转换整个PDF所需的时间是原来的两倍.
for($i = 1; $i <= $pages[0]; $i++)
$page[$i] = shell_exec('/usr/bin/pdftotext sample.pdf -f '.$i.' -l '.$i.' -');
Run Code Online (Sandbox Code Playgroud)
我如何explode(0x0c, $wholePDF)
使用Unicode字符作为分隔符?目前,页面[$ i]似乎没有从shell_exec()中检索那些奇怪的Unicode PageBreak字符.我尝试了几个用于编码的头文件(尤其是UTF-8),但到目前为止它还没有用完.
我想问一下是否可以使用xpdf库编辑PDF文件,如果是的话怎么样?我想这是可能的,但我找不到任何教程或xpdf的文档,所以我真的不知道:(.我也打开使用另一个库,如果任何其他人支持pdf编辑.我唯一的要求是这样的库是它必须是一个C++库或至少是C一个,必须是跨平台的(Windows和Linux)
我只需要对pdf文件进行基本编辑,例如:
"这是pdf文档中的文本"将更改为"这是pdf中的文本 ",也有不同的文本颜色.
感谢你的回复!
到目前为止,使用pdfimages
和mupdf
/进行的图像提取mutool
效果还不错。
用FreePDF生成的PDF中的图像始终被切片,因此一张图像会生成多个图像文件。
有避免这种情况的技巧吗?如何使用的结果pdfshow
?将PDF转换为PNG或JPEG后,是否有坐标可知道要剪切/裁剪图像的位置,高度和宽度?
我想在一个充满 pdf 文件的文件夹中运行批量转换。我使用的是 xPDF,这是单个文件的命令提示符:
c:\Test\pdftotext -布局firstpdftoconvert.pdffirstpdfconverted.txt
有人可以帮忙使用批处理文件一次性完成此操作(仅转换所有 pdf 文件)吗?提前致谢!
我试图从PDF文件中提取矢量图形并创建相应的SVG文件.我正在使用SVGOutputDev(https://github.com/immateriel/pdf2svg/blob/master/SVGOutputDev.cc)和xpdf库来实现此目的.现在SVGOutputDev还没有实现剪辑路径提取,我正在尝试实现相同的.虽然我能够自己提取剪辑路径定义,但我无法确定哪些定义适用于普通笔划或填充区域.例如,请参阅http://pastebin.com/jTdzv3YZ我从一页PDF中提取的SVG,以及在提取过程中看到的PDF图形命令序列的相应转储.从该SVG可以看出,存在多个剪辑路径和一个矩形填充区域.即使有被定义的填充的矩形前定义的多个剪辑的路径,仅圆形夹路径定义之前矩形定义应该与矩形相关联(通过PDF页面在各种PDF阅读器上呈现的方式,在白色背景中仅显示2个黑色圆圈).问题是如何知道哪些剪辑路径与PDF中定义的常规填充/描边区域相关联?仅供参考,我浏览了PDF规范文档的相关部分但对我来说并不是很清楚("剪切路径操作可能出现在最后一个路径构造操作符之后和路径绘制操作符之前终止路径对象.虽然剪切路径操作符出现在绘制操作符之前,它不会在它出现的位置改变剪切路径.而是修改后续绘制操作符的效果").
提取图像的 PDFBox 问题。嗨,我如何检查 pdf 页面是否为图像并通过 PDFBOX 库提取该图像,有一种获取图像的方法,但如果 PDF 页面是图像,则无法获取。有人可以帮我解决这个问题吗?
提取图像的 Xpdf 问题。我尝试通过另一个库 xpdf 提取图像,如果它是图像,它会在页面上进行奇怪的翻转。如果 pdf 包含一个小图像作为对象图像,它给我确定,如果页面被扫描,他我们正在翻转。
我想从 PDF 中提取所有图像,如果扫描 PAGE 以获取它们作为图像,如果页面包含纯文本和图像也可以从此页面获取图像。
我的观点是从 PDF 中提取所有图像。不仅形成一个页面,而且即使页面是一个图像,也可以将它们提取为图像,但不要跳过它们,我认为 PDFbox 怎么样。
XPDF 正在做一些事情,但是当他导出扫描页面时,页面上出现了 FLIP(顶部,右侧)问题
我该如何解决这个问题谢谢。
`PDDocument document = PDDocument.load(new File("/home/dru/IdeaProjects2/PDFExtractor/test/t1.pdf"));
PDPageTree list = document.getPages();
for (PDPage page : list) {
PDResources pdResources = page.getResources();
System.out.println(pdResources.getResourceCache());
for (COSName c : pdResources.getXObjectNames()) {
PDXObject o = pdResources.getXObject(c);
if (o instanceof org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject) {
File file = new File("/home/dru/IdeaProjects2/PDFExtractor/test/out/" + System.nanoTime() + ".png");
ImageIO.write(((org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject)o).getImage(), "png", file);
}
} …
Run Code Online (Sandbox Code Playgroud) xpdf ×12
pdf ×6
php ×4
pdftotext ×3
mupdf ×2
poppler ×2
batch-file ×1
c++ ×1
clipping ×1
cmd ×1
editing ×1
exec ×1
explode ×1
ghostscript ×1
image ×1
pdf-scraping ×1
pdfbox ×1
pdftoppm ×1
performance ×1
python ×1
python-2.7 ×1
rendering ×1
svg ×1
unicode ×1
windows-7 ×1