Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未正确保存ABCpdf中的渲染选项_Pdf_Abcpdf_Cmyk - Fatal编程技术网

未正确保存ABCpdf中的渲染选项

未正确保存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 {

我在这个网站上看到了一些关于ABCpdf的问题,但这一个还没有。我正在做一个项目,需要一些相当具体的选项PDF输出。ABCpdf似乎能够通过他们的API提供这一点,但文档很混乱和/或不完整

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