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