On 20-7-2011 2:02, Hartmut Henkel wrote:
2011/7/20 Procházka Lukáš Ing. - Pontex s. r. o.<l...@pontex.cz>:
Hello,

this question in not straightly related to Context, but Context users
may
have solved it and Ctx may be used to solve it.

I would need to get the following information from .pdf file(s):

- number of pages,
- common width and height of pages (provided that they are the same;
otherwise the dimension can be e.g. zero).

The final goal is to use Ctx as a .pdf joining engine - to provide this,
I
need to know whether the .pdf to be inserted is portrait or landscape
oriented, what is its size (so if to be scaled or not) etc.

So Lua inside Ctx may be used to get the required .pdf info, if
necessary.

If an external program was used, it should be non-interactive
(command-line
oriented), free and working under Windows.

Does anyone have any experience with such a task?
You can use some macros (see Taco), and for external programs
google for  mupdf and  xpdf

Tthe lua pdf library with mkiv should be also useful, but I've still
to play with it.

luatex's epdf library (= poppler Lua bindings, maybe that's what Luigi meant) 
allows to extract all this info from a pdf file, with a bit of Lua programming.

indeed (although we still need to fill in some gaps)

anyhow:

local MyDocument = lpdf.epdf.load("sometext.pdf")

context.starttext()

local pages    = MyDocument.pages
local dummy = MyDocument.pages[1] -- we need lua 5.2 in order to avoid this

local nofpages = #MyDocument.pages

context.starttabulate { "|c|c|c|" }

context.NC() context("page")
context.NC() context("width")
context.NC() context("height") context.NR()

for i=1, nofpages do
    local page = pages[i]
    local bbox = page.CropBox or page.MediaBox
    context.NC() context(i)
    context.NC() context(bbox[4]-bbox[2])
    context.NC() context(bbox[3]-bbox[1]) context.NR()
end

context.stoptabulate()

context.stoptext()



-----------------------------------------------------------------
                                          Hans Hagen | PRAGMA ADE
              Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
    tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com
                                             | www.pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to