您好,
感谢您的留言。
对于将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