使用Ghostscript将PDF转换为PDF/X1a时透明度丢失

使用Ghostscript将PDF转换为PDF/X1a时透明度丢失,pdf,pdf-generation,ghostscript,pdftk,Pdf,Pdf Generation,Ghostscript,Pdftk,我们需要将使用ApacheFOP创建并与pdftk合并的PDF转换为PDF/X-1a。我已经创建了一个包含以下内容的PDFX_def.ps: %! % This is a sample prefix file for creating a PDF/X-3 document. % Feel free to modify entries marked with "Customize". % This assumes an ICC profile to reside in the file (ISO

我们需要将使用ApacheFOP创建并与
pdftk
合并的PDF转换为PDF/X-1a。我已经创建了一个包含以下内容的
PDFX_def.ps

%!
% This is a sample prefix file for creating a PDF/X-3 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.
systemdict /ProcessColorModel known {
systemdict /ProcessColorModel get dup /DeviceGray ne exch /DeviceCMYK ne and
} {
true
} ifelse
{ (ERROR: ProcessColorModel must be /DeviceGray or DeviceCMYK.)=
/ProcessColorModel cvx /rangecheck signalerror
} if
% Define entries to the document Info dictionary :
[ /GTS_PDFXVersion (PDF/X-1:2001) % Must be so (the standard requires).
/GTS_PDFXConformance (PDF/X-1a:2001)
/Title (Title) % Customize.
/Trapped /False % Must be so (Ghostscript doesn't provide other).
/DOCINFO pdfmark
% Define an ICC profile :
/ICCProfile (/var/www/share/data/files/sRGB_IEC61966-2-1_black_scaled.icc) def % Customize or remove.
currentdict /ICCProfile known {
[/_objdef {icc_PDFX} /type /stream /OBJ pdfmark
[{icc_PDFX} <</N>> /PUT pdfmark
[{icc_PDFX} ICCProfile (r) file /PUT pdfmark} if
%Define the output intent dictionary :
[/_objdef {OutputIntent_PDFX} /type /dict /OBJ pdfmark
[{OutputIntent_PDFX} <<
/Type /OutputIntent % Must be so (the standard requires).
/S /GTS_PDFX % Must be so (the standard requires).
/OutputCondition (Commercial and specialty printing) % Customize
/Info (none) % Customize
/OutputConditionIdentifier (CGATS TR001) % Customize
/RegistryName (http://www.color.org) % Must be so (the standard requires).
currentdict /ICCProfile known {
/DestOutputProfile {icc_PDFX} % Must be so (see above).
} if
>> /PUT pdfmark
[{Catalog} <</OutputIntents [ {OutputIntent_PDFX} ]>> /PUT pdfmark
我使用的是Ghostscript 9.05,以下是原始和生成的PDF的链接:


正如您在PDF文件上看到的,图像周围的透明度丢失。你知道怎么修吗?或者使用Debian从原始文件创建PDF/X1a文件的更好方法?

您无法使用Ghostscript可靠地创建PDF/X1-a PDF文件。PDF/X-1a格式限制颜色空间的方式,旧版本的
pdfwrite
设备无法支持,而新版本则不支持

PDF/X1-a不支持透明度,因此无论如何都无法生成具有透明度的PDF/X-1a文件,如果您使用Ghostscript尝试此操作,它只会创建一个包含大型位图图像的PDF文件

您还应该使用较新版本的Ghostscript,尽管这不允许您创建PDF/X1-a文件。在上面引用的URL中,除了“原始”之外,我什么都看不到,所以我不能说输出文件是否有问题


注意:正如我不断告诉人们的那样,当您使用pdfwrite时,您并不是在“转换”输入PDF文件,而是在基于原始PDF文件中存在的标记运算符创建一个全新的PDF文件。但是,实际的新页面描述不一定与原始页面描述有任何关系。

您无法使用Ghostscript可靠地创建PDF/X1-a PDF文件。PDF/X-1a格式限制颜色空间的方式,旧版本的
pdfwrite
设备无法支持,而新版本则不支持

PDF/X1-a不支持透明度,因此无论如何都无法生成具有透明度的PDF/X-1a文件,如果您使用Ghostscript尝试此操作,它只会创建一个包含大型位图图像的PDF文件

您还应该使用较新版本的Ghostscript,尽管这不允许您创建PDF/X1-a文件。在上面引用的URL中,除了“原始”之外,我什么都看不到,所以我不能说输出文件是否有问题


注意:正如我不断告诉人们的那样,当您使用pdfwrite时,您并不是在“转换”输入PDF文件,而是在基于原始PDF文件中存在的标记运算符创建一个全新的PDF文件。但是,实际的新页面描述不一定与原始页面描述有任何关系。

更好的问题标题是“转换时图像的透明度丢失…”更好的问题标题是“转换时图像的透明度丢失…”两个问题:1)您知道基于cli的其他方法吗?2) 我如何转换为PDF/X3(gs应该可以转换为PDF/X3)?因此我需要一个def.ps文件。pdfx_def.ps文件将生成一个有效的PDF/X3文件(我刚刚与Acrobat飞行前检查过)。然而,第一页的颜色有点奇怪(尽管当前代码的透明度是正确的)。据我所知,唯一能从通用PDF文件创建PDF/X文件的工具是Acrobat。请注意,由于PDF/X3也不支持透明度,因此您仍然会看到第1页是一个大位图图像。但是如果有两个向量相互重叠(特别是上面有一个字体),会发生什么呢?光栅化了吗?任何具有透明度的页面都会呈现为图像。两个问题:1)您知道基于cli的其他方式吗?2) 我如何转换为PDF/X3(gs应该可以转换为PDF/X3)?因此我需要一个def.ps文件。pdfx_def.ps文件将生成一个有效的PDF/X3文件(我刚刚与Acrobat飞行前检查过)。然而,第一页的颜色有点奇怪(尽管当前代码的透明度是正确的)。据我所知,唯一能从通用PDF文件创建PDF/X文件的工具是Acrobat。请注意,由于PDF/X3也不支持透明度,因此您仍然会看到第1页是一个大位图图像。但是如果有两个向量相互重叠(特别是上面有一个字体),会发生什么呢?光栅化了吗?任何具有透明度的页面都会渲染为图像。
gs -dPDFX -dBATCH -dNOPAUSE -dNOOUTERSAVE -dUseCIEColor \
   -sProcessColorModel=DeviceCMYK -sDEVICE=pdfwrite \
   -sOutputFile=output-x1a.pdf PDFX_def.ps output.pdf