Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.python > #4773

Re: [Python-de] Toll für PDF "Eindruck"?

Path csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail
From Hans-Peter Jansen <hpj@urpla.net>
Newsgroups de.comp.lang.python
Subject Re: [Python-de] Toll für PDF "Eindruck"?
Date Fri, 05 May 2017 13:27:34 +0200
Lines 97
Message-ID <mailman.633.1493984013.2951.python-de@python.org> (permalink)
References <33b0598f-7a26-b5a9-1970-590405851397@goebel-consult.de> <3236541.ZOMqQDfe6K@xrated>
Mime-Version 1.0
Content-Type text/plain; charset="iso-8859-1"
Content-Transfer-Encoding quoted-printable
X-Trace news.uni-berlin.de hgaYSv+C8oPszNwgsR+inQuIDHL1HJ/YPK/SG28oEfOg==
Return-Path <hpj@urpla.net>
X-Original-To python-de@python.org
Delivered-To python-de@mail.python.org
X-Virus-Scanned amavisd-new at lisa.loc
User-Agent KMail/4.14.10 (Linux/4.10.13-9-default; KDE/4.14.28; x86_64; ; )
In-Reply-To <33b0598f-7a26-b5a9-1970-590405851397@goebel-consult.de>
X-Provags-ID V03:K0:az8fO6+a6qcAv8fCCEGKP/cgCCH2kMraCz1WJktAOkkx9BkQvRM jM1aG/3y7HF/1qg6jjm2diQDZ747Gu+DwH6114XqyDOxdDKrZa1T76yGKMQLx8h9V3NpkYH G/tJScb9JPlByQk3m1xjx6nye5fx6nhEdT71bjdDY1CsaPoVN3xjHmbOxLn09IgriAff9NB QILnklhcOMM9rMKICupXg==
X-UI-Out-Filterresults notjunk:1;V01:K0:rfgK94wkZKw=:KT5201D55asaC6p3xBTlO4 EdRfKTKFq1FdMFeyQ3qOhNxMH2VcfyYlrVjLtM7nE8393Sl6RnTY9IuvnQVNNaJKEhUMebUsd o53ozK/1j/VByIKgm8+Vc3dtVpcma3mfjUpK4wETWBXkxO726hUXdR7p1YgGQiQN74JtoBtOD J3YuzsAYMyLfF8w0G1SKXB6qfKGrmcT4aMcSLk+tpAQxCw2lBmPX8hTUDVuiGPTVJMyBqtKiX W2iQKq4FscwhXJLCwztIVtqLyDsltcvaRxeQEmAHaguDs8kIy3KJftKuXWbLRl2cT1Jz6TMsu hpViUFvEaWZ09Jq1ryjSHw99OkIVubtoLRcJBZMC05Xqur3XZ9fsw4dnMsufWUvb9bLZ6fjEJ yHx2EU3SFAnBWkWLRtXozCW3AybiaNOyKsQk5MY4mijrbkw8LX6PxeSZlLjrhJg179B55r7OZ OHzx7g+iUxaQOeQRGDlHB6Vva3EB2HytEr51817sywdLMYqiP2MxmBPJ+rzIM/hPxDH1U8WJG ZOKTdE/W3Drfp3njJP0hNxsSDJtRGS9+aBC2e82BjLORDYEonj1C7DEPaelK4KwceQDxu420o c91zR/kn58nnf8UIj/eQY99ZdWViGoqX7J6Z22Y6qtM/NXjKtGy7mjSxw0vCliiCcWCxP+NHc 8kmq7FS3h811RaUYY9RSywaIpTl76+CvcA9UZ1hfPhPncMOHICWiznXBgts8BWv+0zPM=
X-Mailman-Approved-At Fri, 05 May 2017 07:33:33 -0400
X-Content-Filtered-By Mailman/MimeDel 2.1.23
X-BeenThere python-de@python.org
X-Mailman-Version 2.1.23
Precedence list
List-Id Die Deutsche Python Mailingliste <python-de.python.org>
List-Unsubscribe <https://mail.python.org/mailman/options/python-de>, <mailto:python-de-request@python.org?subject=unsubscribe>
List-Archive <http://mail.python.org/pipermail/python-de/>
List-Post <mailto:python-de@python.org>
List-Help <mailto:python-de-request@python.org?subject=help>
List-Subscribe <https://mail.python.org/mailman/listinfo/python-de>, <mailto:python-de-request@python.org?subject=subscribe>
X-Mailman-Original-Message-ID <3236541.ZOMqQDfe6K@xrated>
X-Mailman-Original-References <33b0598f-7a26-b5a9-1970-590405851397@goebel-consult.de>
Xref csiph.com de.comp.lang.python:4773

Show key headers only | View raw


On Donnerstag, 4. Mai 2017 11:18:22 Hartmut Goebel wrote:
> Hallo,
> 
> ich suche ein Tool, mit dem man einen "Eindruck" in ein PDF machen kann,
> oder ein Tool, um ein PDF mit einem Text-Block an einer bestimmten
> Stelle der Seite zu erzeugen. Es muss auch nicht Python sein.
> 
> Kennt jemand was in die Richtung?
> 
> Wenn ich es slesbt schreiben würde, würde ich ungefähr folgendes machen:
> 
> - mit ReportLab eine PDF-Seite mit dem "Eindruck" erstellen
> - mit PyPDF2 diese Seite mit der Vorlage übereinander legen.
> 
> Der aufwändigere Teil wäre Schritt eins :-)

Dies habe ich mal fürs "Eindrucken" von Timestamps in PDFs verwendet.

Die Idee war: ersetze eine Dummy-Zeichenfolge durch die Richtige in einem PS-
File, generiert aus dem LO-Template, und überlagere alle Seiten des zu 
druckenden PDFs mit dem PDF-Overlay.

Hier ein paar Rudimente, die Dich weiterbringen könnten.

Sicherlich sind da ein paar fragwürdige Ansätze enthalten, z.B. die sed nach 
ps2pdf Pipe, aber Du weist ja, wie es im richtigen Leben läuft...

Damals waren die Python PDF Bibliotheken noch nicht so weit.

Hat über mehrere Jahre erstaunlich gut funktioniert.
Wenn Du das ganze Projekt möchtest, sag Bescheid.


class config:
    tstemplate = 'timestamp-template.ps'
    # not propagated to config file
    tspattern = '31322E33342E353637382039303A31323A3334'


class PDFOverlay:
    def pdftimestamp(self, fpath):
        tstemp = os.path.join(config.appdir, config.tstemplate)
        if not os.path.exists(tstemp):
            log.error("pdftimestamp: %s not found" % tstemp)
            return fpath
        tsfd, tsfn = tempfile.mkstemp(suffix='.pdf', dir='/var/tmp')
        config.tmpfiles.append(tsfn)
        encts = tohex(time.strftime("%d.%m.%Y %H:%M:%S"))

        # generate a timestamp pdf from ps template
        cmd = "LANG=C sed -e 's;%s;%s;g' < '%s' | ps2pdf - '%s'" % 
(config.tspattern, encts, tstemp, tsfn)
        log.debug("cmd: %s" % repr(cmd))
        try:
            p = Popen(cmd, shell = True, stdout=PIPE, stderr=PIPE)
        except OSError, e:
            log.error("failed to run %s: %s" % (repr(cmd), e))
            return fpath
        stdout, stderr = p.communicate()
        if p.returncode:
            log.error(u"%s: %s" % (cmd, stderr))
            return fpath

        # overlay original file and timestamp pdf       
        pdffd, pdffn = tempfile.mkstemp(suffix='.pdf', dir='/var/tmp')
        config.tmpfiles.append(pdffn)
        cmd = "LANG=C pdftk '%s' stamp '%s' output '%s'" % (fpath, tsfn, 
pdffn)
        log.debug("cmd: %s" % repr(cmd))
        try:
            p = Popen(cmd, shell = True, stdout=PIPE, stderr=PIPE)
        except OSError, e:
            log.error("failed to run %s: %s" % (repr(cmd), e))
            return fpath
        stdout, stderr = p.communicate()
        if p.returncode:
            log.error(u"%s: %s" % (cmd, stderr))
            return fpath
       
        return pdffn



SG,
Hans-Peter

Back to de.comp.lang.python | Previous | Next | Find similar


Thread

Re: [Python-de] Toll für PDF "Eindruck"? Hans-Peter Jansen <hpj@urpla.net> - 2017-05-05 13:27 +0200

csiph-web