2011-01-18 67 views
10

Tôi đang tạo tệp PDF (sử dụng fpdf) và tôi tự hỏi liệu có cách nào để đặt thuộc tính của tài liệu thành mặc định để in không có tỷ lệ không.Đặt PDF để in mà không cần chia tỷ lệ

Vì vậy, khi bạn chọn in từ menu đối thoại in, tỷ lệ được đặt thành không. Tôi đang cố gắng xác định xem đây có phải là cài đặt người dùng hay điều gì đó mà tôi có thể kiểm soát trong quá trình tạo tệp PDF hay không.

Xin cảm ơn trước.

Trả lời

2

Mở rộng quy mô được kiểm soát bởi ứng dụng PDF - nó không được đặt trong tệp.

+0

Cảm ơn bạn đã trả lời. Đây có phải là thứ có thể đạt được bằng cách viết một plugin và yêu cầu người dùng cài đặt plugin không? – JCam

+0

Bạn có thể gửi trình xem hoặc plugin của riêng mình nhưng nó sẽ có rất nhiều công việc và bạn sẽ phải đảm bảo người dùng phải sử dụng nó –

+7

Câu trả lời này là gây hiểu nhầm. Có một cách để nhúng tùy chọn trong tệp để yêu cầu không có tỷ lệ. Hầu hết các ứng dụng PDF sẽ tôn trọng sở thích và không mở rộng quy mô tài liệu. – lukecyca

0

tôi cũng không chắc chắn nếu bạn có ý nghĩa somethink như thế này: http://www.fpdf.org/en/doc/setdisplaymode.htm

hoặc không có "nhân rộng" cho hình ảnh?

$im2 = pdf_open_image_file($dokument, 'jpeg', 'example.jpg'); 
pdf_place_image($dokument, $im2, 395, 655, 1.0); /* 1.0 = qualiti/scaling - 1.0 is original .../* 
pdf_close_image($dokument, $im2); 
+0

Điều này rất hữu ích, nhưng tôi đang tìm kiếm điều gì đó khác biệt. Tôi đã cập nhật bài đăng để rõ ràng hơn một chút. Cám ơn vì sự gợi ý. – JCam

0

Tôi đã gặp phải sự cố tương tự.

Tôi có một số tệp PDF có nội dung của PDF, đó là văn bản và hình ảnh, rất gần biên giới PDF nhưng vẫn là đối thoại in Xem trước/Acrobat đề xuất in bằng tỷ lệ 100%, do đó cắt bỏ nội dung không thể in được vì các lề máy in tự nhiên.

Tạo bất kỳ tệp PDF nào trong Trang ví dụ như kết quả bằng PDF được in theo tỷ lệ 100% theo mặc định.

Tuy nhiên, nếu tôi tạo tệp PDF bằng TCPDF có liên quan đến FPDF so với hộp thoại máy in, hãy đề xuất chia tỷ lệ để phù hợp với trang.

Nghi ngờ của tôi là cách tạo PDF khác nhau. Tôi nghi ngờ rằng Pages và các công cụ khác tạo ra các lớp riêng biệt và sau đó chúng được handeled khác nhau, có thể bởi một lá cờ hoặc một cái gì đó.

Tôi đã so sánh các phần có thể đọc được trong hai tệp PDF của mình và đã đi qua một số khác biệt, đặc biệt là cách các tài liệu bắt đầu. Tuy nhiên, kiến ​​thức về nguồn PDF của tôi rất hạn chế, vì vậy tôi chỉ có thể đoán được những gì cần thay đổi. Có một Tài liệu tham khảo PDF nào được nêu ở đó là cách kiểm soát các đối tượng/khu vực in được không?

Đây là nội dung của một file PDF tối thiểu sẽ được in mà không cần mở rộng quy mô:

%PDF-1.4 
1 0 obj 
<< /Type /Catalog 
/Outlines 2 0 R 
/Pages 3 0 R 
>> 
endobj 
2 0 obj 
<< /Type /Outlines 
/Count 0 
>> 
endobj 
3 0 obj 
<< /Type /Pages 
/Kids [4 0 R] 
/Count 1 
>> 
endobj 
4 0 obj 
<< /Type /Page 
/Parent 3 0 R 
/MediaBox [0 0 595 842] 
/Contents 5 0 R 
/Resources << /ProcSet 6 0 R 
/Font << /F1 7 0 R >> 
>> 
>> 
endobj 
5 0 obj 
<< /Length 73 >> 
stream 
BT 
/F1 24 Tf 
100 100 Td 
(Hello World) Tj 
ET 
endstream 
endobj 
6 0 obj 
[ /PDF /Text ] 
endobj 
7 0 obj 
<< /Type /Font 
/Subtype /Type1 
/Name /F1 
/BaseFont /Helvetica 
/Encoding /MacRomanEncoding 
>> 
endobj 
xref 
0 8 
0000000000 65535 f 
0000000009 00000 n 
0000000074 00000 n 
0000000120 00000 n 
0000000179 00000 n 
0000000364 00000 n 
0000000466 00000 n 
0000000496 00000 n 
trailer 
<< /Size 8 
/Root 1 0 R 
>> 
startxref 
625 
%%EOF 
0

Ok, tôi nghĩ rằng tôi đã nhận nó. Hãy thử cách này: mở tệp PDF do TCPDF tạo của bạn và xóa tất cả các lần xuất hiện của trình xem và bất kỳ câu lệnh nào khác ngoài MediaBox ... làm như vậy cuối cùng cũng dẫn đến một bản PDF có kích thước in mặc định :) đường nối như những thông tin bổ sung đó - dành cho in ấn chuyên nghiệp - chỉ nhầm lẫn giữa trình xem pdf phổ biến thay vì giúp đỡ bất cứ điều gì :)

Goto tcpdf.php và thay đổi dòng 8529 trong phương pháp _putpages như sau

thay đổi

$boxes = array('MediaBox', 'CropBox', 'BleedBox', 'TrimBox', 'ArtBox'); 

vào

$boxes = array('MediaBox'); 

Trong PDF-đầu ra của tôi này ngay lập tức loại bỏ các vấn đề rộng :)

6

In-rộng có thể được tắt cho các tệp PDF riêng lẻ bằng Adobe Acrobat, bằng cách đi tới Tệp -> Tùy chọn -> Nâng cao -> Tỷ lệ trang. (. Bạn có thể thử này sử dụng phiên bản thử nghiệm của Acrobat)

Như để đạt được điều này trong mã, tôi đã thử và thất bại trong việc làm cho nó hoạt động, nhưng sự khác biệt quan trọng trong các tập tin có vẻ là:

10 0 obj 
<</Metadata 2 0 R/Outlines 6 0 R/Pages 7 0 R/Type/Catalog/ViewerPreferences<</PrintScaling/None>>>> 
endobj 

cho file PDF không mở rộng quy mô, so với

10 0 obj 
<</Metadata 2 0 R/Outlines 6 0 R/Pages 7 0 R/Type/Catalog>> 
endobj 

cho những người sử dụng mặc định co-to-fit tùy chọn.

+0

Xin chào, đây là một chút căng, nhưng làm thế nào tôi sẽ sử dụng điều này với Exiftool - http://www.sno.phy.queensu.ca/~phil/exiftool/ – BelgoCanadian

8

tôi đã thực hiện nó thêm vào phương pháp _putcatalog() sau:

$this->_out('/ViewerPreferences [/PrintScaling/None]'); 

Sau dòng:

$this->_out('/Type /Catalog'); 

Thực hiện một phương pháp chỉ là nhanh chóng và dễ dàng ...

+1

Một biến thể của điều này làm việc cho tôi. Tôi subclassed FPDF và overrode _putcatalog() để đầu ra "/ ViewerPreferences <>" sau khi sản lượng hiện tại của nó. – lukecyca

+0

Khi tôi sử dụng '' setViewerPreferences ('PrintScaling', 'None') của ReportLab, nó tạo ra dòng ''/ViewerPreferences 12 0 R'' và thêm '' 12 0 obj <> '' tiếp tục xuống trang. Giá trị có thể khác có vẻ là ''/PrintScaling/AppDefault''. –

2

Đối với tôi, hãy thay đổi phương thức Danh mục FPDF _putcatalog() và thêm

$this->_out('/ViewerPreferences [/PrintScaling/None]'); 

không hoàn thành mục tiêu vì vậy tôi đã xem mã được sản xuất bởi Acrobate XI PDF và tìm thấy một số cải tiến khác. Thêm mã sau đây

$this->_out('/ViewerPreferences<</Duplex/Simplex/Enforce[/PrintScaling]/PrintScaling/None>>'); 

tạo một tệp PDF không còn được mặc định để chia tỷ lệ và thay vào đó chỉ cung cấp tùy chọn in Kích thước thực tế.

+0

Bạn đã đặt chức năng này ở đâu? Cuối cùng hoặc như được đề xuất bởi câu trả lời của onosenday, sau đầu ra "/ Type/Catalogue"? –

Các vấn đề liên quan