Australia customs pdf tla suite
Skill xuluoforcainiao/australia-customs-pdf-tla-suite/australia-customs-pdf-tla-suite
Build an end-to-end Australian customs document workflow that converts commercial invoice Excel files to single-page landscape A4 PDFs, packages the converter into a standalone Windows GUI executable, and bundles it with TLA IMS upload tools for offline team deployment. Use when the user needs to create offline-deployable PDF conversion tools, bundle Excel-to-PDF with customs upload workflows, build tkinter GUI executables via PyInstaller, or distribute Python tools to colleagues without Python installed.From its SKILL.md
npx -y skills add xuluoforcainiao/australia-customs-pdf-tla-suite --skill australia-customs-pdf-tla-suiteAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
5.8 KB, ~1.4k tokens by cl100k_base, as published. Nobody here has run it
Australia Customs PDF + TLA Suite
Purpose
Convert Australian customs commercial invoice Excel files to single-page landscape A4 PDFs, wrap the converter in a native Windows GUI executable, and bundle it with the TLA IMS upload tool so colleagues can run the entire workflow without Python installed.
When to Use
- User needs to convert Excel invoices to PDF and deploy the tool offline
- User wants a GUI window (folder path inputs, convert button, log display)
- User needs to package a Python script into a Windows exe for colleagues
- User wants the PDF converter to automatically hand off to the TLA upload tool
- User mentions "线下部署", "打包成exe", "同事没装Python", "双击运行"
- User wants to bundle multiple tools into a single distribution zip
Requirements
- Python 3.7+ with
openpyxl,reportlab,PyInstaller - Windows environment for exe packaging
- TLA upload tool package (separate skill:
toplogistics-customs-upload)
Workflow Overview
Excel files -> tkinter GUI -> batch PDF conversion -> popup ask TLA? -> launch TLA tool
|
v
PyInstaller --onefile --windowed -> standalone exe
|
v
zip bundle (PDF tool exe + TLA tool folder)
Step 1: Core PDF Conversion
Reuse the conversion logic from australia-customs-excel-to-pdf. Key additions for this suite:
- Temp image cleanup: Extract embedded images to
tempfile.gettempdir(), delete viashutil.rmtree()afterc.save() - Batch mode: Process all
.xlsxfiles in a source folder, write PDFs to output folder
Step 2: tkinter GUI
Build a compact single-window GUI:
- Two
tk.Entryfields for source/output folder paths - "Start Conversion" button (disabled during processing)
tk.Textlog area (8 lines, read-only)- Status label with color coding (blue=processing, green=success, orange=partial, red=error)
- Background thread for conversion so UI doesn't freeze
- No auto-close timer — conversion completion triggers the TLA handoff dialog instead
Critical: All UI updates from the background thread must use root.after(0, callback) to schedule on the main thread.
Step 3: TLA Tool Integration
After batch_convert() finishes successfully:
- Call
find_tla_tool()to detect the TLA upload tool in predefined relative paths - If found: show
messagebox.askyesno("转换完成", "...是否立即打开 TLA 上传工具?")- Yes ->
os.startfile(tla_path)thenroot.destroy() - No ->
root.destroy()
- Yes ->
- If not found: show
messagebox.showinfo("转换完成", "未检测到 TLA 上传工具..."), keep window open
Path Detection Strategy
def find_tla_tool():
exe_dir = os.path.dirname(sys.executable) if getattr(sys, 'frozen', False) else os.path.dirname(__file__)
candidates = [
os.path.join(exe_dir, 'TLA海关查验上传工具包', '启动上传工具.bat'),
os.path.join(exe_dir, '..', 'TLA海关查验上传工具包', '启动上传工具.bat'),
os.path.join(exe_dir, 'TLA海关查验上传1.0', '启动上传工具.bat'),
os.path.join(exe_dir, '..', 'TLA海关查验上传1.0', '启动上传工具.bat'),
]
for path in candidates:
real_path = os.path.normpath(os.path.abspath(path))
if os.path.exists(real_path):
return real_path
return None
Priority: BAT over EXE because the BAT sets PLAYWRIGHT_BROWSERS_PATH environment variable.
Step 4: PyInstaller Packaging
python -m PyInstaller --onefile --windowed --name "Excel转PDF工具" \
--distpath "./gui_dist" --workpath "./gui_build" \
"Excel转PDF工具.py"
Pitfall: In frozen exe, use os.path.dirname(sys.executable) not os.path.dirname(__file__) for portable paths.
Pitfall: ReportLab 4.x uses md5(usedforsecurity=False) which is incompatible with Python 3.7. If this error occurs, edit the ReportLab source files to remove the usedforsecurity=False parameter.
Pitfall: Any input() calls in the script will cause EOFError in non-interactive terminals (e.g., launched from HTA or subprocess). Wrap with try/except EOFError: pass.
Step 5: Joint Distribution Bundle
Create a zip containing both tools at the same level:
海关工具套件/
├── Excel转PDF工具.exe
├── 使用说明.txt
└── TLA海关查验上传工具包/
├── 启动上传工具.bat
├── TLA海关查验上传.exe
├── 查看运行报表.exe
└── chromium-1067/
Use a Python script to copy files and Compress-Archive to create the zip. Do not use attrib +h on folders before zipping — it causes Compress-Archive to skip them.
Common Pitfalls
| Issue | Solution |
|---|---|
| BAT file silently fails | Must use UTF-8 BOM + CRLF (encoding='utf-8-sig', newline='\r\n') |
Chinese paths in file:/// URLs | Browser may crash; copy HTML to tempfile.gettempdir() as fallback |
HTA shell.Exec fails with exe | Abandon HTA, use tkinter GUI instead |
Compress-Archive skips hidden folders | Remove attrib +h before zipping |
| TLA tool not found after bundling | Ensure relative path matches find_tla_tool() candidates |
Reference
For complete code, build commands, and detailed troubleshooting, see reference.md.
What ships with it: 2 files
6.9 KB alongside SKILL.md
- README.md822 B
- reference.md6.1 KB