我需要为我的LaTeX文档绘制一些图片,我发现手工制作的PostScript看起来很合适(我想以编程方式做事,需要数学函数等).我也试过TikZ,但这看起来过于复杂,难以使用.
但是,使用普通的标准PostScript有点痛苦,因为绘制形状实际上没有任何标准功能(例如甚至不是矩形).
是否有任何PostScript库包含常见形状的功能并使生活更轻松?在我看来这个问题应该是相当普遍的.
或者我应该跳过PostScript并转向一些优秀的系统?哪一个?
我需要从python中打印"Wheel Tags".车轮标签将包含图像,线条和文字.
Python教程有两段关于使用图像lib创建postscript文件.看完之后我还是不知道如何布局数据.我希望有人可能有如何布局图像,文字和线条的样本?
谢谢你的帮助.
有没有办法跟踪何时打开PDF?也许通过将一些脚本嵌入到pdf本身中?
我看到下面的问题,我想javascript的答案是"不",但我想知道这是否可行.
我知道在这个数字世界中几乎无法生存.
我有很多单页的postscript文件(图形/图像)我想转换为pdf并自动裁剪到一个窄盒子.我现在在Windows上(我也使用linux,所以不要犹豫,为linux发布代码)
我过去通过组合Ghostscript gswin32c.exe和Calibre pdfmanipulate.exe获得了成功.这对许多人来说可能是一种熟悉的方法.
但由于几个原因,这种方法已经变得充满了问题.
我"升级"到64位gswin64c.exe后出现了一个问题.32位版本gswin32c.exe仍可在我的系统上运行,所以我不能抱怨太多.
处理可能编码不当的postscript文件时出现了另一个问题.似乎至少有两个问题,但我不确定哪个(如果有的话)是负责任的,或两者都是.一个问题是边界框线,例如%% BoundingBox:135 179 484 587并不总是放在从顶部开始的第二行.我明白这可能是一个问题.另一个问题是上面的边界框对应于Ghostscript中的"纵向"方向,但裁剪遵循"横向"方向.我还没有发现的另一个问题是,对于某些文件来说,裁剪似乎很随机.
所以这是我的32位方法(适用于高质量文件),然后是64位自适应功能(也许是因为它在我的机器上调用了一些pypdf脚本而不是口径提供的修补脚本,如果我理解https: //bugs.launchpad.net/ubuntu/+source/calibre/+bug/800551和http://www.mobileread.com/forums/archive/index.php/t-103097.html,但我只是猜测并且无论如何都不知道变通方法):
@echo off echo batch processing with Latex ps2pdf followed by Ghostscript gswin64c.exe and Calibre2 pdfmanipulate.exe for %%I in (*.ps,*.eps) do ( "C:\Program Files\MiKTeX 2.9\miktex\bin\x64\ps2pdf" %%I ) for %%I in (*.pdf) do ( "C:\Program Files (x86)\Ghostscript\gs9.00\bin\gswin32c.exe" -dSAFER -dNOPAUSE -dBATCH
-sDEVICE#bbox "%%I" 2> bounding "C:\Program Files (x86)\Calibre2\pdfmanipulate.exe" crop -o "%%~nICropped32.pdf" -b bounding "%%I" pause "C:\Program Files\Ghostscript\gs9.04\bin\gswin64c.exe" -dSAFER -dNOPAUSE -dBATCH
-sDEVICE#bbox "%%I" 2> bounding "C:\Program …Run Code Online (Sandbox Code Playgroud) 将字符串拆分为给定字符的最简单方法是什么?例如,通过分割空间来制作单词数组; 甚至可以创建字符串中所有字符的数组.
我能想到的唯一方法是search在循环中使用.因为,所有语言都有这个功能,我担心我会错过PostScript这样做的功能.
我正在尝试制作自己的网格(看起来非常像这样:http: //tinyurl.com/cdyre6k-以公制单位为毫米的心电图纸).
我正在使用ReportLab/Python(opensource)来制作这些报告.下面是我的代码片段.
在屏幕上,它看起来很棒!:

然而,当我将它发送到打印机时(是的,我也用打印机设置修改)它会打印一些线条,而不是其他线条(有时它是有条不紊的并且打印出图案式格子图案,有时则是更粗/更细的线条;请记住,打印机的输出是一致的,取决于我设置的笔画宽度.
我尝试了各种笔画宽度组合,以及各种打印机设置组合...我无法正确打印!我尝试了另一种打印机并获得了更好的结果,但我必须将打印机设置设置为超过1200 dpi(CAD级别打印).另一台打印机设置为600dpi.在那台相同的打印机(600dpi)上,我打印了一个由前同事制作的文件,打印就好了(请注意,他没有使用ReportLab,所以我不能使用他的代码/解决方案).
到底是怎么回事?这是打印机上的别名问题吗?如果我将网格转换为位图(或其他格式),它会对我有帮助吗?我该如何解决这个问题(我唯一的选择是使用Python和ReportLab)?ReportLab手册没有帮助,"谷歌"没有帮助,而以前的StackExchange问题似乎没有涵盖这一特定主题.如果我将笔画宽度设置为"1",我可以让网格打印所有行,但是后面的网格线太粗了.
最终结果是我正在处理的折线图,我知道ReportLab有图表功能,但reportlabs图表/网格功能不能给我我的项目所需,所以我被迫让我拥有主要/次要线的自己的网格(也许我错过了一些东西,并开放替代技术,但目前它看起来很好的PDF形式,只是不在打印机).
任何建议表示赞赏!
TIA,
-J
for i in decimal_range(0, _time, 1):
if (i % 5.0 == 0):
if (i % 25.0 == 0):
grid_pattern.add(shapes.Line(_temp_x,
(_temp_y + _height_of_box),
_temp_x,
(_temp_y + _height_of_box+4),
strokeWidth=1,
strokeColor=colors.black))
else:
pass
grid_pattern.add(shapes.Line(_temp_x, _temp_y, _temp_x,
(_temp_y + _height_of_box),
strokeWidth=.12,
strokeColor=colors.pink))
else:
grid_pattern.add(shapes.Line(_temp_x, _temp_y, _temp_x,
(_temp_y + _height_of_box),
strokeWidth=.12,
strokeColor=colors.pink))
_temp_x += 1 * mm
_temp_x = xorigin
for i in range(0, _mv, 1):
if (i …Run Code Online (Sandbox Code Playgroud) 我过早地发布了一个代码高尔夫挑战来使用这个数据集(只是茶壶)绘制犹他茶壶.(经过修订和发布的茶壶挑战)但是当我深入研究数据以便掀起一个小例子时,我意识到我不知道这些数据是怎么回事.我对2D中的Bezier曲线有很好的理解,实现了deCasteljau.但对于3D它的工作原理是否相同?
是! 它确实!
数据包含每个包含16个顶点的补丁.这些是如何布局的标准顺序?如果它们对应于2D曲线,则四个角点实际接触表面,其余12个是控制,对吧?
是!
我的"原始计划"是将形状简化为矩形,将它们投影到画布上,然后绘制灰色的填充形状,通过与光矢量垂直的贴片的点积计算.如果我将它简化到那么远,它甚至会看起来像茶壶吗?是否必须使用光线追踪来获得可识别的图像?
这是主观的.:-(
虽然这可能看起来像几个问题,但它们都是这一个问题的所有方面:"请,请好的Guru,在一些Bezier Patches上学习我?我需要知道什么才能画出茶壶?"
这是我到目前为止编写的代码.(使用此矩阵库:mat.ps)
%!
%%BoundingBox: 115 243 493 487
%-115 -243 translate
(mat.ps)run %include matrix library
/tok{ token pop exch pop }def
/s{(,){search{ tok 3 1 roll }{ tok exit }ifelse }loop }def
/f(teapot)(r)file def
/patch[ f token pop { [ f 100 string readline pop s ] } repeat ]def
/vert[ f token pop { [ f 100 string readline pop s …Run Code Online (Sandbox Code Playgroud) 我注意到Boost精神提供了一些限制,在这里的一个问题上有一个用户请求有关提升精神的帮助,另一个用户给出了答案指定,提升精神适用于语句而不是"通用文本"(I对不起,如果我没记错的话.
现在我想用令牌来考虑Postscript和PDF,并以这种方式简化我对这种格式的处理方式,问题在于PDF是标记语言和编程语言之间的混合,其中包含跳转和表格,在考虑最流行的文件格式(如XML,C++代码和其他语言和格式)时,我无法想到类似的东西.
还有另外一个事实:我真的找不到那些在使用boost :: spirit wiriting pdf解析器或编写器方面有经验的人,所以我问,boost :: spirit它能够解析PDF文件和输出作为代币的元素?
我需要您对以下问题的支持,因为它拉了我一段时间。我们有一个小c#实用程序,它PDF使用GhostScript. 此打印按预期进行,但未能保留页面格式。但是,当我Adobe Acrobat代替GhostScript. 所以我认为,我在 GhostScript 的命令行参数上犯了一些明显的错误。
背景
以下是核心 c# 逻辑,它在每个页面上打印具有不同样式的给定 PDF 文件。给定的 PDF 文件有页面;
简而言之,我要打印的 PDF 只不过是许多具有不同字体样式、大小、边距的小型 pdf 文档的合并(将单个 pdf 合并为一个大 pdf)。
问题
以下逻辑用于GhostScript(v9.02)打印 PDF 文件。尽管以下逻辑打印任何给定的 PDF,但它无法保留页面格式,包括页眉、页脚、字体大小、边距、方向(我的 pdf 文件具有横向和纵向的页面)。
有趣的是,如果我使用 acrobat 阅读器打印相同的 PDF,那么它将按预期与所有页面级格式一起打印。
void PrintDocument()
{
var psInfo = new ProcessStartInfo();
psInfo.Arguments =
String.Format(
" -dPrinted -dBATCH -dNOPAUSE -dNOSAFER -q -dNumCopies=1 -sDEVICE=ljet4 -sOutputFile=\"\\\\spool\\{0}\" \"{1}\"",
GetDefaultPrinter(), @"C:\PDFOutput\test.pdf");
psInfo.FileName …Run Code Online (Sandbox Code Playgroud) 我在macbook上使用R.
这段代码:
postscript("plot.eps")
ggplot(SomeData, aes (x=Cue, y=var1, group=var2, color=var2, shape=var2)) +
geom_line(size=0.5) +
geom_point(size = 3) +
geom_errorbar(aes(ymin=Var1-ci, ymax=Var1+ci), width=0.15, size=0.5) +
xlab("Var1") + ylab("Var2")+
coord_cartesian(ylim=c(600, 675)) +
theme(axis.text = element_text(colour = "black")) +
scale_colour_manual(values=darkcols) +
theme(text = element_text(size=16, family="Times New Roman")) +
theme(legend.position="bottom")
dev.off()
Run Code Online (Sandbox Code Playgroud)
返回此错误:
Error in grid.Call(L_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
family 'Times New Roman' not included in postscript() device
Run Code Online (Sandbox Code Playgroud)
字体系列在图上定义.尝试用它来定义它 postscript(family="Times")并且postscript(family="Times New Roman")没有成功
尝试font_import()/ loadfonts(),但这样做会产生更多错误(Plot在执行此操作后甚至不会出现在QUARTZ上)
检查字体文件夹中的禁用字体,启用Times New Roman.
检查R中可用的字体names(postscriptFonts()),它就在那里. …