我有一个pdf文件,我想替换pdf文件中的一些文本并生成新的pdf。我怎么能在python中做到这一点? 我试过reportlab,reportlab没有任何搜索文本和替换它的功能。我可以使用哪些其他模块?
答案 0 :(得分:3)
您可以尝试Aspose.PDF Cloud SDK for Python,Aspose.PDF Cloud是REST API PDF处理解决方案。它是付费的API,其免费打包计划每月可提供50点信用。
我是Aspose的开发人员布道者。
import os
import asposepdfcloud
from asposepdfcloud.apis.pdf_api import PdfApi
# Get App key and App SID from https://cloud.aspose.com
pdf_api_client = asposepdfcloud.api_client.ApiClient(
app_key='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
app_sid='xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx')
pdf_api = PdfApi(pdf_api_client)
filename = '02_pages.pdf'
remote_name = '02_pages.pdf'
copied_file= '02_pages_new.pdf'
#upload PDF file to storage
pdf_api.upload_file(remote_name,filename)
#upload PDF file to storage
pdf_api.copy_file(remote_name,copied_file)
#Replace Text
text_replace = asposepdfcloud.models.TextReplace(old_value='origami',new_value='polygami',regex='true')
text_replace_list = asposepdfcloud.models.TextReplaceListRequest(text_replaces=[text_replace])
response = pdf_api.post_document_text_replace(copied_file, text_replace_list)
print(response)
答案 1 :(得分:0)
在THIS thread中查看从PDF中读取文本的众多方法之一。然后你需要创建一个新的pdf,据我所知,它们不会为你检索任何格式。
答案 2 :(得分:-1)
CAM::PDF Perl Library可以输出非太难以解析的文本(它似乎相当随意地分割文本行)。我无法学习太多的Perl,所以我编写了这些非常基本的Perl命令行脚本,一个将单页pdf读取到文本文件perl read.pl pdfIn.pdf textOut.txt
,另一个写入文本(可以修改)在此期间)到pdf perl write.pl pdfIn.pdf textIn.txt pdfOut.pdf
。
#!/usr/bin/perl
use Module::Load;
load "CAM::PDF";
$pdfIn = $ARGV[0];
$textOut = $ARGV[1];
$pdf = CAM::PDF->new($pdfIn);
$page = $pdf->getPageContent(1);
open(my $fh, '>', $textOut);
print $fh $page;
close $fh;
exit;
和
#!/usr/bin/perl
use Module::Load;
load "CAM::PDF";
$pdfIn = $ARGV[0];
$textIn = $ARGV[1];
$pdfOut = $ARGV[2];
$pdf = CAM::PDF->new($pdfIn);
my $page;
open(my $fh, '<', $textIn) or die "cannot open file $filename";
{
local $/;
$page = <$fh>;
}
close($fh);
$pdf->setPageContent(1, $page);
$pdf->cleanoutput($pdfOut);
exit;
你可以使用python call这些在输出的文本文件上做一些正则表达式等东西。
如果您对Perl完全不熟悉(就像我一样),您需要确保安装了Perl和CPAN,然后运行sudo cpan
,然后在提示install "CAM::PDF";
中,这将安装所需的模块。
另外,我意识到我应该使用stdout等,但我很着急: - )
另外,任何想法CAM-PDF输出的格式是什么?是否有任何文件?