2017-05-22 3 views
0

Je crée un fichier PDF à partir d'une image TIFF en utilisant ImageMagick et Ghostscript. Ma source tiff est 16 bits par canal sans alpha (image 48 bits) avec un profil ICC attaché (AdobeRGB) et je veux le maintenir dans le PDF final.Ghostscript et ImageMagick convertissent une image TIFF 16 bits par canal (48 bits) en PDF ou PDF/A

convert input.tif[0] -density 600 -alpha Off -size 5809x9408 -depth 16 intermediate.ps 

Cela prend mon image tiff d'entrée (juste l'image principale, et non la vignette via l'utilisation [0]) et crée un fichier .ps du bitmap. Quand je regarde la taille du fichier PostScript, c'est à peu près la même taille (3-4 Mo de plus que le tiff 328 Mo) que le TIFF source, mais je ne peux pas dire si les données de l'image dans le. est de 8 ou 16 bits par canal. Ensuite, lorsque j'utilise GhostScript pour convertir ce fichier en format PDF, je reçois 8 bits par canal dans le fichier .pdf. Si j'utilise pdfimages pour inspecter le fichier PDF, il me montre 8 bits par canal.

pdfimages -list output.pdf 

page num type width height color comp bpc enc interp object ID x-ppi y-ppi size ratio 
-------------------------------------------------------------------------------------------- 
    1  0 image 5809 9408 rgb  3 8 image no  10 0 600 600 74.1M 47% 

Le contenu de mes PDFA_def.ps a été modifié par la valeur par défaut Ghostscript installer pour spécifier AdobeRGB (1998) comme le profil de couleur:

%! 
% This is a sample prefix file for creating a PDF/A document. 
% Feel free to modify entries marked with "Customize". 
% This assumes an ICC profile to reside in the file (ISO Coated sb.icc), 
% unless the user modifies the corresponding line below. 

% Define entries in the document Info dictionary : 
/ICCProfile (AdobeRGB1998.icc) % Customise 
def 

[ /Title (Title)  % Customise 
    /DOCINFO pdfmark 

% Define an ICC profile : 

[/_objdef {icc_PDFA} /type /stream /OBJ pdfmark 
[{icc_PDFA} 
<< 
    /N currentpagedevice /ProcessColorModel known { 
    currentpagedevice /ProcessColorModel get dup /DeviceGray eq 
    {pop 1} { 
     /DeviceRGB eq 
     {3}{4} ifelse 
    } ifelse 
    } { 
    (ERROR, unable to determine ProcessColorModel) == flush 
    } ifelse 
>> /PUT pdfmark 
[{icc_PDFA} ICCProfile (r) file /PUT pdfmark 

% Define the output intent dictionary : 

[/_objdef {OutputIntent_PDFA} /type /dict /OBJ pdfmark 
[{OutputIntent_PDFA} << 
    /Type /OutputIntent    % Must be so (the standard requires). 
    /S /GTS_PDFA1     % Must be so (the standard requires). 
    /DestOutputProfile {icc_PDFA}   % Must be so (see above). 
    /OutputConditionIdentifier (sRGB)  % Customize 
>> /PUT pdfmark 
[{Catalog} <</OutputIntents [ {OutputIntent_PDFA} ]>> /PUT pdfmark 

J'ai aussi un fichier custom.joboptions que j'ai créé dans Acrobat Distiller et que j'ai ensuite modifié pour la conformité PDF/A - J'ai également essayé de forcer des images 16 bits dans ce fichier, mais je reçois toujours des images 8 bits dans le PDF.

Je ne sais pas combien de ces options Ghostscript respecte et combien il ignore cependant. Si je n'utilise pas ce fichier custom.joboptions lors de la création du PDF, les images sont sous-échantillonnées à une résolution très faible.

<< 
    /ASCII85EncodePages false 
    /AllowTransparency false 
    /AutoPositionEPSFiles true 
    /AutoRotatePages /All 
    /Binding /Left 
    /CalGrayProfile (Dot Gain 20%) 
    /CalRGBProfile (sRGB IEC61966-2.1) 
    /CalCMYKProfile (U.S. Web Coated \050SWOP\051 v2) 
    /sRGBProfile (sRGB IEC61966-2.1) 
    /CannotEmbedFontPolicy /Error 
    /CompatibilityLevel 1.4 
    /CompressObjects /Off 
    /CompressPages true 
    /ConvertImagesToIndexed true 
    /PassThroughJPEGImages true 
    /CreateJobTicket false 
    /DefaultRenderingIntent /Default 
    /DetectBlends true 
    /DetectCurves 0.0000 
    /ColorConversionStrategy /LeaveColorUnchanged 
    /DoThumbnails false 
    /EmbedAllFonts true 
    /EmbedOpenType false 
    /ParseICCProfilesInComments true 
    /EmbedJobOptions false 
    /DSCReportingLevel 0 
    /EmitDSCWarnings false 
    /EndPage -1 
    /ImageMemory 1048576 
    /LockDistillerParams true 
    /MaxSubsetPct 100 
    /Optimize false 
    /OPM 1 
    /ParseDSCComments true 
    /ParseDSCCommentsForDocInfo true 
    /PreserveCopyPage true 
    /PreserveDICMYKValues true 
    /PreserveEPSInfo true 
    /PreserveFlatness true 
    /PreserveHalftoneInfo false 
    /PreserveOPIComments false 
    /PreserveOverprintSettings false 
    /StartPage 1 
    /SubsetFonts false 
    /TransferFunctionInfo /Apply 
    /UCRandBGInfo /Remove 
    /UsePrologue false 
    /ColorSettingsFile (None) 
    /AlwaysEmbed [ true 
    ] 
    /NeverEmbed [ true 
    ] 
    /AntiAliasColorImages false 
    /CropColorImages true 
    /ColorImageMinResolution 600 
    /ColorImageMinResolutionPolicy /OK 
    /DownsampleColorImages false 
    /ColorImageDownsampleType /Average 
    /ColorImageResolution 600 
    /ColorImageDepth -1 
    /ColorImageMinDownsampleDepth 16 
    /ColorImageDownsampleThreshold 1.50000 
    /EncodeColorImages true 
    /ColorImageFilter /FlateEncode 
    /AutoFilterColorImages false 
    /ColorImageAutoFilterStrategy /JPEG 
    /ColorACSImageDict << 
    /QFactor 0.15 
    /HSamples [1 1 1 1] /VSamples [1 1 1 1] 
    >> 
    /ColorImageDict << 
    /QFactor 0.15 
    /HSamples [1 1 1 1] /VSamples [1 1 1 1] 
    >> 
    /JPEG2000ColorACSImageDict << 
    /TileWidth 256 
    /TileHeight 256 
    /Quality 30 
    >> 
    /JPEG2000ColorImageDict << 
    /TileWidth 256 
    /TileHeight 256 
    /Quality 30 
    >> 
    /AntiAliasGrayImages false 
    /CropGrayImages true 
    /GrayImageMinResolution 300 
    /GrayImageMinResolutionPolicy /OK 
    /DownsampleGrayImages false 
    /GrayImageDownsampleType /Average 
    /GrayImageResolution 600 
    /GrayImageDepth -1 
    /GrayImageMinDownsampleDepth 2 
    /GrayImageDownsampleThreshold 1.50000 
    /EncodeGrayImages true 
    /GrayImageFilter /FlateEncode 
    /AutoFilterGrayImages false 
    /GrayImageAutoFilterStrategy /JPEG 
    /GrayACSImageDict << 
    /QFactor 0.15 
    /HSamples [1 1 1 1] /VSamples [1 1 1 1] 
    >> 
    /GrayImageDict << 
    /QFactor 0.15 
    /HSamples [1 1 1 1] /VSamples [1 1 1 1] 
    >> 
    /JPEG2000GrayACSImageDict << 
    /TileWidth 256 
    /TileHeight 256 
    /Quality 30 
    >> 
    /JPEG2000GrayImageDict << 
    /TileWidth 256 
    /TileHeight 256 
    /Quality 30 
    >> 
    /AntiAliasMonoImages false 
    /CropMonoImages true 
    /MonoImageMinResolution 1200 
    /MonoImageMinResolutionPolicy /OK 
    /DownsampleMonoImages false 
    /MonoImageDownsampleType /Average 
    /MonoImageResolution 2400 
    /MonoImageDepth -1 
    /MonoImageDownsampleThreshold 1.50000 
    /EncodeMonoImages true 
    /MonoImageFilter /CCITTFaxEncode 
    /MonoImageDict << 
    /K -1 
    >> 
    /AllowPSXObjects false 
    /CheckCompliance [ 
    /PDFA1B:2005 
    ] 
    /PDFX1aCheck false 
    /PDFX3Check false 
    /PDFXCompliantPDFOnly true 
    /PDFXNoTrimBoxError false 
    /PDFXTrimBoxToMediaBoxOffset [ 
    0.00000 
    0.00000 
    0.00000 
    0.00000 
    ] 
    /PDFXSetBleedBoxToMediaBox true 
    /PDFXBleedBoxToTrimBoxOffset [ 
    0.00000 
    0.00000 
    0.00000 
    0.00000 
    ] 
    /PDFXOutputIntentProfile (Adobe RGB \0501998\051) 
    /PDFXOutputConditionIdentifier() 
    /PDFXOutputCondition() 
    /PDFXRegistryName() 
    /PDFXTrapped /False 

    /CreateJDFFile false 
>> setdistillerparams 
<< 
    /HWResolution [600 600] 
    /PageSize [697.080 1128.960] 
>> setpagedevice 

Répondre

0

PostScript ne gère pas les 16 bits par composante, il traite seulement 1, 2, 4, 8 et 12.

PDF ne prend pas en 12 BPC, seulement 1, 2, 4, 8 et 16.

Il n'y a donc aucun moyen d'obtenir un fichier PDF avec plus de 12 BPC si vous utilisez PostScript comme format intermédiaire. Même si le fichier PDF dit son 16 CPB les données réelles seront limitées à 12 (original 16bpc -> 12 CPB PostScript -> 16 PDF CPB)

maintenant plus de cela, vous dites que vous créez un fichier PDF/Un fichier, et son PDF/A-1. Si vous lisez la spécification PDF/A-1, vous verrez qu'elle est limitée à PDF 1.4, en vérifiant le PDF Reference Manual, nous trouvons que 16 images BPC ont été introduites en PDF 1.5

Donc même si pdfwrite était capable d'upscaler le 12 image BPC à une image 16 BPC (avec remplissage), il n'est pas autorisé à le faire si vous souhaitez créer un fichier PDF/A-1, car cela n'est pas autorisé par la spécification. Donc, je crains que vous ne pouvez pas faire ce que vous voulez, vous ne pouvez pas créer un fichier PDF/A-1 légal avec 16 images BPC en utilisant un outil. En ce qui concerne le sous-échantillonnage, la valeur par défaut pour le sous-échantillonnage de l'image couleur est 'false', donc si vous ne l'activez pas (DownsampleColorImages = true) alors le périphérique pdfwrite ne va pas sous-échantillonner les images.

+0

Merci pour cette information, ce qui est très utile. Connaissez-vous une meilleure façon de passer d'un seul fichier TIFF 16 bits par canal à un PDF qu'à PostScript avec ImageMagick et Ghostscript? –

+0

Vous auriez besoin d'une application d'image directement compatible PDF. Adobe Photoshop vient à l'esprit mais je ne peux pas en être certain car ma copie est plutôt âgée ... Je crains de ne pas connaître d'outil open-source qui puisse le faire, désolé. – KenS