我试图修改Scala中的大型PostScript文件(有些大小只有1GB).该文件是一组批次,每批包含代表批号,页数等的代码.
我需要:
我当前的解决方案使用两个迭代器(iterA和iterB),从中创建Source.fromFile("file.ps").getLines.第一个迭代器(iterA)遍历一个while循环到批处理代码的开头(iterB.next每次都被调用).iterB然后继续搜索,直到下一个批处理代码(或文件末尾),计算它经过的页面数量.然后,它更新批次代码iterA的位置,重复该过程.
这似乎非Scala-like,我仍然没有设计好将这些更改保存到新文件的方法.
解决这个问题的好方法是什么?我应该完全抛弃迭代器吗?我最好喜欢这样做而不必将整个输入或输出同时存入内存.
谢谢!
我使用Ghostscript将PDF文档转换为PCL进行打印.最近我还要求在打印前将所有页面旋转到Portrait.我已经找到了一种使用Ghostscript和以下命令和postscript函数的方法.
"C:\Program Files (x86)\gs\bin\gswin32c.exe" "-dNOPAUSE" "-dNOPROMPT" "-dBATCH" "-sDEVICE=pxlmono" "-Ic:\Program Files (x86)\gs\fonts\;c:\Program Files (x86)\gs\lib\;c:\Program Files (x86)\gs\lib\;" "-r300" "-sOutputFile=C:\EXPORTFILE_e542e04f-5e84-4c8e-9b41-55480cd5ec52.cache" "rotate612x792.ps" "C:\EXPORTFILE_3a5de9da-d9ca-4562-8cb6-10fb8715385a.cache"
Run Code Online (Sandbox Code Playgroud)
rotate612x792.ps的内容
%! Rotate Pages
<< /Policies << /PageSize 5 >>
/PageSize [612 792]
/InputAttributes currentpagedevice
/InputAttributes get mark exch {1 index /Priority eq not {pop << /PageSize [612 792] >>} if } forall >>
>> setpagedevice
Run Code Online (Sandbox Code Playgroud)
问题是此函数用字母大小替换所有页面大小.我的文件有时是合法的或A4.我试图修改此功能,以使用肖像对应物替换横向大小,但无法生成功能性的postscript.我需要指向正确的方向来生成以下伪代码的postscript等价物.
for(each page)
{
if(PageSize == [792 612])
PageSize = [612 792];
}
Run Code Online (Sandbox Code Playgroud)
我知道有非Ghostscript旋转页面的方法,但如果我能让它工作,它将很好地适应我的过程,不会降低性能.
以下是我的一个pdf文件的示例: Sample1.pdf
我需要为我的LaTeX文档绘制一些图片,我发现手工制作的PostScript看起来很合适(我想以编程方式做事,需要数学函数等).我也试过TikZ,但这看起来过于复杂,难以使用.
但是,使用普通的标准PostScript有点痛苦,因为绘制形状实际上没有任何标准功能(例如甚至不是矩形).
是否有任何PostScript库包含常见形状的功能并使生活更轻松?在我看来这个问题应该是相当普遍的.
或者我应该跳过PostScript并转向一些优秀的系统?哪一个?
我发现了将多个PDF转换为几个PDF到Postscript的多个选项,但许多是具有命令行限制的命令行程序(此应用程序存在于.NET上).
我们的应用程序生成数万个需要发送到打印机的PDF,除非在打印Postscript之前我们需要编辑Postscript以插入打印命令说明(双面打印,托盘拉动,突出显示颜色等)
我认为一个完美的解决方案可能允许我们将PDF写入流,同时允许我们读取输出流,以便我们可以在将Postscript写入文件之前对其进行编辑.
当然,如果我必须首先创建包含所有10,000个PDF的文件并在另一个传递中编辑它,我也可以.
我应该提到速度很重要.我需要一次打印10,000张,但需要让打印机保持24小时/天的忙碌状态.
我正在尝试制作自己的网格(看起来非常像这样: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) 我每个月都有数百万个 Post Script 文件。每个文件有 4-5 页。除第1页外,每页内容很少。这样虽然文件内容不是太大,但是却造成了不必要的纸张浪费。
我正在寻找一些工具,可以将第 2 页压缩到最后一页或修剪未使用的空白区域,以便最佳地利用纸张。
我得到了具有 PSNUP 命令的 PSUTILS,但它也没有完全满足我的解决方案。
任何有想法的人都可以帮助解决这个问题。
我的示例 Post 脚本文件可以从以下位置下载
https://www.dropbox.com/s/2z9oirsvxzf13di/1010472622.ps
以上是一个三页的 Post 脚本文件。页码 2 和 3 可以组合在一起以实现最佳纸张使用。
请详细指导
问候 code.box@rediffmail.com
我过早地发布了一个代码高尔夫挑战来使用这个数据集(只是茶壶)绘制犹他茶壶.(经过修订和发布的茶壶挑战)但是当我深入研究数据以便掀起一个小例子时,我意识到我不知道这些数据是怎么回事.我对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文件和输出作为代币的元素?
如何pdftk从命令行(或最好从Ruby)使用页面编号添加到预先存在的PDF的底部?
我正在寻找这种格式:
第1页,共2页
第2页,共2页
我有一个Tkinter画布,上面有服务器矩形,文本和线对象。
我用
.postscript(file='file.ps')
Run Code Online (Sandbox Code Playgroud)
画布的方法。
当我尝试在Windows和Linux上使用ghostscript打开文件时,出现以下错误:
error: undefinedresult in stringwidth
Run Code Online (Sandbox Code Playgroud)
您对此有什么解决方案?
谢谢!
编辑:我正在使用python2