我使用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
我正在开发一个需要模板的项目.主模板具有指定数据源的import属性.然后使用String.replaceAllMapped读取数据并将其插入到字符串中.以下代码适用于File api,因为它具有readAsStringSync方法来同步读取文件.我现在想要从任何返回Future的任意流中读取.
如何在这种情况下使async/await工作?我也找了一个异步兼容替换replaceAllMapped但我还没有找到一个不需要多次使用正则表达式的解决方案.
这是我的代码的一个非常简化的示例:
String loadImports(String content){
RegExp exp = new RegExp("import=[\"\']([^\"\']*)[\"\']>\\s*<\/");
return content.replaceAllMapped(exp, (match) {
String filePath = match.group(1);
File file = new File(filePath);
String fileContent = file.readAsStringSync();
return ">$fileContent</";
});
}
Run Code Online (Sandbox Code Playgroud)
用法示例:
print(loadImports("<div import='myfragment.txt'></div>"))
Run Code Online (Sandbox Code Playgroud)