Wenn ich ein PDF aus einer meiner Quell-PDFs drucke, fällt die Dateigröße und entfernt die Textfelder, die im Formular angezeigt werden. Kurz gesagt, es flacht die Datei ab. Das ist Verhalten, das ich erreichen möchte.Generieren Sie flaches PDF mit Python
Der folgende Code zum Erstellen einer PDF mit einer anderen PDF als Quelle (die ich abflachen möchte), schreibt es auch die Textfelder.
Kann ich ein PDF ohne die Textfelder bekommen, es zu glätten? Genau wie Adobe, wenn ich ein PDF als PDF drucke.
Mein anderer Code sieht so etwas wie dieser minus einige Dinge:
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
Zusammengefasst: Ich habe ein pdf, füge ich ein Textfeld, um es, Informationen zu vertuschen und neue Informationen hinzufügen und dann Ich drucke ein pdf aus diesem pdf. Das Textfeld kann nicht mehr bearbeitet oder verschoben werden. Ich wollte diesen Prozess automatisieren, aber alles, was ich versuchte, erlaubte trotzdem, dass diese Textbox editierbar war.
Auch auf der Suche nach einer Lösung für diese. Ich habe ein Wasserzeichen-Python-Skript, aber das Wasserzeichen stört mich, wenn ich Text im Dokument auswählen oder hervorheben möchte. Wenn ich ein flaches Wasserzeichen-PDF erstellen und es dann mit den Quell-PDFs zusammenführen könnte, würde das den Fehler beheben. –
Folgen die Dateinamen bestimmten Konventionen? Wenn ja, welches ist die Semantik? Was ist der Zweck der Aufteilung des Dateinamens nach Leerzeichen und dann durch Komma? (Sonst schlägt das Skript fehl, aber ich bin mir nicht sicher, ob das für das Problem relevant ist oder nicht) – gpoo
+ MakeCents Ich kann das Problem nicht reproduzieren. Ich bekomme keine Kisten. Können Sie ein Bild mit dem Ergebnis und dem erwarteten Ergebnis einfügen? – gpoo