Python:如何替换pdf中的文本

时间:2015-07-29 14:13:19

标签: python pdf reportlab pypdf

我有一个pdf文件,我想替换pdf文件中的一些文本并生成新的pdf。我怎么能在python中做到这一点? 我试过reportlab,reportlab没有任何搜索文本和替换它的功能。我可以使用哪些其他模块?

3 个答案:

答案 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输出的格式是什么?是否有任何文件?