我有一些代码可以隐藏pdf的一部分(仅用白色多边形覆盖),但是问题是,文本仍然有,如果您按ctrl-f,仍然可以找到它。
我的目标是实际从pdf本身删除文本。使用pdfminer,我设法从pdf中提取了文本,但我不知道是否有可能仅用一些空白来“替换”文本。使用python这样的事情可能吗?仅仅提取是不够的。我需要将文本从PDF中删除
答案 0 :(得分:1)
这是一种占用大量内存的操作,但是您可以复制除要删除部分之外的pdf其余部分,然后用不包含您要删除部分的新版本覆盖文件。您可以使用PyPDF进行此操作,方法是检索内容流,然后查找并删除相关部分。
PDF标准https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/PDF32000_2008.pdf第78页,第81页;
答案 1 :(得分:0)
以下是一些可以帮助您的python软件包:
pdfrw
读写PDF文件;水印,将图像从一个PDF复制到另一个。
slate
简化了从PDF文件提取文本的操作。
PDFQuery
使用Jquery或XPath语法的PDF抓取。需要PDFMiner
,pyquery
和lxml
库。
`PDFMiner`
从PDF文件中提取文本,图像,对象坐标,元数据。纯Python。
`PyPDF2`
分割,合并,裁剪PDF文件。纯Python。
答案 2 :(得分:0)
是的,通常称为“修订”,它涉及从PDF文件中完全删除文本/图形。
PDFTron PDFNet SDK可以进行真正的编辑。
这里是仅在浏览器中使用库的实时示例。 https://www.pdftron.com/samples/web/samples/PDFNet/ViewerRedactTest/index.html https://www.pdftron.com/documentation/web/samples/full-samples#viewerredact
它也可以通过Python 2.7(或3)(如果需要)在Windows,macOS和Linux上使用。 https://www.pdftron.com/documentation/samples/py/PDFRedactTest?platforms=windows https://www.pdftron.com/documentation/samples?platforms=windows#pdfredact
答案 3 :(得分:0)
这可能吗?是的,尽管不建议这样做。我认为,最好的办法是打开并阅读现有文件,将其移动为可编辑的格式,删除不需要的任何文本,然后将其转换回去。
但是,您可以使用以下方法提取数据并将其从内存中删除:
import PyPDF2
# creating a pdf file object
pdfFileObj = open('example.pdf', 'rb')
# creating a pdf reader object
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
# printing number of pages in pdf file
print(pdfReader.numPages)
# creating a page object
pageObj = pdfReader.getPage(0)
# extracting text from page
print(pageObj.extractText())
# closing the pdf file object
pdfFileObj.close()
一行一行,该程序将:
pdfFileObj = open('example.pdf', 'rb')
打开example.pdf
,然后将文件对象另存为pdfFileObj
。
pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
创建一个PdfFileReader
对象,并将整个PDF文件对象传递给一个PDF阅读器对象。
print(pdfReader.numPages)
输入页数。
pageObj = pdfReader.getPage(0)
创建一个PageObject
类的对象。 PDF阅读器对象具有函数getPage()
,该函数将页码(从索引索引0开始)作为参数并返回该页对象。
print(pageObj.extractText())
从PDF页面提取文本。
pdfFileObj.close()
关闭PDF文件对象。
当您要删除某段文本的所有实例/情况时,替换文本将只是“”。
答案 4 :(得分:0)
我在一个项目中使用了pdf-redactor,效果很好。
Here是如何从文本层编辑社会保险号的示例。