下面是我的解决方案,它只是附加,因为我无法弄清楚替换。对于最终的 HTML 演示文稿,我仍然需要删除某些 XML 标记。无论如何,它有效,所以我把它贴在这里以防它帮助你:
$f = new NoteFilter();
$f->notebookGuid="e0a42e90-0297-442f-8157-44a596e5b8b5"; //default
//$f->notebookGuid="b733f6ab-e3b7-443a-8f5a-2bbe77ea1c1e"; //MyStuff
$n = $noteStore->findNotes($authToken, $f, 0, 100); // Fetch up to 100 notes
$total=$n->totalNotes;
if (!empty($n->notes)) {
foreach ($n->notes as $note) {
$fullNote = $noteStore->getNote($authToken, $note->guid, true, false, false, false);
$content = $fullNote->content;
$dom = new DOMDocument;
$dom->loadXml($content);
//list all <en-media>
$medias = $dom->getElementsByTagName('en-media');
foreach ($medias as $media) {
$hash = $media->getAttribute('hash');
$hash = hashXmlToBin($hash); //xml to bin for ByHash method below
$resource=$noteStore->getResourceByHash($authToken, $note->guid,$hash,0,0,0,0);
//get url
$url=resourceUrl($authToken,$resource);
//if image, show inline
$inline=array('image/png','image/jpeg','image/jpg','image/gif');
if (in_array($resource->mime,$inline)) {
$img=$dom->createElement('img');
$img->setAttribute('src', $url);
$img->setAttribute('width', $resource->width);
$img->setAttribute('height', $resource->height);
}else { //show link
$rewrite=array('application/pdf'=>'PDF');
$mime=str_replace('application/','',$resource->mime);
$filename=$resource->attributes->fileName;
$img=$dom->createElement('a',"Download {$filename} ({$mime})");
$img->setAttribute('href', $url);
$img->setAttribute('class', "download-attachement");
}
// append to DOM
$media->appendChild($img);
}//foreach medias
$content=$dom->saveXML();
$out[]=$content;
}//foreach notes
foreach ($out as $val)
print "<hr/>".$val; //each note
}//notes exist
/*
* http://discussion.evernote.com/topic/4521-en-media-hash/
*/
function hashXmlToBin($hash) {
$chunks = explode("\n", chunk_split($hash,2,"\n"));
$calc_hash = "";
foreach ($chunks as $chunk) {
$newdata="";
if (!empty($chunk)) {
$len = strlen($chunk);
for($i=0;$i<$len;$i+=2) {
$newdata .= pack("C",hexdec(substr($chunk,$i,2)));
}
$bin_chunk = $newdata;
$calc_hash .= $bin_chunk;
}
}
return $calc_hash;
}
/*
* return a resource url
*/
function resourceUrl($authToken, $resource, $resize = FALSE, $thumbnailSize = 150) {
//build URL
if (!$resize)
$url=EVERNOTE_SERVER."/shard/".$_SESSION['shard']."/res/".$resource->guid; //originals
else
$url=EVERNOTE_SERVER."/shard/".$_SESSION['shard']."/thm/res/".$resource->guid."?size={$thumbnailSize}"; //thumbnail
return $url;
}