Difference between revisions of "ReNamer:Scripts:Xpdf"

From den4b Wiki
Jump to navigation Jump to search
(→‎Code: source tag)
(→‎Code: Updated the tested versions)
 
(12 intermediate revisions by the same user not shown)
Line 1: Line 1:
Script integrates [http://www.foolabs.com/xpdf/ Xpdf] command line tool in order to extract PDF tags.
+
{{Up|ReNamer:Scripts}}
 +
 
 +
Script integrates [http://www.xpdfreader.com/about.html Xpdf] command line tool in order to extract PDF tags.
 +
 
 +
References:
 +
* http://www.den4b.com/forum/viewtopic.php?id=349
  
 
== Requirements ==
 
== Requirements ==
* ReNamer 5.10 Beta
+
 
* [http://www.foolabs.com/xpdf/download.html pdfinfo.exe] 3.02 in ReNamer's folder
+
* Download [http://www.xpdfreader.com/download.html Xpdf tools] and extract <code>pdfinfo.exe</code> into ReNamer's folder.
  
 
== Code ==
 
== Code ==
  
Author: Denis Kozlov. Date: 10 Oct 2007. Modify the PDF_TAG constant to specify which tag you want to extract. For the list of available tags consult Xpdf web site or pdfinfo.exe command line tool.
+
Author: Denis Kozlov. Date: 2013-04-01.
  
<source>
+
Modify the <code>TAG</code> constant to specify which tag you want to extract. For the list of available tags consult [http://www.xpdfreader.com/support.html Xpdf] web site or <code>pdfinfo.exe</code> command line tool.
{ Extract PDF tag }
 
  
 +
* Tested with ReNamer 7.1 + Xpdf tools 4.01.01.
 +
 +
<syntaxhighlight lang="pascal">
 +
{ Extract PDF tags using Xpdf }
 +
 
const
 
const
   PDF_INFO = 'pdfinfo.exe';
+
   EXE = 'pdfinfo.exe -enc UTF-8';
   PDF_TAG = 'Title';
+
   TAG = 'Title\s*\:\s*(.*?)[\r\n]';
 
+
function ExtractTagPDF(const Info, Tag: string): string;
 
 
var
 
var
   Lines: TStringsArray;
+
   Command, Output: String;
   I, Delim: Integer;
+
   Matches: TWideStringArray;
 +
 
begin
 
begin
   Result := '';
+
   Command := EXE+' "'+FilePath+'"';
   Lines := WideSplitString(Info, #13#10);
+
   if ExecConsoleApp(Command, Output) = 0 then
  for I := 0 to Length(Lines)-1 do
 
  if WideSameText(Tag, Copy(Lines[i], 1, Length(Tag))) then
 
 
   begin
 
   begin
     Delim := WidePos(':', Lines[i]);
+
     Matches := SubMatchesRegEx(Output, TAG, False);
     if Delim > 0 then
+
     if Length(Matches) > 0 then
    begin
+
       FileName := Matches[0] + WideExtractFileExt(FileName);
       Result := WideCopy(Lines[i], Delim+1, WideLength(Lines[i]));
 
      Result := Trim(Result);
 
    end;
 
 
   end;
 
   end;
end;
 
 
var
 
  Command, Output: string;
 
  TagValue: string;
 
 
begin
 
  Command := '"'+PDF_INFO+'" "'+FilePath+'"';
 
  ExecConsoleApp(Command, Output);
 
  TagValue := ExtractTagPDF(Output, PDF_TAG);
 
  FileName := TagValue + WideExtractFileExt(FileName);
 
 
end.
 
end.
</source>
+
</syntaxhighlight>

Latest revision as of 21:52, 7 September 2019

Script integrates Xpdf command line tool in order to extract PDF tags.

References:

Requirements

  • Download Xpdf tools and extract pdfinfo.exe into ReNamer's folder.

Code

Author: Denis Kozlov. Date: 2013-04-01.

Modify the TAG constant to specify which tag you want to extract. For the list of available tags consult Xpdf web site or pdfinfo.exe command line tool.

  • Tested with ReNamer 7.1 + Xpdf tools 4.01.01.
{ Extract PDF tags using Xpdf }
 
const
  EXE = 'pdfinfo.exe -enc UTF-8';
  TAG = 'Title\s*\:\s*(.*?)[\r\n]';
 
var
  Command, Output: String;
  Matches: TWideStringArray;  
 
begin
  Command := EXE+' "'+FilePath+'"';
  if ExecConsoleApp(Command, Output) = 0 then
  begin
    Matches := SubMatchesRegEx(Output, TAG, False);
    if Length(Matches) > 0 then
      FileName := Matches[0] + WideExtractFileExt(FileName);
  end;
end.