簡體   English   中英

Python:如何替換pdf中的文本

[英]Python: How to replace text in pdf

我有一個 pdf 文件,我想替換 pdf 文件中的一些文本並生成新的 pdf。 我怎么能在python中做到這一點? 我試過 reportlab ,reportlab 沒有任何功能來搜索文本和替換它。 我可以使用什么其他模塊?

你可以試試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)

查看此線程,了解從 PDF 中讀取文本的多種方法之一。 然后你需要創建一個新的 pdf,據我所知,他們不會為你檢索任何格式。

CAM::PDF Perl 庫可以輸出不太難解析的文本(它似乎相當隨機地分割文本行)。 我懶得學太多 Perl,所以我寫了這些非常基本的 Perl 命令行腳本,一個將單頁 pdf 讀取到文本文件perl read.pl pdfIn.pdf textOut.txt和一個寫入文本的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 調用這些。

如果您完全不熟悉 Perl(就像我一樣),您需要確保安裝了 Perl 和 CPAN,然后運行sudo cpan ,然后在提示中install "CAM::PDF"; ,這將安裝所需的模塊。

另外,我意識到我可能應該使用 stdout 等,但我很着急:-)

另外,任何想法CAM-PDF輸出的格式是什么? 有什么文檔嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM