OT: rozdeleni PDF
Jirka Kosek
jirka at kosek.cz
Mon Jan 28 20:09:40 CET 2002
Hans Ginzel wrote:
> tento dotaz tu jiz padl v roce 1999, ale bez odpovedi. Zkousim tedy
> znovu, zda-li nevite o utilite, ktera umi rozdelit PDF podle zadanych
> stranek, nebo podle bookmarku?
Plná verze Acrobatu nabízí své funkce přes ActiveX rozhraní -- celkem
snadno lze napsat WSH skript, který extrahuje požadované stránky z
libovolného PDF dokumentu.
Např. následující funkce rozseká PDF dokument po jednotlivých stránkách
do souborů.
Acrobat má své mouchy -- třeba mi v něm nechodilo vytvoření prázdného
dokumentu, proto se to musí obejít tím, že nahrazujete stránky v
prázdném dokumentu apod.
// Creates one page chunks from any PDF file
function Chunk(filename)
{
fso = new ActiveXObject("Scripting.FileSystemObject");
fin = fso.GetAbsolutePathName(filename);
fempty = fso.GetAbsolutePathName("empty.pdf");
// open master document
WScript.Echo("Processing file " + fin);
var avdoc = WScript.CreateObject("AcroExch.AVDoc");
avdoc.Open(fin, "");
doc = avdoc.GetPDDoc();
n = doc.GetNumPages();
// create temp document
var newavdoc = WScript.CreateObject("AcroExch.AVDoc");
// process pages
for (i=0; i<n; i++)
{
fout = fso.GetAbsolutePathName(fso.GetBaseName(fin) + "-" + i +
".pdf");
fso.CopyFile(fempty, fout);
WScript.Echo("Creating " + fout);
pageno++;
// open document for single chunk
newavdoc.Open(fout, "");
newdoc = newavdoc.GetPDDoc();
newdoc.ReplacePages(0, doc, i, 1, false);
newdoc.Save(newdoc.PDSaveFull | newdoc.PDSaveCollectGarbage, fout);
newdoc.Close();
newavdoc.Close(false);
}
doc.Close();
avdoc.Close(true);
}
--
-----------------------------------------------------------------
Jirka Kosek
e-mail: jirka at kosek.cz
http://www.kosek.cz
More information about the csTeX
mailing list