为有中文需求的客户提供多渠道中文技术支持.

Tue Nov 01, 2022 5:00 pm

你好,请问如何将pdf的文档颜色模式由rgb模式转成cmyk模式,另外如何修改pdf文件中文字与图片的cmyk值。

Jeff.Bai
 
Posts: 1
Joined: Fri Oct 07, 2022 11:12 am

Wed Nov 02, 2022 6:59 am

您好,

感谢您的留言。
对于将pdf的文档颜色模式由rgb模式转成cmyk模式这个功能,目前我们产品暂不支持,不过,我已将此作为一个新功能记录到我们产品更新系统中了,其编号为为SPIREPDF-5589,我们的开发团队在后续会实现这个功能,一旦该功能被实现,我会立即通知您。

另外,对于修改pdf文件中的文字的cmyk值,我们产品无法直接实现,但可以这样实现:您先找到需要修改cmyk的的文本,然后绘制一个白色矩形覆盖它,然后用cmyk颜色绘制在相应位置上。我把相关参考代码放在下面。

最后,对于修改图片的cmyk值,我们产品是不支持的。
如果您还有任何问题,欢迎随时联系。

java代码:
Code: Select all
 String input = "data/input.pdf";
        PdfDocument doc = new PdfDocument();
        // 加载pdf文档
        doc.loadFromFile(input);
        // 获取pdf文档第一页
        PdfPageBase page = doc.getPages().get(0);
        // 需要修改cmyk值的文本
        String text = "Spire.PDF for .NET";
        // 在pdf文档中以忽略文本大小写的方式查找文本
        PdfTextFindCollection collection = page.findText(text, false);
        // 创造一个cmyk的的brush
        PdfBrush brush = new PdfSolidBrush(new PdfRGBColor(0.95f, 0.65f, 0.40f, 0.30f));
        //  定义一个字体
        PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", Font.PLAIN, 12));
        for (Object findObj : collection.getFinds()) {
            PdfTextFind find = (PdfTextFind) findObj;

            Rectangle2D.Float rec = (Rectangle2D.Float) find.getTextBounds().get(0);
            page.getCanvas().drawRectangle(PdfBrushes.getWhite(), rec);
            Dimension2D dimension2D = font.measureString(text);
            Rectangle2D.Double actualRec = new Rectangle2D.Double(rec.getX(), rec.getY(), dimension2D.getWidth(), dimension2D.getHeight());
            //绘制文本
            page.getCanvas().drawString(text, font, brush, actualRec);
        }
        String result = "output/result111.pdf";
        //保存文档
        doc.saveToFile(result, FileFormat.PDF);

.Net代码:
Code: Select all
String input = @"..\..\data\input.pdf";
            PdfDocument doc = new PdfDocument();

            // 加载文档
            doc.LoadFromFile(input);

            // 定义一个字体
            PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 12f, FontStyle.Regular));                     
                string text = "Spire.PDF";
                PdfPageBase page = doc.Pages[0];
                PdfTextFinder finder = new PdfTextFinder(page);
                finder.Options.Parameter = TextFindParameter.Regex;
                // 查找需要修改cmyk值的文本
                List<PdfTextFragment> collection = finder.Find(text);

                //遍历查找到的文本
                foreach (PdfTextFragment find in collection)
                {
                    RectangleF rec = find.Bounds[0];
                    page.Canvas.DrawRectangle(PdfBrushes.White, rec);
                    // 创造一个cmyk的的brush
                    PdfBrush brush = new PdfSolidBrush(new PdfRGBColor(0.95f, 0.65f, 0.40f, 0.30f));
                    PdfStringFormat centerAlign = new PdfStringFormat(PdfTextAlignment.Center, PdfVerticalAlignment.Middle);
                    page.Canvas.DrawString(text, font, brush, rec, centerAlign);
                }
       
            String result = @"../../output/output.pdf";

            //保存文档
            doc.SaveToFile(result);


Sincerely
Abel
E-iceblue support team
User avatar

Abel.He
 
Posts: 1010
Joined: Tue Mar 08, 2022 2:02 am

Return to 中文技术支持