=== [deprecated] How do I import my EndNote library, complete with attached PDFs? ===
**//This procedure is no longer necessary for Zotero 3.0.9. Please refer to [[importing_records_from_endnote|this article]] for help//**
Obviously, manually adding every PDF from a large EndNote library would be rather labor intensive. There is a trick to automating it, though.
Zotero's RIS import does have the ability to import PDFs and Endnote does export links to your PDFs in the RIS files it generates. The problem is that Endnote does not give the full path to the file.
You should be able to import all the PDFs by using a single find and replace statement. In EndNote, you need to export your library using the RIS (Refman) style. It should be exported as a text document.
In it, you will want to replace the 'internal-pdf://' links with 'file://' links.
On Mac OS X and Linux, you may run:sed -e 's/internal-pdf:\/\/.*\//file:\/\/[escaped-path-to-pdfs]\//g' [input.ris] > [output.ris]
(see remark [[kb:exporting_from_endnote_with_pdfs#remark on sed statement|below]])
On Windows, you may copy the following and paste it into notepad. Save as "ris-fix.vbs" or similar & run it:
' RIS link fixer for windows
' transforms Endnote internal-pdf:// links into file:// links
Dim FileName, objDialog, boolResult
Dim regEx, FileContents, modFileContents
Dim objShell, pdfFolder
'choose RIS file
Set objDialog = CreateObject("UserAccounts.CommonDialog")
objDialog.Filter = "RIS (*.ris)|*.ris|All Files (*.*)|*.*"
objDialog.FilterIndex = 1
boolResult = objDialog.ShowOpen
If boolResult = 0 Then
WScript.Quit
Else
FileName = objDialog.FileName
End If
'regexreplacement
Set regEx = New RegExp
regEx.Pattern = "internal-pdf://.*/"
FileContents = GetFile(FileName)
'choose folder containing PDFs
set objShell = CreateObject("Shell.Application")
set pdfFolder = objShell.BrowseForFolder(0, "Specify a folder where you have copied all your PDFs...", 0)
If (not pdfFolder is nothing) then
ReplaceWith = "file://" + pdfFolder.self.Path
If (Right(ReplaceWith, 1)<>"\") then
ReplaceWith = ReplaceWith & "\"
End If
regEx.Global = True
modFileContents = regEx.replace(FileContents, ReplaceWith)
If modFileContents <> FileContents Then
WriteFile FileName, modFileContents
Wscript.Echo "The RIS file has successfully been modified."
Else
Wscript.Echo "No EndNote attachments have been detected in the RIS file."
End If
End If
function GetFile(FileName)
If FileName<>"" Then
Dim FS, FileStream
Set FS = CreateObject("Scripting.FileSystemObject")
on error resume Next
Set FileStream = FS.OpenTextFile(FileName)
GetFile = FileStream.ReadAll
End If
End Function
function WriteFile(FileName, Contents)
Dim OutStream, FS
on error resume Next
Set FS = CreateObject("Scripting.FileSystemObject")
Set OutStream = FS.OpenTextFile(FileName, 2, True)
OutStream.Write Contents
End Function
== Remark on sed statement ==
Thanks for the tip. If the previous sed statement doen't work for you, try
sed -e 's/internal-pdf:\/\//file:\/\/[escaped-path-to-pdfs]\//g' [input.ris] > [output.ris]
instead.
Explanation: The previous sed statement did not work for me, as it removes the subdirectory contained in the RIS file exported by Endnote, resulting in [base-pdf-dir]/[filename.pdf]. However, to find the PDF [base-pdf-dir]/[subdir_named_by_endnote]/[filename.pdf] is neccessary.
Example: Your Endnote library called Literatur (i. e. Literatur.enl and Literatur.Data), and the exported RIS file Literatur.txt are located at H:\EndnoteTest. Run sed -e 's/internal-pdf:\/\//file:\/\/H:\/EndnoteTest\/Literatur.Data\/PDF\//g' Literatur.txt > Literatur_2zotero.ris The resulting file Literatur_2zotero.ris can be imported in zotero.
{{tag>kb entry}}