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

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 ''
时间: 2024-09-21 03:56:55

去除Visual Paradigm输出图片中的浮水印的相关文章

TinySpider实战之-Visual Paradigm教学相关文档下载

Visual Paradigm是一个非常棒的UML绘图工具,需要对它了解的,可以直接看官网,在此不做更多介绍,最近要使用它来做一些设计,它有非常完备的在线教学,写得非常不错.这个时候问题来了,这些教学非常多,而且如果所有人都访问外网的话及学习效率都比较低.通过观察,发现里面的所有文章都有PDF可以下载,而且里面的示例也可以下载,呵呵,这就好办了,做个程序把它抓下来不就解决了?于是把此问题交给HulkZ同学去干了,HulkZ同学花了半天时间交工,我看了下,发现虽然局部有优化的地方,但是总体还是可以

Visual paradigm中的需求管理功能

需求的产生可能来自一些文件的描述,也可能是通过访谈或者观察等方式取得(Karl E. Wiegers的<<软件需求>>).Visual Paradigm提供一些工具来对需求进行分析.   第一,从某个文件中产生需求或以文档形式记录需求. 如果有一个文档,对系统需求进行简单的描述.可以将其重要的文字部导入进行分析,这就是Textual Analysis. 导入文字后,使用Highlight工具,选中可能是产生需求的文字,在下方,程序会列出这些待选项.右击这些项目,可以生成到Requi

Webkit中HTML5 Video的实现分析 (一) - 基本结构及HTMLMediaElement &amp;amp; MediaPlayer

以下为针对Webkit中HTML5 Video实现原理的分析和学习总结.至于其中的UML图档,可以到下面的github链接中下载. 首先预览一下Webkit中和Video相关的主要的类的层次结构: 其中主要的类为HTMLMediaElement, MediaPlayer以及RenderVideo(左下角). HTMLMediaElement代表了DOM结点,其继承关系可以追溯到Node,也就是DOM的结点.网页中Video/Audio元件的解析就是由它的创建开始.JavaScript的视频操作A

如何:使用 Visual Studio 中的一键式发布来部署 Web 应用程序项目

原文: 如何:使用 Visual Studio 中的一键式发布来部署 Web 应用程序项目 本主题介绍如何在以下产品中使用 一键式发布 发布(部署)Web 应用程序项目: Visual Studio 2012 Visual Studio Express 2012 for Web 与 的Visual Studio 2010 Visual Studio Web发布更新 与 的Visual Web Developer 2010 Express Visual Studio Web发布更新 您可以部署到任

系统设计与工具

最近读了<设计原本>,其中下面这句话,让我感触颇深:   设计师的主要任务乃是帮助客户发现他们想要的设计. 以前,我就遇到过一件事.老板早上一来,递了张名片,就说这个老板需要我们给他们开发一套定制的进销存系统.下面要做的事,一定是要弄清具体的需求了. 所以设计和需求分析应当是不断迭代的,或者是平行进行的,也就是所谓的共同演化模型. 具体的需求如果把握准了,剩下就是如何分解问题.逐一求解,然后再串起来进行设计模拟,以评估设计.个人觉得Top-Down的方式在许多情况下都表现的不错.在<&l

15th Annual Jolt Product Excellence &amp;amp;amp; Productivity Awards

excel Books: GeneralJolt Winner:• Head First Design Patterns by Elisabeth Freeman, Eric Freeman, Bert Bates and Kathy Sierra (O'Reilly)Productivity Winners:• Joel on Software by Joel Spolsky (Apress)• Refactoring to Patterns by Joshua Kerievsky (Addi

Linux中tar命令使用详解

tar 用来将多个文件或目录打包成一个大文件 1.将/tmp 打包并使用bzip2压缩 [root@localhost ~]# tar -cjvf ./tmp.tar.bz2 /tmp tar: Removing leading `/' from member names /tmp/ /tmp/man.config1.gz /tmp/man.config /tmp/.ICE-unix/ /tmp/man.config9.gz /tmp/man.config.bz2 -c 建立打包文件 -j 使用

IOS开发:Objective-C Category的最初体验

  Step1: 创建项目 启动Xcode -> File -> New -> Project. 然后创建一个 iOS Single View Applciation.这里我们命名为 Categories. 开发:Objective-C Category的最初体验-最高的初体验"> Step2: 创建Category 现在来创建一个Category来为NSString添加扩展方法.点击 File -> New -> File 然后选择 Cocoa Touch

解释代码和系统原理时可以画的图

在个人技术分享中,能不能把代码.系统实现原理讲清楚很重要,要不然自己在团队的影响力没提升,还浪费他人时间:一个很重要的手段就是: 多作图,少文字 一定要遵循这个原则!你整出一大堆文字贴进PPT真的是很lame & low 如果你真的懂你要讲的,一般几页幻灯片,几张图就可以全部说清,你讲得明白,别人印象深刻,要知道人的大脑天生对图片要较文字敏感,要不然东尼托赞也不会弄出思维导图这东东. 所以下面我贴出了自己见到的一些图示例以供参考,其实不用局限于它们,你觉得什么样子最能解释某东西原理你就那样画,管