SathvikGanta commited on
Commit
06f551f
·
verified ·
1 Parent(s): f2c82a0

Update pdf_to_svg.py

Browse files
Files changed (1) hide show
  1. pdf_to_svg.py +31 -0
pdf_to_svg.py CHANGED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import fitz # PyMuPDF
2
+
3
+ def convert_pdf_to_svg(input_pdf, output_svg, width, height):
4
+ """
5
+ Converts a PDF to an SVG while preserving dimensions and vector data.
6
+ Args:
7
+ input_pdf (str): Path to the input PDF file.
8
+ output_svg (str): Path to save the output SVG file.
9
+ width (float): Target width in inches.
10
+ height (float): Target height in inches.
11
+ """
12
+ doc = fitz.open(input_pdf)
13
+ svg_content = []
14
+
15
+ # DPI for the conversion (72 DPI = 1 inch)
16
+ dpi = 72
17
+ scaling_x = width * dpi / doc[0].rect.width
18
+ scaling_y = height * dpi / doc[0].rect.height
19
+
20
+ for page_num in range(len(doc)):
21
+ page = doc[page_num]
22
+ matrix = fitz.Matrix(scaling_x, scaling_y)
23
+ svg = page.get_svg_image(matrix=matrix) # Extract SVG with scaling
24
+ svg_content.append(svg)
25
+
26
+ # Wrap SVG content with specified dimensions
27
+ svg_header = f'<svg xmlns="http://www.w3.org/2000/svg" width="{width}in" height="{height}in" viewBox="0 0 {width * dpi} {height * dpi}">'
28
+ svg_footer = "</svg>"
29
+
30
+ with open(output_svg, "w") as svg_file:
31
+ svg_file.write(svg_header + "\n".join(svg_content) + svg_footer)