It is part of the text of the file. Generally on one line as ISBN 1234567890123 and may have dashes between numbers or periods between letters.
Do you have any examples of how to incorporate the two options you mention?
Not sure if it would help any I do have a javascript that is used in Acrobat(batch/document processing) itself that typically finds the ISBN. Although I do not want to point to Acrobat to do this. It needs to be able to run without the presence of Acrobat. Below is this javascript for what it is worth.
/* Extract ISBN numbers From the Document */
// This script will scan all pages of the input document
// and extract valid ISBN numbers into new PDF document.
// Output PDF document will be placed in the same folder
// as input. The name of the output document will be:
// Original filename + "_Extracted_ISBN"
// Visit www.evermap.com for more useful JavaScript samples.
// This is a combination of strict and relaxed versions of ISBN number format
var reISBN=/(ISBN[\:\=\s][\s]*(?=[-0-9xX ]{13})(?:[0-9]+[- ]){3}[0-9]*[xX0-9])|(ISBN[\:\=\s][ ]*\d{9,10}[\d|x])/g;
var strExt = "_Extracted_ISBN.pdf";
var strIntro = "ISBN numbers extracted from document: ";
var strFinal = "Total number of ISBN numbers extracted: " ;
ExtractFromDocument(reISBN,strExt,strIntro,strFinal);
function ExtractFromDocument(reMatch, strFileExt, strMessage1, strMessage2)
{
var chWord, numWords;
// construct filename for output document
var filename = this.path.replace(/\.pdf$/, strFileExt);
// create a report document
try {
var ReportDoc = new Report();
var Out = new Object(); // array where we will collect all our emails before outputing them
ReportDoc.writeText(strMessage1 + this.path);
ReportDoc.divide(1); // draw a horizontal divider
ReportDoc.writeText(" "); // write a blank line to output
for (var i = 0; i < this.numPages; i++)
{
numWords = this.getPageNumWords(i);
var PageText = "";
for (var j = 0; j < numWords; j++) {
var word = this.getPageNthWord(i,j,false);
PageText += word;
}
var strMatches = PageText.match(reMatch);
if (strMatches == null) continue;
// now output matches into report document
for (j = 0; j < strMatches.length; j++) {
Out[strMatches[j]] = true; // store email as a property name
}
}
var nTotal = 0;
for (var prop in Out)
{
ReportDoc.writeText(prop);
nTotal++;
}
ReportDoc.writeText(" "); // output extra blank line
ReportDoc.divide(1); // draw a horizontal divider
ReportDoc.writeText(strMessage2 + nTotal);
// save report to a document
ReportDoc.save(
{
cDIPath: filename
});
}
catch(e)
{
app.alert("Processing error: "+e)
}
} // end of the function