首页>工作相关>coreldraw自动排版并打印pdf文件一例

coreldraw自动排版并打印pdf文件一例

客户发来一份专用的纸箱唛头文件,一张唛头占了一页,总共有50个产品,每个产品有一个专用的序列号,对应一个专用的唛头,所以文件也有50个页面。

coreldraw_automatic_typesetting_pdf_p1

因为客户要求两个正唛粘贴,所以每张唛头需要打印两次,刚好产品的包装箱比较小,正面用一张a4对半裁开刚好可以覆盖。考虑用coreldraw对文件重新排版,对每一页内容缩放至适合a4打印,然后复制一份上下排版。因为页数较多,需要的操作又是机械化的重复操作,就考虑用vba来完成。

coreldraw_automatic_typesetting_pdf_p2

强制分页

比较幸运的是客户的文件可以直接利用coreldraw进行编辑,对于很多pdf文件,coreldraw会要求输入口令或直接报错,但是也遇到了一些小问题,拖入coreldraw后文件的所有内容被放在了同一个页面,最初考虑的是通过vba分页导入,边导入边进行排版操作,但是并没有找到分次导入的语句-_-!!!,最后只能退而求其次,先强制分页导入全部页面,然后按页数复制每一页的内容,最后粘贴到指定的打印页面。

Sub Macro1()
    Dim impflt As ImportFilter
    Dim io As New StructImportOptions
    With io
        .MaintainLayers = True
    End With
    Set impflt = ActiveLayer.ImportEx("文件路径名", cdrAI9, io)
    impflt.Finish
End Sub

切换页面的操作

通过pages()函数,coreldraw可以灵活的切换操作页面,下面的语句实现了对第2页的全部内容进行缩放,复制,然后返回第一个页面,粘贴所复制的内容这一系列操作。将页面设置为活动需要用到“Activate”命令,曾经一度以为是“moveto”,对页面使用“moveto”指令,其实是改变当前页面的页码。

ActiveDocument.Pages(2).Shapes.All.SetSize 6.889764, 4.645681
ActiveDocument.Pages(2).Shapes.All.Copy
ActiveDocument.Pages(1).Activate
ActiveLayer.Paste

成功的实现一次,就可以成功的实现多次,只需要将pages函数中的数字设置为一个变量,添加一个循环,就可以依次获取到从第2到第n页的内容,并将其依次复制到第一页进行打印。打印之后需要删除上一次复制的内容,以避免重叠。

完整的循环程序如下:

Sub Macro2()
    Dim Paste1 As ShapeRange
    Dim Paste2 As ShapeRange
    For i = 2 To 50
        ActiveDocument.Pages(i).Shapes.All.SetSize 6.889764, 4.645681
        ActiveDocument.Pages(i).Shapes.All.Copy
        ActiveDocument.ReferencePoint = cdrCenter
        ActiveDocument.Pages(1).Activate
        ActiveLayer.Paste
        Set Paste1 = ActiveSelectionRange
        Paste1.SetPosition 4.133858, 2.923228
        ActiveLayer.Paste
        Set Paste2 = ActiveSelectionRange
        Paste2.SetPosition 4.133858, 8.769685
        ActiveDocument.PrintOut
        Paste1.Delete
        Paste2.Delete
    Next i
End Sub

程序整理

因为导入文件默认从第一页导入,第一页准备留空仅用于打印,所以在导入程序中添加了一句语句,先增加一个页面,再进行导入操作。导入完毕后,再手动运行Macro2()就可以实现自动的排版打印了。

Sub Macro2()
    Dim Paste1 As ShapeRange
    Dim Paste2 As ShapeRange
    For i = 2 To 50
        ActiveDocument.Pages(i).Shapes.All.SetSize 6.889764, 4.645681
        ActiveDocument.Pages(i).Shapes.All.Copy
        ActiveDocument.ReferencePoint = cdrCenter
        ActiveDocument.Pages(1).Activate
        ActiveLayer.Paste
        Set Paste1 = ActiveSelectionRange
        Paste1.SetPosition 4.133858, 2.923228
        ActiveLayer.Paste
        Set Paste2 = ActiveSelectionRange
        Paste2.SetPosition 4.133858, 8.769685
        ActiveDocument.PrintOut
        Paste1.Delete
        Paste2.Delete
    Next i
End Sub

Sub Macro1()
    Dim impflt As ImportFilter
    Dim io As New StructImportOptions
    Dim p1 As Page
    Set p1 = ActiveDocument.InsertPagesEx(1, False, 1, 8.267717, 11.692913)
    ActiveDocument.Pages(2).Activate
    With io
        .MaintainLayers = True
    End With
    Set impflt = ActiveLayer.ImportEx("文件路径名", cdrAI9, io)
    impflt.Finish
End Sub

文件路径名的参考格式:

ActiveLayer.ImportEx("E:\设计资料\测试文件夹\testfile.pdf", cdrAI9, io)

标签: office

移动端可扫我直达哦~

推荐阅读

office 2024-07-26

如何将证件照的蓝底修改为白底

想给孩子报名参加csp-j入门组的比赛,体验一下比赛的流程与难度,报名需要提交一张白底的照片,但手头上的照片是蓝色背景的。用ps的魔棒工具直接选取之后,衣服部分的效果尚可,但发丝部位还是有蓝色残留,效果比较粗糙。有过ps的使用经验(但...

工作相关 office

office 2024-04-17

iphone用相机提取照片中的文字

随着手机像素越来越高,平时拍个产品照片,发货唛头什么的绰绰有余,所以自从单位的拍照用的数码相机损坏之后,也没有考虑再次购入,直接用手机操作一下就好。手机集成的功能越来越多,无形中挤掉了很多旧有单一功能电子产品的市场。博主之前一直用的i...

工作相关 office

office 2024-04-02

Coreldraw报错“向程序发送命令时出现问题”

想尝试创建一个使用于全局的宏命令,以实现一个跨文件的小功能,但发现在全局模块内插入时无法保存gms文件,在当前文件内的模块则可以正常保存。既然有保存按钮,按理不应该出现这种情况,考虑到Coreldraw程序被博主安装到了c盘,而c盘文...

工作相关 office

office 2024-03-29

Coreldraw中无法直接粘贴QQ截图

工作多更多的使用台式机,办公需要联络的合作伙伴也都加了QQ,所以一般也都以QQ相互联系。一方面QQ该有的功能都有满足需求,另一方面也能更好的区分公私环境。记得早先Coreldraw是可以直接粘贴QQ截图的,但架不住QQ隔三岔五的更新,...

工作相关 office

office 2023-12-26

硬盘空间不足导致pdf文件打印空白一例

同事的电脑安装的win7,c盘分的比较小---60个g,公司的电脑,办公用的,安装了许多办公软件开票软件之类,重装涉及一堆操作,所以也一直没有去改它,日积月累的,很快60个g就快满了。某天同事找博主,说pdf格式的文件无法打印,于是过...

工作相关 office

office 2023-12-21

多页面PDF文件导入CorelDRAW时出现IO读错误

合作的客户有时候会要求在产品上粘贴订制的标签,标签上包含序列号,客户有时候订制几十个产品,就发过来几十页的pdf文件,每一页一出二,粘贴在箱子的两侧。为了实现这类pdf文件的打印,博主尝试写了一段小程序,首先依次导入页面,然后挨个打印...

工作相关 office

office 2023-12-12

word自动打印编号时如何跳过指定序列号

上班摸鱼小技巧重复的工作做得多了,难免会想要偷个小懒,利用编程的方式来自动化一些工作流程,从而可以忙里偷闲,在自动化工作期间泡一杯茶,看一眼微信未读信息。于是写了这样一段代码,来实现word的自动化打印:Dim posY As Dou...

工作相关 office

office 2023-09-19

电脑端QQ如何恢复聊天记录

个人电脑上的聊天记录有一波没一波的,大多是插科打诨。所以装了很多台电脑,基本没人提出,也没考虑过去恢复一下QQ的聊天记录。但工作用的电脑就不一样了,很多客户有文件往来,有些订单确认沟通的的过程也是在QQ上完成的。安装QQ的时候会让用户...

工作相关 office

office 2023-09-18

WIN7如何显示并修改已知文件的扩展名

新安装的系统,默认一般都是隐藏已知文件的扩展名的,在实际使用中,特别是工作中,经常需要查看并修改文件的后缀,这个时候就需要修改电脑的设置,让计算机自动显示文件的扩展名。首先双击桌面上的计算机图标,进入磁盘文件管理界面;单击左上角的组织...

工作相关 office

office 2023-09-17

重新安装系统之后QQ打不开了怎么办

遥想当年3Q大战,360艰难的做了个决定:要么删除QQ,要么就删除我360。于是思考2秒后毅然选择了后者,虽然彼时360还没有现在这么贴心,还没在后台静默安装一些360系的软件,实在是办公发送文件联系客户都绕不开QQ。日积月累的,除了...

工作相关 office