未正确保存ABCpdf中的渲染选项
我在这个网站上看到了一些关于ABCpdf的问题,但这一个还没有。我正在做一个项目,需要一些相当具体的选项PDF输出。ABCpdf似乎能够通过他们的API提供这一点,但文档很混乱和/或不完整未正确保存ABCpdf中的渲染选项,pdf,abcpdf,cmyk,Pdf,Abcpdf,Cmyk,我在这个网站上看到了一些关于ABCpdf的问题,但这一个还没有。我正在做一个项目,需要一些相当具体的选项PDF输出。ABCpdf似乎能够通过他们的API提供这一点,但文档很混乱和/或不完整 using (var xpsStream = (MemoryStream)xps.Write(doc)) { xpsStream.Position = 0; pdfDoc.Clear(); pdfDoc.Read(xpsStream, new XReadOptions {
using (var xpsStream = (MemoryStream)xps.Write(doc))
{
xpsStream.Position = 0;
pdfDoc.Clear();
pdfDoc.Read(xpsStream, new XReadOptions
{
FileExtension = "xps"
});
pdfDoc.Rendering.DotsPerInch = 72;
pdfDoc.Rendering.ColorSpace = XRendering.ColorSpaceType.Cmyk;
pdfDoc.Rendering.IccCmyk = "device";
pdfDoc.Save(stream);
}
这将渲染一个未遇到“设置渲染属性”的PDF。文档中确实指出,为了保存渲染属性,必须通过XRendering类中的save()方法保存这些属性。所以我必须做一些类似的事情:
pdfDoc.Rendering.DotsPerInch = 72;
pdfDoc.Rendering.ColorSpace = XRendering.ColorSpaceType.Cmyk;
pdfDoc.Rendering.IccCmyk = "device";
pdfDoc.Rendering.Save("blah", stream); // they want a "name" argument
他们文档中的name参数被描述为“用于确定所需图像类型的虚拟文件名”。后来他们说“可能使用的文件扩展名是.TIF、.TIFF、.JPG、.GIF、.PNG、.BMP、.JP2、.EMF、.PS和.EPS。”
在后一个版本的代码运行之后,我确实得到了输出,但它不是PDF,它是TIF、JPG或我从列表中选择的任何内容。如果我说'mom.pdf',它会抛出一个错误。这很糟糕,因为这是他们开始描述XRendering中的Save()方法的方式,即“使用此方法渲染PDF”。这里有两种不同的东西 1) 以PDF、XPS或其他类似文档格式保存文档的Doc.Save方法 2) Doc.Rendering.Save,用于将当前页面的当前部分呈现为TIFF或JPEG等图像格式 文档呈现属性用于控制呈现。不保存文档 要控制保存文档,请使用Doc.SaveOptions 你不能把两者混为一谈 所以 在我看来,从您的代码来看,您试图做的是导入XPS文档并将其转换为CMYK 方法是在使用Doc.save保存文档之前更改文档的颜色空间 要更改PDF的颜色空间,需要使用RecolOperation类。这将允许您将文档的颜色空间更改为RGB、CMYK、灰度、ICC/ICM或您喜欢的任何颜色 如果我错了,那么您可能希望CMYK输出为TIFF、JPEG、JPEG 2000、PSD或类似格式。为此,您需要使用doc.Rendering选项来控制颜色空间和位深度(每个组件8位或16位),然后调用doc.Rendering.Save