Just to summarise (for the benefit of archives and posterity), the following is
/almost/ sufficient to achieve PDF/X-1A:2003 compliance using plain XeTeX.
Full compliance can be achieved using Adobe Acrobat.
> \newif \ifpdfxa
> \pdfxatrue
>
> \ifpdfxa
> \special {pdf: put @thispage << /ArtBox [0 0 498.89641 708.65968] >>}
> \special {pdf: put @thispage << /BleedBox [0 0 498.89641 708.65968] >>}
> \special {pdf: put @thispage << /CropBox [0 0 498.89641 708.65968] >>}
> \special {pdf: put @thispage << /MediaBox [0 0 498.89641 708.65968] >>}
> \special {pdf: put @thispage << /TrimBox [0 0 498.89641 708.65968] >>}
> \special {pdf: docinfo << /GTS_PDFXVersion (PDF/X-1:2001)
> /GTS_PDFXConformance (PDF/X-1a:2001) >>}
> \special {pdf: put @catalog << /PageMode /UseNone /OutputIntents [ <<
> /Info (none) /Type /OutputIntent /S /GTS_PDFX /OutputConditionIdentifier
> (Custom) /RegistryName (http://www.color.org/) >> ] >>}
> \special {pdf: dest (page.1) [@thispage /XYZ @xpos @ypos null]}
> \special {pdf: docinfo << /Title(Document Title)/Subject(Some
> subject)/Creator(XeTeX)/ModDate(D:yyyymmddhhmmss)/Author(Your
> Name)/Producer(XeTeX version)/Keywords(Whatever)/Trapped/False >>}
> \fi
The caveats are as follows :
1. a hook will need to be inserted into \shipout to insert the bounding boxes
on each page;
2. the colours will need to be converted to the desired output profile using
Adobe Acrobat;
3. the file will need to be reduced in size with Acrobat 4+ compatibility but
with no image compression in order to convert it to PDF 1.3;
4. the dimensions of the bounding boxes are for B5 in so-called "big points"
(Postscript points) and will need to be amended for other page sizes;
5. \setboundingboxes will have to be called explicitly for the first page only.
\shipout can be hooked as follows :
\def \setboundingboxes
{%
\special {pdf: put @thispage << /ArtBox [0 0 498.89641 708.65968]
>>}%
\special {pdf: put @thispage << /BleedBox [0 0 498.89641
708.65968] >>}%
\special {pdf: put @thispage << /CropBox [0 0 498.89641 708.65968]
>>}%
\special {pdf: put @thispage << /MediaBox [0 0 498.89641
708.65968] >>}%
\special {pdf: put @thispage << /TrimBox [0 0 498.89641 708.65968]
>>}%
}
\newcount \maxpage
\maxpage = <whatever>
\let \Shipout = \shipout
\def \shipout {\ifnum \pageno < \maxpage \setboundingboxes \fi \Shipout}
--
Philip Taylor
--------------------------------------------------
Subscriptions, Archive, and List information, etc.:
http://tug.org/mailman/listinfo/xetex