ANN: C# XMP Toolkit

Adobe provides the XMP Toolkit that gives developers the ability to easily extract, modify and inject XMP into a multitude of file formats. Unfortunately for .NET developers, it is only available for C++ and Java.
This is where the
C# XMP Toolkit fits in. It includes all the functionality from the XMP Toolkit and extends it with great new features.
Wraps XMPFiles, allowing easy extraction and injection of XMP.
Wraps XMPCore (XMPMeta, XMPIterator and XMPUtils), allowing easy editing of XMP.
Extends with new schema classes, for even easier editing of XMP.
Can be used by any .NET 2.0 application.
Freeware!
Please visit
Hålligång website for more information and download.

Version 0.1.2 is now available with updates and additions to the schemas.
Available schemas in this release:
DublinCore
Iptc
Photoshop
XmpBasic (except for Thumbnail property)
XmpRights
The following code snippet shows how easy it is to add XMP support to your application:
// Update Title, Keywords and Rating.
using (Xmp xmp = Xmp.FromFile("sample.jpg", XmpFileMode.ReadWrite))
    DublinCore dc = new DublinCore(xmp);
    dc.Title["x-default"] = "A sample image";
    dc.Subject.Clear();
    dc.Subject.Add("a");
    dc.Subject.Add("sample");
    dc.Subject.Add("image");
    XmpBasic basic = new XmpBasic(xmp);
    basic.Rating = 5;
    basic.MetadataDate = DateTime.Now;
    // See what's about to be stored.
    string xmpDump = xmp.Dump();
    xmp.Save();

Similar Messages

  • XMP Toolkit & Visual Studio 6.0

    Hi!
    I'm a software developper from Germany and got started into XMP a couple of days ago. With Microsoft Visual Studio 2005, everything works fine (I compiled the sources and received the lib files as static libraries which I can use for my code).
    Does it also work with Visual Studio 6.0? I tried it, but a "LNK1196: invalid or corrupt import object: unknown version" error is shown then, I suppose you can't use lib files created in 2005 for 6.0. Has anybody successfully used the XMP Toolkit on this version?
    Thanks.

    Tutorial: How to install Visual Studio 6 With Service Pack 5 on Windows Vista RTM
    - If you use Visual Studio.NET, do not install Visual Studio 2002, 2003, 2005 or 2008 first. If you do, this tutorial will not work. You must install them in this order...
    1. Visual Studio 6.0
    2. Service Pack 5
    3. Visual Studio 2002, 2003, 2005 or 2008
    - Right click on Setup.EXE from the Visual Studio 6 CD (MSVS98) and choose 'Run As Administrator' (take note it doesn't matter if your user is already an administrator you still must 'Run as Administrator')
    - You may encounter some strange 'Yes/No' questions which you may not know the answers to that have not prompted you during Visual Studio Setup before. I don't remember what I clicked exactly, but I remember one of them said 'Do you want to overwrite your 'blah blah' settings?' and I clicked 'No'.
    - You will need to reboot twice during installation
    - Before running Service pack 5 setup, you must make modifications to the file 'sp598ent.stf' here's how to do that (note some of the spaces have been truncated, try to not remove the extra space in the stf file when modifying it. If you do, this will not work at all, and you'll get a "Setup Damaged" error)...
    Step 1) Open C:\ServicePack5Dir\sp598ent.stf with 'Notepad.exe'
    Step 2) Replace the following line
    13 Group 28 36 38 29 30 32 26 27 14 25 16 17 20 18 19 15 39 21 22 24 23 43
    -with-
    13 Group 28 38 29 30 32 26 27 14 25 16 17 20 18 19 15 39 21 22 24 23 43
    Step 3) Delete the following lines leaving only a carriage return where it was
    36 Depend "27 ? : 37"
    37 IsWin95 CustomAction "sp598ent.dll,CheckForMDAC"
    Step 4) Save and close C:\ServicePack5Dir\sp598ent.stf
    - Once you are done with that, you must run right click 'setupsp5.exe' and choose 'Run as Administrator' (if you do not run as administrator it will not work)
    - Service Pack 5 Setup should work fine now.

  • Requesting contact info for XMP Toolkit SDK developers at Adobe

    Hello,
    I'm an engineer at Google, involved in the WebM project.  Information about our project is here:
    http://www.webmproject.org/
    WebM is "video for the web".  It specifies a standard container format (a WebM file is based on Matroska), which comprises a VP8 video stream and a Vorbis audio stream.
    More info about the WebM container format is described here:
    http://www.webmproject.org/code/specs/container/
    We are investigating mechanisms for supporting metadata in WebM, and we are looking specifically at using XMP for this purpose.  I have a few technical questions about the Adobe XMP Toolkit SDK, and would look to speak to an engineer or some such at Adobe.
    Does anyone know whom I can contact at Adobe, about making modifications to the XMP Toolkit SDK?
    You can contact me directly at my work email address: <[email protected]> .
    Thanks!
    -Matt

    Hello,
    I'm an engineer at Google, involved in the WebM project.  Information about our project is here:
    http://www.webmproject.org/
    WebM is "video for the web".  It specifies a standard container format (a WebM file is based on Matroska), which comprises a VP8 video stream and a Vorbis audio stream.
    More info about the WebM container format is described here:
    http://www.webmproject.org/code/specs/container/
    We are investigating mechanisms for supporting metadata in WebM, and we are looking specifically at using XMP for this purpose.  I have a few technical questions about the Adobe XMP Toolkit SDK, and would look to speak to an engineer or some such at Adobe.
    Does anyone know whom I can contact at Adobe, about making modifications to the XMP Toolkit SDK?
    You can contact me directly at my work email address: <[email protected]> .
    Thanks!
    -Matt

  • How GIF format is supported in XMP toolkit

    Hi all,
    I'm new to XMP and I'm using the XMP toolkit since some weeks. I was easily managing JPEG, TIFF, PNG and PDF, but I have problems with GIF format.
    Documentation declares it is supported, but I didn't find BlueSquare.gif between the samples. There is no handler available in the libraries. I cannot embed metadata in file that has not already.
    Maybe it can reads/modify only GIF that has already XMP embedded? (if so can someone give a sample of 89a GIF with XMP embedded).
    Is there anybodu that has found a way to add metadata anyway?

    Hello Jeknetics, I will attach this information that must be helpful for you. 
    Regards
    Link: http://search.ni.com/nisearch/app/main/p/ap/tech/lang/en/pg/1/sn/catnavm/fil/AND(nilanguage:en,phwebnt:10535,nicontenttyperoductmanual,nidocstatus:current)/

  • Cannot build XMP-Toolkit-SDK-CC201306

    Hi
    Is this the correct forum to post this question?
    I am using WIN 7 Professional 64 bit and Visual Studio 2010.
    I have been trying to produce the Visual Studio project from the GenerateXMPToolkitSDK_win.bat file.
    It fails repeatedly. It produces the VC10 directory.
    When I open the solution in VS2010 it has no project files?
    Note that I do not have Visual Studio running at the time of the build.
    The following text is the message returned: -
    G:\Downloads\Exif\XMP-Toolkit-SDK-CC-201306\XMP-Toolkit-SDK-CC201306\build>REM l
    ist of all projects to build
    G:\Downloads\Exif\XMP-Toolkit-SDK-CC-201306\XMP-Toolkit-SDK-CC201306\build>echo
    "Update path environment that cmake can be found"
    "Update path environment that cmake can be found"
    G:\Downloads\Exif\XMP-Toolkit-SDK-CC-201306\XMP-Toolkit-SDK-CC201306\build>REM s
    et PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\Syste
    m32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Microsoft SQL Server\100\Tool
    s\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\M
    icrosoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\Microsoft ASP.NET\ASP.N
    ET Web Pages\v1.0\;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x86;C:\Progra
    m Files (x86)\Intel\OpenCL SDK\2.0\bin\x64;C:\Program Files (x86)\CMake 2.8\bin;
    G:\Downloads\Exif\XMP-Toolkit-SDK-CC-201306\XMP-Toolkit-SDK-CC201306\build\..\..
    \resources\tools\CMakeApp\win\bin
    G:\Downloads\Exif\XMP-Toolkit-SDK-CC-201306\XMP-Toolkit-SDK-CC201306\build>set P
    ATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\
    WindowsPowerShell\v1.0\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Bi
    nn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Micro
    soft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET W
    eb Pages\v1.0\;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x86;C:\Program Fi
    les (x86)\Intel\OpenCL SDK\2.0\bin\x64;C:\Program Files (x86)\CMake 2.8\bin;G:\D
    ownloads\Exif\XMP-Toolkit-SDK-CC-201306\XMP-Toolkit-SDK-CC201306\build\..\tools\
    cmake\bin
    G:\Downloads\Exif\XMP-Toolkit-SDK-CC-201306\XMP-Toolkit-SDK-CC201306\build>echo
    "================= Generate project for XMP build ================="
    "================= Generate project for XMP build ================="
    G:\Downloads\Exif\XMP-Toolkit-SDK-CC-201306\XMP-Toolkit-SDK-CC201306\build>call
    cmake.bat 64 2010 WarningAsError Dynamic
    G:\Downloads\Exif\XMP-Toolkit-SDK-CC-201306\XMP-Toolkit-SDK-CC201306\build>echo
    OFF
    64 bit specified
    "Generator VS 2010 specified"
    "sensible warnings activated"
    "Static build off"
    CMakeFolder: "vc10/dynamic/windows_x64"
    Generator used: Visual Studio 10 Win64
    cmake ../../../. -G"Visual Studio 10 Win64" -DXMP_CMAKEFOLDER_NAME=""vc10/dynami
    c/windows_x64"" -DCMAKE_CL_64=ON -DCMAKE_ARCH=x64 -DXMP_BUILD_WARNING_AS_ERROR=O
    n -DXMP_BUILD_STATIC="Off"
    -- The C compiler identification is MSVC 16.0.40219.1
    -- The CXX compiler identification is MSVC 16.0.40219.1
    -- Check for working C compiler using: Visual Studio 10 Win64
    Could not register CMake's Visual Studio macros file 'CMakeVSMacros2.vsmacros' w
    hile Visual Studio is running. Please exit all running instances of Visual Studi
    o before continuing.
    CMake needs to register Visual Studio macros when its macros file is updated or
    when it detects that its current macros file is no longer registered with Visual
    Studio.
    -- Check for working C compiler using: Visual Studio 10 Win64 -- works
    -- Detecting C compiler ABI info
    Could not register CMake's Visual Studio macros file 'CMakeVSMacros2.vsmacros' w
    hile Visual Studio is running. Please exit all running instances of Visual Studi
    o before continuing.
    CMake needs to register Visual Studio macros when its macros file is updated or
    when it detects that its current macros file is no longer registered with Visual
    Studio.
    -- Detecting C compiler ABI info - done
    -- Check for working CXX compiler using: Visual Studio 10 Win64
    Could not register CMake's Visual Studio macros file 'CMakeVSMacros2.vsmacros' w
    hile Visual Studio is running. Please exit all running instances of Visual Studi
    o before continuing.
    CMake needs to register Visual Studio macros when its macros file is updated or
    when it detects that its current macros file is no longer registered with Visual
    Studio.
    -- Check for working CXX compiler using: Visual Studio 10 Win64 -- works
    -- Detecting CXX compiler ABI info
    Could not register CMake's Visual Studio macros file 'CMakeVSMacros2.vsmacros' w
    hile Visual Studio is running. Please exit all running instances of Visual Studi
    o before continuing.
    CMake needs to register Visual Studio macros when its macros file is updated or
    when it detects that its current macros file is no longer registered with Visual
    Studio.
    -- Detecting CXX compiler ABI info - done
    COMMON_BUILD_SHARED_DIR= G:/Downloads/Exif/XMP-Toolkit-SDK-CC-201306/XMP-Toolkit
    -SDK-CC201306/build/../build/shared
    -- ===========================================================================
    --  XMPCore64
    -- ===========================================================================
    --  OUTPUT_DIR = G:/Downloads/Exif/XMP-Toolkit-SDK-CC-201306/XMP-Toolkit-SDK-CC2
    01306/XMPCore/build/../../public/libraries/windows_x64/$(configuration)
    -- ===========================================================================
    --  XMPFiles64
    -- ===========================================================================
    --  OUTPUT_DIR = G:/Downloads/Exif/XMP-Toolkit-SDK-CC-201306/XMP-Toolkit-SDK-CC2
    01306/XMPFiles/build/../../public/libraries/windows_x64/$(configuration)
    -- ===========================================================================
    --  XMPToolkitSDK
    -- ===========================================================================
    --  64 bit build is: 1
    --  Static build is: Off
    --  XMPToolkitSDK
    --  Compiler:
    --  CC=C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin/x86_amd64/cl.e
    xe
    --  CXX=C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin/x86_amd64/cl.
    exe
    -- ===========================================================================
    -- Configuring done
    Could not register CMake's Visual Studio macros file 'CMakeVSMacros2.vsmacros' w
    hile Visual Studio is running. Please exit all running instances of Visual Studi
    o before continuing.
    CMake needs to register Visual Studio macros when its macros file is updated or
    when it detects that its current macros file is no longer registered with Visual
    Studio.
    CMake Error at G:/Downloads/Exif/XMP-Toolkit-SDK-CC-201306/XMP-Toolkit-SDK-CC201
    306/build/shared/SharedConfig_Common.cmake:132 (add_library):
      Cannot find source file:
        G:/Downloads/Exif/XMP-Toolkit-SDK-CC-201306/XMP-Toolkit-SDK-CC201306/XMPCore
    /build/../../third-party/expat/lib/xmlparse.c
      Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp
      .hxx .in .txx
    Call Stack (most recent call first):
      G:/Downloads/Exif/XMP-Toolkit-SDK-CC-201306/XMP-Toolkit-SDK-CC201306/XMPCore/b
    uild/CMakeLists.txt:192 (AddLibraryAndDependencies)
    CMake Warning:
      Manually-specified variables were not used by the project:
        CMAKE_ARCH
        XMP_BUILD_WARNING_AS_ERROR
    -- Build files have been written to: G:/Downloads/Exif/XMP-Toolkit-SDK-CC-201306
    /XMP-Toolkit-SDK-CC201306/build/vc10/dynamic/windows_x64
    Failed XMP build cmake.
    "Exiting CMakeUtils.bat"
    Failed  build cmake.
    "Exiting cmake.bat"
    Failed.
    "Exiting cmake_all.bat"
    CMake Build Failed.
    Press any key to continue . . .
    Can anyone hjelp me with this?
    Thanks John

    Inder
    Thanks for your help so far, perhaps I should have read the "Getting Started Guide" first!
    I have now been able to create all the VS solutions, when I open them in VS and I try to build the solution I get 45 warnings, samples of which include: -
    Warning               1              warning C4800: 'XMP_OptionBits' : forcing value to bool 'true' or 'false' (performance warning)                G:\Downloads\Exif\XMP-Toolkit-SDK-CC-201306\XMP-Toolkit-SDK-CC201306\XMPCore\source\Parse RDF.cpp 458                1              XMPCore
    Warning               2              warning C4267: 'argument' : conversion from 'size_t' to 'XMP_Uns32', possible loss of data                G:\Downloads\Exif\XMP-Toolkit-SDK-CC-201306\XMP-Toolkit-SDK-CC201306\XMPFiles\source\WXMP Files.cpp                204         1              XMPFiles
    Warning               3              warning C4244: '=' : conversion from 'double' to 'float', possible loss of data                G:\Downloads\Exif\XMP-Toolkit-SDK-CC-201306\XMP-Toolkit-SDK-CC201306\source\XMP_ProgressT racker.cpp                134         1              XMPFiles
    Warning               4              warning C4244: 'initializing' : conversion from 'double' to 'float', possible loss of data                G:\Downloads\Exif\XMP-Toolkit-SDK-CC-201306\XMP-Toolkit-SDK-CC201306\source\XMP_ProgressT racker.cpp                142         1              XMPFiles
    Warning               5              warning C4244: '=' : conversion from 'double' to 'float', possible loss of data                G:\Downloads\Exif\XMP-Toolkit-SDK-CC-201306\XMP-Toolkit-SDK-CC201306\source\XMP_ProgressT racker.cpp                149         1              XMPFiles
    Similarly if I try to run the solution I get the following error : -
    Unable to start program 'G:\Downloads\Exif\XMP-Toolkit-SDK-CC-201306\XMP-Toolkit-SDK-CC201306\build\vc10\static\w indows_x64\x64\Debug\ALL_BUILD'.    The system cannot find the file specified.
    Can you help me with this? I hope it's not something obvious and I don't want to waste your time.
    One problem I do have is that my programming background is VB.Net and not C++ !
    Regards John

  • IPTC/XMP Toolkit Wrapper in C#

    I wanted an extremely easy C# wrapper for the toolkit. One that would compile in Visual Studio 2005 and 2008 upon install, as well as have a class with simply had property values for each of the IPTC/XMP data. I hired someone to do this and it works beautifully. It's been released in DBGallery, a photo database system (www.grrsystems.com/DBGallery).
    If anyone is interested in purchasing this wrapper you may contact me at [email protected]
    Regards,
    Glenn Rogers, PMP
    GRR Systems, Inc.

    The XMP Toolkit C# Wrapper mentioned above has been recently updated to:
    - Use the XMP Toolkit CS6
    - Support additional fields, such as GPS
    - Support UTF8
    - Includes a sample project which uses .Net 4.0
    - Compiles in Visual Studio 2012
    Regards,
    Glenn Rogers, PMP
    Project Manager for DBGallery: Photo Management Database System

  • XMP Toolkit compilation error under win32 + recent VC editions

    Hi all,
    I just downloaded the XMP plugin and tried to compile it under win xp with VC9 (express edition).
    I get the following error a few times:
    C:\Program Files\Microsoft Visual Studio 9.0\VC\include\stdio.h(358) :  error C3163: '_vsnprintf': attributes inconsistent with previous  declaration
    1>        C:\Program Files\Microsoft Visual Studio  9.0\VC\include\stdio.h(350) : see declaration of '_vsnprintf'
    I'm not expert of win32 and/or VC environment, but I find quite strange that there is an error in stdio.h.
    Maybe some duplicate definition in XMP toolkit? Any hint?
    Thanks a lot,
    Roberto

    Thanks a lot!
    Regards,
       Roberto
    2010/5/6 Joerg Ehrlich <[email protected]>:
    Hi Roberto,
    >
    sorry for the late reply.
    Unfortunately the compilation error is due to a certain combination of the VS compiler and the third-party ZLib library used in XMPFiles.
    When compiling XMPFiles with the new Visual Studio 2008, certain definitions in the version 1.2.3 of ZLib collide with definitions in the CRT used in VS2008.
    The solution is to get the latest version of ZLib which is 1.2.5. But you also need to adjust the XMPFiles VS project a little bit.
    In that VS project you need to remove the file "gzio.c" from this folder: XMPFiles/Source Files/Third Party/zlib.
    With those two changes, the toolkit should compile.
    But you could also wait for the CS5 SDK which is about to be released pretty soon, which has this fixed as well.
    >
    If you have further questions, please let me know.
    Kind Regards
    Jörg
    Adobe XMP
    >

  • Using the XMP Toolkit in Illustrator

    I'm trying to read information from the XMP metadata of a linked image in Illustrator from a Plugin. The SDK doesn't seem to provide a full API for manipulating XMP apart from the ability to obtain the XMP packet from an art object via the AIArtSuite with GetArtXMP(...) etc.
    So naturally I went for Adobe's XMP Toolkit to do the hard work for me, however I've run into some strange issues that have me a little stumped. Basically, no matter what I do, after calling anything from the XMP Toolkit (SXMPMeta), I end up with either a SIGABRT or BAD_ACCESS in a random object destructor such as ai::FilePath or std::string.  I assume this is due to some memory being deallocated too early based on my usage of the toolkit.
    Doing a bit more reading, I see that the XMP Toolkit uses a singleton pattern under the hood. This leads me to believe that there is some conflict with Illustrator's own implementation of the toolkit and my own.
    Could anyone shed any light on this? Is there another way I should be doing this? Any help anyone can give me would be hugely appreciated!
    Thanks!
    -W
    *Edit: I've linked to the XMP Toolkit both statically and dynamically, each time with the same results.
    Another interesting thing I noticed is that if I compile both my plugin and the XMP toolkit with "Symbols Hidden By Default" (GCC_SYMBOLS_PRIVATE_EXTERN) set to "NO", I don't get a crash, but I can't register my namespaces. They just don't appear in the list of namespaces even after dumping the namespace list out directly after the call to SXMPMeta::RegisterNamespace(...)
    Should I be asking in the XMP Toolkit forum?

    Please ignore this post. The problem was in my own code. I was stomping over memory that wasn't mine to stomp over.
    /idiot

  • Solaris specific cmake files missing in XMP toolkit

    XMP_Config.cmake references Solaris specific files:
            execute_process(COMMAND "uname" OUTPUT_VARIABLE OSNAME)
            string(TOUPPER "${OSNAME}" OSNAME)
            if ( ${OSNAME} MATCHES SUNOS)
                execute_process(COMMAND "uname" "-p" OUTPUT_VARIABLE PLATFORM_SUNOS_ARCH)
                string(TOUPPER "${PLATFORM_SUNOS_ARCH}" PLATFORM_SUNOS_ARCH)
                if ( ${PLATFORM_SUNOS_ARCH} MATCHES SPARC)
             include(${XMP_ROOT}/build/XMP_sunos_sparc.cmake)
                else()
             include(${XMP_ROOT}/build/XMP_sunos_intel.cmake)
                endif()
            else()
         include(${XMP_ROOT}/build/XMP_Linux.cmake)
            endif()
    However, these files do not exist in the build directory (or anywhere in the package).
    I am trying to get this compiled on Solaris, so this is causing me grief.
    Where can I get these files?

    Hi Bejhan,
        XMP SDK is not supported on Solaris platform. In past we provided support for Solaris and by mistake this code was left in SDK. I can help you to build the xmptoolkit for Solaris but you have to do some more work on your side to get it done. Again, you may face crashes on SPARC Solaris due to endian (big & little).
       Please follow the following steps in order to build it on Solaris
      1. Go to the build/shared directory
      2. Create a copy SharedConfig_Linux.cmake and name it SharedConfig_sunos_sparc.cmake OR SharedConfig_sunos_intel.cmake depends whether you are using SPARC or intel processor.
      3. Make some changes in newly created cmake files
         a. set XMP_PLATFORM_FOLDER to intelsolaris<_x64> or sparcsolaris<_x64> (depending upon 32/64 bit machine. for 64-bit machine add _x64 suffix)
         b. Set XMP_GCC_PATH=<gcc path>
         c. Set XMP_GCC_LIBPATH=<gcc libpath>
    4. Make a copy of ToolchainRelEng.cmake to ToolchainRelEng_sunos_<intel/sparc>.cmake and fix the gcc path's
    Hope this will help you.
    -Sunil

  • XMP Toolkit and MultiThreading

    I've been working on version 4.1.1 of the toolkit and I've stumbled upon what I think is a problem. I use the toolkit as part of a property handler in Vista which is really just a COM object. I keep getting sorta random crashes that are kinda hard to trace down. What I THINK might be causing it is that two threads are running the property handler (and by extension the toolkit dll) and one thread when it ends runs SXMPFiles::Terminate (or SXMPMeta::Terminate) after another thread runs SXMPFiles::Initialize.
    Is that possible for one thread to affect the other like that?
    Eric

    The client code is responsible for making the Initialize and Terminate calls in a thread-safe manner - typically from the main thread before/after all other work. These calls initialize and terminate the OS mutexes - they simply cannot be done from multiple threads. Between Initialize and Terminate, the other calls are all thread safe.

  • XMP Toolkit bugs list/reports/...

    Is there a list of known but not fixed bugs?
    The one is
    MetaXMP::SetStandardAliases(XAP_NS_PDF) fails.

    No, there isn't. Listed in the v2.9 release notes are fixed bugs only.
    See the doc at
    http://partners.adobe.com/asn/developer/xmp/download/docs/XMPReleaseNotes.pdf

  • ~~ New XMP CS6 SDK Releases ~~

    Hi,
    You can now find new versions of our XMP SDKs on Adobe Devnet:
    http://www.adobe.com/devnet/xmp/
    So please check  out the CS6 versions of the SDKs and post your feedback in this forum!
    The prior versions are still listed.
    Updates:
    Updated XMP Specifications [version: April 2012]
    New version of the XMP Toolkit SDK (c++)  [version: CS6]
    Compiler Upgrade: Xcode 4.x, Visual Studio 2010 (VC10)
    A plug-in SDK for XMPFiles that allows you to add custom file handlers, or replace existing file handlers with custom ones in XMPFiles
    A new version of the file handler for RIFF-based formats that also support AIFF. The AVI handler still uses the old code, but WAVE and AIFF are based in the new file handler
    New functions in XMPFiles that allows you to use your own I/O code in XMPFiles
    Support of EXIF 2.3 properties
    A new XMPFiles function, GetFileModDate(), that retrieves the most recent OS file modification date for the associated metadata of a file
    Many bug fixes and minor improvements in XMPFiles
    The XMP FileInfo SDK is now available in version CS6
    Custom Panel Plugin for Flash builder 4.x
    EVE Panel converter (to convert CS 2/3 panels)
    Create generic panel without Action Script (XML only)
    XMPCore Java is now is now available in version CS6 and seperated from the C++ toolkit  (see new Java section)Many bug fixes and minor improvements
    The Adobe XMP Team

    Hi,
    i used the previous version of the java XMPCore. I tried to upgrade however i got the following exception (using java 1.5 and 1.6):
    java.lang.AbstractMethodError: javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z)V
        at com.adobe.xmp.impl.XMPMetaParser.createDocumentBuilderFactory(Unknown Source)
        at com.adobe.xmp.impl.XMPMetaParser.<clinit>(Unknown Source)
        at com.adobe.xmp.XMPMetaFactory.parseFromBuffer(Unknown Source)
        at com.adobe.xmp.XMPMetaFactory.parseFromBuffer(Unknown Source)
    On further investigation the problem is, that you are trying to call a method
    factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
    on an abstract class however you are not catching that error, as you propably intended to.
    The code has been introduced into the new version:
    class XMPMetaParser.java:
    try
                // honor System parsing limits, e.g.
                // System.setProperty("entityExpansionLimit", "10");
                factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
            catch (Exception e)
                // Ignore IllegalArgumentException and ParserConfigurationException
                // in case the configured XML-Parser does not implement the feature.
    The exception is of the type "Error" and thus won't be catched by the "catch (Exception)" block at this point. If you change the following to:
    try
                // honor System parsing limits, e.g.
                // System.setProperty("entityExpansionLimit", "10");
                factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
            catch (Throwable t)
                // Ignore AbstractMethodError, IllegalArgumentException and ParserConfigurationException
                // in case the configured XML-Parser does not implement the feature.
    or to
    try
                // honor System parsing limits, e.g.
                // System.setProperty("entityExpansionLimit", "10");
                factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
            catch(Error e){
                // Ignore AbstractMethodError in case there is no implementation at all
            catch (Exception e)
                // Ignore IllegalArgumentException and ParserConfigurationException
                // in case the configured XML-Parser does not implement the feature.
    Everything is working as aspected again...

  • Using XMP Lib in a plugin for CS5.0 Windows

    Hello
    I have been able to compile the XMP-Toolkit-SDK-5.1.2 and use it successfully in a plugin for CS5.0 Mac OS X.
    Im now trying to do the same on windows, but with no luck. Im using MS Visual C++ 2008 express edition.
    There seems to be a conflict between the XML library and msvcprt.lib library. If I try to exclude the msvcprt.lib library I get only one error.
    If I try to exclude the msvcprt.lib i get the following problem:
    1>PlugInStatics1.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall std::locale::id::id(unsigned int)" (__imp_??0id@locale@std@@QAE@I@Z)
    I get the following linker problems:
    1>XMPCoreStaticRelease.lib(WXMPMeta.obj) : MSIL .netmodule or module compiled with /GL found; restarting link with /LTCG; add /LTCG to the link command line to improve linker performance
    1>msvcprt.lib(MSVCP90.dll) : error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@@Z) already defined in XMPCoreStaticRelease.lib(XMPCore_Impl.obj)
    1>msvcprt.lib(MSVCP90.dll) : error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::~basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(void)" (??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ) already defined in XMPCoreStaticRelease.lib(WXMPMeta.obj)
    1>msvcprt.lib(MSVCP90.dll) : error LNK2005: "public: char const * __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::c_str(void)const " (?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ) already defined in XMPCoreStaticRelease.lib(WXMPMeta.obj)
    1>msvcprt.lib(MSVCP90.dll) : error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(char const *)" (??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z) already defined in XMPCoreStaticRelease.lib(XMPCore_Impl.obj)
    1>msvcprt.lib(MSVCP90.dll) : error LNK2005: "public: unsigned int __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::size(void)const " (?size@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEIXZ) already defined in XMPCoreStaticRelease.lib(WXMPMeta.obj)
    1>msvcprt.lib(MSVCP90.dll) : error LNK2005: "public: void __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::push_back(char)" (?push_back@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXD@Z) already defined in XMPCoreStaticRelease.lib(XMPUtils.obj)
    1>msvcprt.lib(MSVCP90.dll) : error LNK2005: "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > & __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::assign(char const *,unsigned int)" (?assign@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@PBDI@Z) already defined in XMPCoreStaticRelease.lib(XMPCore_Impl.obj)
    1>msvcprt.lib(MSVCP90.dll) : error LNK2005: "public: char const * __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::data(void)const " (?data@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ) already defined in XMPFilesStaticRelease.lib(P2_Handler.obj)
    1>msvcprt.lib(MSVCP90.dll) : error LNK2005: "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > & __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::operator=(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@ABV01@@Z) already defined in XMPCoreStaticRelease.lib(XMPCore_Impl.obj)
    1>msvcprt.lib(MSVCP90.dll) : error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(void)" (??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ) already defined in XMPCoreStaticRelease.lib(WXMPMeta.obj)
    Best Regards
    / Pontus Hulin

    Hi Pontus.
    You're probably mixing static libraries with shared.
    Regards
    Bartek

  • 4.1.1 SDK Problems with missing xpacket tags in sidecar XMP files

    The current 4.1.1 SDK has problems with sidecar XMP files that don't have the xpacket headers and trailers, i.e:
    <?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
    <?xpacket end='w'?>
    is missing. Now, unfortunately Adobe Bridge CS2/CS3 does not export these xpackets in sidecar XMP files.
    The standard, http://www.aiim.org/documents/standards/xmpspecification.pdf, is also very vague about it all:
    ● Write external metadata as though it were embedded and then had the XMP Packets
    extracted and catenated by a postprocessor.
    The grammar is strange(past tense had) and the spec implies that the xpacket should be extracted and again catenated... Someone should review this document and clearly state if xpacket statements should be in sidecar files or not. I suspect myself that they should be there, but the standard is very vague.
    Anyway, there are two places in the SDK code where changes might be needed:
    XMPFiles::Initialize has XMP_Asserts in case the xpacket header/trailer is missing, but the underlying assert is only active in debug builds.
    XMPScanner::PacketMachine::FindNextPacket () also has in its truth table the assumption that the xpackets exist.
    There could be even other places in the code that assumes that the xpacket tags are present in all files, which includes text XMP sidecar files.
    Anyway.
    a) Shouldn't bridge export the xpacket tags? Same with any other application?
    b) If the spec is vague, then the SDK should not assume that the xpacket tags are present.
    Any comments? Has someone already fixed this issue as I suspect a lot of apps using the the XMP SDK would break concerning reading XMP sidecar files? Thx, Kent

    I was able to work around the problem by creating a mapped view of the .xmp file (this creates an array in memory backed by the file on disk, so there's no need to read the file into a separate internal buffer), and constructing the SXMPMeta object directly from the buffer. (The ctor for that class calls ParseFromBuffer, so this is the same thing as was suggested by other messages in this thread.)
    It seems that Adobe needs to do one of these things:
    (1) say that Bridge CS3 has a bug, and agree that Bridge CS3 should include a proper xpacket header when writing xmp sidecar files
    (2) say that the XMP Toolkit has a bug, and that the SDK should be able to parse sidecar files without an xpacket header, and agree to fix the toolkit
    (3) say that Bridge CS3 and the XMP Toolkit behave as expected, but then provide a sequence of steps by which users of the XMP Toolkit are expected to read xmp sidecar files written by Bridge CS3
    Does Bridge CS4 write an xpacket header to the xmp sidecar files?
    Maybe what I could do is create a custom file handler for .xmp sidecar files, so I could use the SXMPFiles for everything, instead of having to special-case .xmp files.
    My needs are pretty modest though, and it might be just as simple to use the MS DOM-based XML parser for load the xmp sidecar file. I bet I could get the data I need (only the "Rating" for now) using a simple XPath expression.
    -Matt

  • Write xmp sidecar files without need to export masters - script

    I've written a script to write xmp sidecar files for referenced and online images (the 2 conditions in the script) of the selected images. I looked for a while at system events and other stuff to be able to write the xmp file, but i'm not a programmer, so in the end i chose the long and dirty way to do it.
    This script will export all iptc expanded fields as aperture does (creating basically the same file). It can be easily adjusted to include other tags, even custom ones. I don't know how to get at the adjustments for images, otherwise those could be included as well.
    If anyone has the energy to clean this up and make it faster, feel free to do so. Next, I'm going to try to write a script to do the opposite, import xmp sidecars for imported online and referenced files.
    Here it goes (thanks to Brett Gross for the database part to find the master filename):
    --script to create sidecar xmp files for referenced files without having to export masters. parts of the script (finding the file name) are by brett gross
    property p_sql : "/usr/bin/sqlite3 "
    global g_libPath
    on run
    my getLibPath()
    --counter for processed images, reset, just in case
    set mastercount to 0
    tell application "Aperture"
    if not (exists selection) then
    display dialog "You have to select at least one image" buttons {"OK"} default button 1
    return
    else
    display dialog "You have selected " & (count of selection) & " images." & return & "Continue?" default button 1
    end if
    set theSel to selection
    --run through the selected images
    repeat with currentpic from 1 to count of theSel
    tell item currentpic of theSel
    -- only apply to referenced and online images
    if referenced and online then
    set mastercount to mastercount + 1
    set curID to id
    --find the master file path and name - this part by brett gross, thanks
    set libPOSIX to POSIX path of g_libPath
    set libDBPOSIX to (libPOSIX & "/Aperture.aplib/Library.apdb") as string
    set theScript to p_sql & (quoted form of libDBPOSIX) & " \"select ZFILEUUID from ZRKVERSION where ZUUID='" & curID & "'\""
    set ZFILEUUID to do shell script theScript
    # ---------- Get the master's path
    set theScript to p_sql & (quoted form of libDBPOSIX) & " \"select ZIMAGEPATH from ZRKFILE where ZUUID='" & ZFILEUUID & "'\""
    set ZIMAGEPATH to do shell script theScript
    # ---------- Get the master's disk name
    set theScript to p_sql & (quoted form of libDBPOSIX) & " \"select ZFILEVOLUMEUUID from ZRKFILE where ZUUID='" & ZFILEUUID & "'\""
    set ZFILEVOLUMEUUID to do shell script theScript
    set theScript to p_sql & (quoted form of libDBPOSIX) & " \"select ZNAME from ZRKVOLUME where ZUUID='" & ZFILEVOLUMEUUID & "'\""
    set diskName to do shell script theScript
    set imgPath to (diskName & "/" & ZIMAGEPATH)
    --end brett gross part
    --strips extension, seems to work for files and paths with more than one period
    set oldlim to AppleScript's text item delimiters
    set AppleScript's text item delimiters to "."
    try --remove last extension only
    set contador to text item -1 of imgPath
    set noExtension to Unicode text 1 thru -((count of contador) + 2) of imgPath
    on error --handle files with no extensions
    set noExtension to imgPath
    end try
    set AppleScript's text item delimiters to oldlim
    --create the file and path name with the .xmp extension for writing
    set xmpPath to "/Volumes/" & noExtension & ".xmp" as Unicode text
    --convert posix path to alias for easier write and read handling
    set xmpPath to POSIX file xmpPath as file specification
    -- header for xmp file
    set xmpheader to ("<?xpacket begin='' id=''?>
    <x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9-9, framework 1.6'>
    <rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>") & return
    -- footer for xmp file
    set xmpfooter to ("</rdf:RDF>
    </x:xmpmeta>
    <?xpacket end='w'?>") & return
    --xmp content, part 1
    --check for existence of iptc tags, create content or empty string depending on existance of tags
    if (exists IPTC tag "Contact") or (exists IPTC tag "Country/PrimaryLocationCode") then
    set xmpcontentpartone to ("<rdf:Description rdf:about='' xmlns:Iptc4xmpCore='http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/'>") & return
    try
    set CountryCode to value of IPTC tag "Country/PrimaryLocationCode"
    set xmpcontentpartone to xmpcontentpartone & tab & "<Iptc4xmpCore:CountryCode>" & CountryCode & "</Iptc4xmpCore:CountryCode>" & return
    end try
    try
    set CreatorContactInfo to value of IPTC tag "Contact"
    set xmpcontentpartone to xmpcontentpartone & tab & "<Iptc4xmpCore:CreatorContactInfo>" & CreatorContactInfo & "</Iptc4xmpCore:CreatorContactInfo>" & return
    end try
    set xmpcontentpartone to xmpcontentpartone & ("</rdf:Description>") & return
    else
    set xmpcontentpartone to ""
    end if
    --xmp content, part 2
    --check for existence of iptc tags, create content or empty string depending on existance of tags
    if (exists IPTC tag "Category") or (exists IPTC tag "City") or (exists IPTC tag "Country/PrimaryLocationName") or (exists IPTC tag "Credit") or (exists IPTC tag "DateCreated") or (exists IPTC tag "Headline") or (exists IPTC tag "Province/State") or (exists IPTC tag "Source") or (exists IPTC tag "SpecialInstructions") or (exists IPTC tag "SupplementalCategory") or (exists IPTC tag "Writer/Editor") then
    set xmpcontentparttwo to ("<rdf:Description rdf:about='' xmlns:photoshop='http://ns.adobe.com/photoshop/1.0/'>") & return
    try
    set Category to value of IPTC tag "Category"
    set xmpcontentparttwo to xmpcontentparttwo & tab & "<photoshop:Category>" & Category & "</photoshop:Category>" & return
    end try
    try
    set City to value of IPTC tag "City"
    set xmpcontentparttwo to xmpcontentparttwo & tab & "<photoshop:City>" & City & "</photoshop:City>" & return
    end try
    try
    set Country to value of IPTC tag "Country/PrimaryLocationName"
    set xmpcontentparttwo to xmpcontentparttwo & tab & "<photoshop:Country>" & Country & "</photoshop:Country>" & return
    end try
    try
    set Credit to value of IPTC tag "Credit"
    set xmpcontentparttwo to xmpcontentparttwo & tab & "<photoshop:Credit>" & Credit & "</photoshop:Credit>" & return
    end try
    try
    set DateCreated to value of IPTC tag "DateCreated"
    set xmpcontentparttwo to xmpcontentparttwo & tab & "<photoshop:DateCreated>" & DateCreated & "</photoshop:DateCreated>" & return
    end try
    try
    set Headline to value of IPTC tag "Headline"
    set xmpcontentparttwo to xmpcontentparttwo & tab & "<photoshop:Headline>" & Headline & "</photoshop:Headline>" & return
    end try
    try
    set State to value of IPTC tag "Province/State"
    set xmpcontentparttwo to xmpcontentparttwo & tab & "<photoshop:State>" & State & "</photoshop:State>" & return
    end try
    try
    set Source to value of IPTC tag "Source"
    set xmpcontentparttwo to xmpcontentparttwo & tab & "<photoshop:Source>" & Source & "</photoshop:Source>" & return
    end try
    try
    set Instructions to value of IPTC tag "SpecialInstructions"
    set xmpcontentparttwo to xmpcontentparttwo & tab & "<photoshop:Instructions>" & Instructions & "</photoshop:Instructions>" & return
    end try
    try
    set SupplementalCategory to value of IPTC tag "SupplementalCategory"
    set xmpcontentparttwo to xmpcontentparttwo & tab & "<photoshop:SupplementalCategory>" & SupplementalCategory & "</photoshop:SupplementalCategory>" & return
    end try
    try
    set CaptionWriter to value of IPTC tag "Writer/Editor"
    set xmpcontentparttwo to xmpcontentparttwo & tab & "<photoshop:CaptionWriter>" & CaptionWriter & "</photoshop:CaptionWriter>" & return
    end try
    set xmpcontentparttwo to xmpcontentparttwo & ("</rdf:Description>") & return
    else
    set xmpcontentparttwo to ""
    end if
    --xmp content, part 3
    --check for existence of iptc tags, create content or empty string depending on existance of tags
    if (exists IPTC tag "Byline") or (exists IPTC tag "Caption/Abstract") or (exists IPTC tag "CopyrightNotice") or (exists IPTC tag "Keywords") or (exists IPTC tag "ObjectName") then
    set xmpcontentpartthree to ("<rdf:Description rdf:about='' xmlns:dc='http://purl.org/dc/elements/1.1/'>") & return
    try
    set creator to value of IPTC tag "Byline"
    set xmpcontentpartthree to xmpcontentpartthree & tab & "<dc:creator><rdf:Seq><rdf:li>" & creator & "</rdf:li></rdf:Seq></dc:creator>" & return
    end try
    try
    set description to value of IPTC tag "Caption/Abstract"
    set xmpcontentpartthree to xmpcontentpartthree & tab & "<dc:description><rdf:Alt><rdf:li xml:lang='x-default'>" & description & "</rdf:li></rdf:Alt></dc:description>" & return
    end try
    try
    set rights to value of IPTC tag "CopyrightNotice"
    set xmpcontentpartthree to xmpcontentpartthree & tab & "<dc:rights><rdf:Alt><rdf:li xml:lang='x-default'>" & rights & "</rdf:li></rdf:Alt></dc:rights>" & return
    end try
    --keywords, slightly different, as they need to be written as a list and not as a string
    --i don't think it's a problem if we create an empty list if there are no keywords present.
    set xmpcontentpartthree to xmpcontentpartthree & tab & "<dc:subject><rdf:Bag>" & return
    --make list item for every keyword
    try
    repeat with n from 1 to count of keywords
    set cursubject to name of (keyword n)
    set xmpcontentpartthree to xmpcontentpartthree & tab & tab & "<rdf:li>" & cursubject & "</rdf:li>" & return
    end repeat
    end try
    set xmpcontentpartthree to xmpcontentpartthree & tab & "</rdf:Bag></dc:subject>" & return
    try
    set title to value of IPTC tag "ObjectName"
    set xmpcontentpartthree to xmpcontentpartthree & tab & "<dc:title><rdf:Alt><rdf:li xml:lang='x-default'>" & title & "</rdf:li></rdf:Alt></dc:title>" & return
    end try
    set xmpcontentpartthree to xmpcontentpartthree & ("</rdf:Description>") & return
    else
    set xmpcontentpartthree to ""
    end if
    --part four. aperture doesn't seem to export anything there
    set xmpcontentpartfour to "<rdf:Description rdf:about='' xmlns:photomechanic='http://ns.camerabits.com/photomechanic/1.0/'>
    </rdf:Description>" & return
    --part five. rating
    set xmpcontentpartfive to "<rdf:Description rdf:about='' xmlns:xap='http://ns.adobe.com/xap/1.0/'>" & return
    try
    set Rating to main rating
    set xmpcontentpartfive to xmpcontentpartfive & tab & "<xap:Rating>" & Rating & "</xap:Rating>" & return
    end try
    set xmpcontentpartfive to xmpcontentpartfive & "</rdf:Description>" & return
    --join everything
    set xmptext to xmpheader & xmpcontentpartone & xmpcontentparttwo & xmpcontentpartthree & xmpcontentpartfour & xmpcontentpartfive & xmpfooter
    --write file
    my writexmpFile(xmptext, xmpPath)
    end if
    end tell
    end repeat
    display dialog "Processed " & mastercount & " referenced and online image(s)." buttons {"OK"} default button 1
    end tell
    end run
    -- write xmp sidecar file routine
    on writexmpFile(theContents, xmpFileName)
    --tell application "Finder"
    try
    open for access xmpFileName with write permission
    set eof of xmpFileName to 0
    write (theContents) to xmpFileName starting at eof
    close access xmpFileName
    on error
    try
    display dialog xmpFileName
    close access xmpFileName
    end try
    end try
    --end tell
    end writexmpFile
    --this part copied from Brett Gross-------------------------------------------------------------------------- --------------------------------
    on getLibPath()
    tell application "System Events" to set p_libPath to value of property list item "LibraryPath" of property list file ((path to preferences as Unicode text) & "com.apple.aperture.plist")
    if ((offset of "~" in p_libPath) is not 0) then
    -- set p_posix to POSIX file p_libPath
    set p_script to "/bin/echo $HOME"
    set p_homePath to (do shell script p_script)
    set p_offset to offset of "~" in p_libPath
    set p_path to text (p_offset + 1) thru -1 of p_libPath
    set g_libPath to p_homePath & p_path
    else
    set g_libPath to p_libPath
    end if
    end getLibPath
    --end brett gross part

    imigra wrote:
    I've written a script to write xmp sidecar files for referenced and online images (the 2 conditions in the script) of the selected images. I looked for a while at system events and other stuff to be able to write the xmp file, but i'm not a programmer, so in the end i chose the long and dirty way to do it.
    This script will export all iptc expanded fields as aperture does (creating basically the same file). It can be easily adjusted to include other tags, even custom ones.
    Excellent stuff!
    I don't know how to get at the adjustments for images, otherwise those could be included as well.
    They are stored as binary data in the Version XML files at the bottom level of the Library package. You can also have a look around in the ZRKIMAGEADJUSTMENT table, but again the actual settings for each adjustment are in binary form.
    If anyone has the energy to clean this up and make it faster, feel free to do so.
    As far as I can remember, Aperture uses the 'proper' IPTC tag names when accessing them via AppleScript, so you may be able to do a loop through all the IPTC tags for each image, rather than picking out each specific one. But that would need checking. The EXIFTools site is a good place to find out about the different ways that IPTC data can be described.
    Next, I'm going to try to write a script to do the opposite, import xmp sidecars for imported online and referenced files.
    Don't rush unless you feel like it - I've already started planning out a free (as in beer and speech) XMP importer with a GUI so that you can choose how to map the XMP CORE tags that don't exist in Aperture. You've given me an extra idea, though - if we can decide on a set of custom tags, my importer could map the XMP CORE tags to them and your exporter could export those tags.
    Thanks for the work!
    Ian
    P.S. I'll check through your script tomorrow, some of the database tables changed between 1.5.6 and 2.0, so you might need to add in a version check to be really thorough.

Maybe you are looking for

  • I am getting this kernel panic frequently.  Does anyone have any idea why?

    Using a MacBook Pro circa 2007, 10.7.5 2.2ghz intel core 2 duo, 4 gigs of ram Interval Since Last Panic Report:  121674 sec Panics Since Last Report:          1 Anonymous UUID:                    289B03BD-5D9C-4198-A2B5-D295A20C9B9B Tue Nov 20 12:26:

  • NI-488.2 no instruments found

    Using PCI-GPIB card with NI-488.2 version 1.6 (or 1.7) and Windows NT 4.0: - If a GPIB instrument is at GPIB address 1 on PCI-GPIB configured as GPIB1, this instrument is not found using N.I. "Scan for instruments" utility. If I change this GPIB inst

  • Does file info in CS6 have spell check?

    Does file info in CS6 have spell check? If so, do I need to enable it?

  • Confused about different calendars

    I have a Macbook Pro, an iPhone 5, and an original iPad. I am confused about the purpose of the different Calendars: Home, Calendar, iCloud, and Calendar([email protected]). Also listings on my iPad "Show Calendars" : From My Mac, cal.me.com, and [em

  • Can't see all albums on iTunes when I sync my iPhone

    Hi. Everytime I launch iPhoto it says photo library has to be repaired and it does it every time. In addition It doesn't sync with my iPhone as iTunes does not see the albums I made on iPhoto and can't share photos. Can anybody  help out please? Many