去除Visual Paradigm输出图片中的浮水印

简介: BoUML都收费了,argoUML半年没更新了,而startUML六年多没更新了,免费的UML工具里就数VP的社区版还不错了。唯一的缺憾就是输出图片有浮水印,虽说咱们也四处宣传VP,但输出的图片实在不方便。

BoUML都收费了,argoUML半年没更新了,而startUML六年多没更新了,免费的UML工具里就数VP的社区版还不错了。唯一的缺憾就是输出图片有浮水印,虽说咱们也四处宣传VP,但输出的图片实在不方便。VP 9已经将浮水印贴满整个背景,影响导出图片的可读性。

 

不过,SVG导出功能还在!(这是我唯一还在坚持VP的理由!) 我写了一段脚本,帮助去除VP输出SVG图片中的浮水印,并转成PNG。这个PNG转换的功能依赖于Inkscape,没有的话去SourceForge.net下吧。 注意安装后要把Inkscape的安装路径放在PATH中去。

Inkscape支持命令行,如下:

  inkscape -f srcSVGFile -e tgtPNGFile -d 150  (d后面的dpi值,150基本可以适用于放到PPT讲解用了. 其它参数用--help就可以看了)

 

脚本也简单,就是把SVG文件的某个特定的浮水印字符去除,然后呼叫inkscape转换下就可以了。支持单个文件转换或者一个目录下所有文件转换,还算方便吧。

#!/usr/bin/python
# coding: utf-8
#/*!
#@brief Description
#  A simple utility to remove watermark for SVG files exported by VP 9.0 ~ VP 12.x
#*/
import os,sys,string,datetime,copy,re

srcSVGString = ["Visual Paradigm for UML Enterprise Edition [evaluation copy]",
	"Visual Paradigm for UML Community Edition [not for commercial use]",
	"Visual Paradigm for UML Modeler Edition [evaluation copy]"]
pathInkSpace = "/Applications/Inkscape.app/Contents/Resources/bin/inkscape"
	
def replaceStringInNewFile(srcFile):
	file=open(srcFile, "r") 
	if None==file:
		print "Could not open for %s updating" %srcFile
		return -1
	
	allLines=file.readlines()
	file.close()
	index = 0
	
	
	for eachLine in allLines:
		
		for srcString in srcSVGString:
			if 0<=string.find(eachLine,srcString):
				allLines[index] = eachLine.replace(srcString,' ')
				break
		
		index = index+1
		
		
	file = open(srcFile,"w")
	file.writelines(allLines)
	file.close()
	
	return 0

def convertSVGToPNG(filename):
		fileStr, extStr = os.path.splitext(filename)
		if 0 == replaceStringInNewFile(filename):
			convertCmd=pathInkSpace+" -f\""+filename+"\" -e \""+fileStr+".png\" -d 150";
			return os.system(convertCmd)	
		else:
			return -1
			
			
def convertAllSVNInFolder(srcFolder):
	if not os.path.isdir( srcFolder ):
		return -1
	
	paths = os.listdir( srcFolder )
	for path in paths:
		filePath = os.path.join( srcFolder, path )
		if filePath[-4:].lower() == ".svg":
			convertSVGToPNG(filePath)
	
	return 0
	
# Main entry		
if __name__ =="__main__":
	print 'Please ensure the Inkscape has been installed,'
	print ' and put the installed folder in the PATH!' 
	
	if len(sys.argv) < 2:
		print '\tUsage: '
		print '\t python svgconvert.py sourceSVGFile or'
		print '\t python svgconvert.py svnFolder'
		print ' '
	elif os.path.isdir(sys.argv[1]):
		convertAllSVNInFolder(sys.argv[1])
	else:
		convertSVGToPNG(sys.argv[1])
	
	print '\nFinished! Enjoy the conversation result! '
	print 'If you have any comment, pls mail to'
	print '\t horky.chen@gmail.com'
	print ''


目录
相关文章
|
Java API 网络架构
关于 Spring Integration 你知道多少,包含集成MQTT案例讲述及源码3
关于 Spring Integration 你知道多少,包含集成MQTT案例讲述及源码
2773 0
关于 Spring Integration 你知道多少,包含集成MQTT案例讲述及源码3
|
前端开发 测试技术 API
DDD领域驱动设计实战-分层架构及代码目录结构(上)
DDD领域驱动设计实战-分层架构及代码目录结构
2210 0
DDD领域驱动设计实战-分层架构及代码目录结构(上)
|
编译器
overleaf 参考文献引用,创建引用目录.bib文件,在文档中引用参考文献,生成参考文献列表
overleaf 参考文献引用,创建引用目录.bib文件,在文档中引用参考文献,生成参考文献列表
12232 0
|
2月前
|
人工智能 开发工具 iOS开发
三步配置 narrator-ai-cli,让 AI自动生成电影解说视频
这是一款专为影视解说打造的AI自动化工具,支持WorkBuddy、小龙虾等主流AI助手。只需一句“帮我做《飞驰人生》解说”,即可全自动完成素材搜索、风格匹配、文案生成、配音剪辑全流程,零门槛10分钟出片。(239字)
三步配置 narrator-ai-cli,让 AI自动生成电影解说视频
|
人工智能 关系型数据库 分布式数据库
PolarDB支撑悠悠有品多地域业务,实现库存毫秒级智能检索
悠悠有品作为国内最大CS:GO饰品交易平台,面临亿级数据毫秒检索、多地域强一致、智能排序等挑战。依托 PolarDB MySQL 版,集成PolarSearch(一体化搜索)、GDN(全球数据库网络)和 PolarDB for AI,实现存储-检索-推荐全链路升级,大幅提升转化率与系统弹性。
|
机器学习/深度学习 存储 API
DeepSeek强化学习(Reinforcement Learning)基础与实践
强化学习(RL)是机器学习的重要分支,专注于训练智能体在环境中通过试错学习最优策略。DeepSeek提供了强大的工具和API,帮助高效构建和训练RL模型。本文将详细介绍使用DeepSeek进行强化学习的基础与实践,涵盖环境构建、智能体定义、Q学习及DQN训练等内容,并提供代码示例,助你掌握这些技巧。
|
存储 固态存储 数据安全/隐私保护
电脑卡顿频繁蓝屏?一键检测硬盘状态的方法来了
日常使用电脑时,你是否遇到过这些情况:开机速度变慢、软件反应迟钝、频繁死机或蓝屏?如果你尝试重装系统、清理内存都无济于事,那很有可能是——硬盘出问题了!
|
存储 安全 Java
Java 集合框架详解:系统化分析与高级应用
本文深入解析Java集合框架,涵盖List、Set、Map等核心接口及其常见实现类,如ArrayList、HashSet、HashMap等。通过对比不同集合类型的特性与应用场景,帮助开发者选择最优方案。同时介绍Iterator迭代机制、Collections工具类及Stream API等高级功能,提升代码效率与可维护性。适合初学者与进阶开发者系统学习与实践。
451 0
|
Rust 安全 Java
Java Stream 使用指南
本文介绍了Java中Stream流的使用方法,包括如何创建Stream流、中间操作(如map、filter、sorted等)和终结操作(如collect、forEach等)。此外,还讲解了并行流的概念及其可能带来的线程安全问题,并给出了示例代码。
974 0
|
数据采集 机器学习/深度学习 搜索推荐
Python爬虫技术基础与应用场景详解
本文介绍了爬虫技术的基本概念、原理及应用场景,包括数据收集、价格监测、竞品分析和搜索引擎优化等。通过一个实战案例展示了如何使用Python爬取电商网站的商品信息。强调了在使用爬虫技术时需遵守法律法规和道德规范,确保数据抓取的合法性和合规性。