Quando stampo un PDF da uno qualsiasi dei miei PDF di origine, le dimensioni del file diminuiscono e rimuovono le caselle di testo presenti nel modulo. In breve, appiattisce il file. Questo è un comportamento che voglio raggiungere.Genera PDF appiattito con Python
Il seguente codice per creare un PDF utilizzando un altro PDF come origine (quello che voglio appiattire), scrive anche il modulo delle caselle di testo.
Posso ottenere un PDF senza le caselle di testo, appiattirlo? Proprio come fa Adobe quando stampo un PDF come PDF.
mio altro codice assomigli a questo meno alcune cose:
import os
import StringIO
from pyPdf import PdfFileWriter, PdfFileReader
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
directory = os.path.join(os.getcwd(), "source") # dir we are interested in
fif = [f for f in os.listdir(directory) if f[-3:] == 'pdf'] # get the PDFs
for i in fif:
packet = StringIO.StringIO()
can = canvas.Canvas(packet, pagesize=letter)
can.rotate(-90)
can.save()
packet.seek(0)
new_pdf = PdfFileReader(packet)
fname = os.path.join('source', i)
existing_pdf = PdfFileReader(file(fname, "rb"))
output = PdfFileWriter()
nump = existing_pdf.getNumPages()
page = existing_pdf.getPage(0)
for l in range(nump):
output.addPage(existing_pdf.getPage(l))
page.mergePage(new_pdf.getPage(0))
outputStream = file("out-"+i, "wb")
output.write(outputStream)
outputStream.close()
print fName + " written as", i
Riassumendo: Ho un pdf, ho aggiungere una casella di testo ad esso, coprire informazioni e l'aggiunta di nuove informazioni, e poi Stampo un pdf da quel pdf La casella di testo non diventa più modificabile o mobile. Volevo automatizzare quel processo ma tutto ciò che ho provato permetteva comunque che la casella di testo fosse modificabile.
Anche cercando una soluzione a questo. Ho uno script Python con filigrana, ma la filigrana interferisce quando si tenta di selezionare o evidenziare il testo nel documento. Se potessi generare un PDF filigranato appiattito e quindi unirlo con i PDF di origine, questo lo risolverebbe. –
I nomi dei file seguono alcune convenzioni specifiche? se sì, qual è il semantico? Qual è lo scopo di dividere il nome del file per spazio, e quindi con una virgola? (altrimenti, lo script fallisce, ma non sono sicuro che sia rilevante o meno per il problema che si sta affrontando) – gpoo
+ MakeCents Non riesco a riprodurre il problema. Non ho scatole. Puoi incollare un'immagine con il risultato che ottieni e il risultato atteso? – gpoo