Set PDF to print with no scaling

后端 未结 7 1270
名媛妹妹
名媛妹妹 2020-12-17 18:35

I am generating a PDF (using fpdf) and I am wondering if there is a way to set the document\'s properties to to default to print with no scaling.

So when you select

相关标签:
7条回答
  • 2020-12-17 18:59

    Ok, I think I got it. Try this: open your TCPDF-created PDF and remove all occurenecs of viewerpreferences and any box-statements other than the MediaBox... doing so finally resulted in a print-default-scaling-free PDF :) seams like those additional infos -intended for professional printing- only confuse the common pdf-viewer instead of helping with anything :)

    Goto tcpdf.php and change line 8529 in method _putpages as follows

    change

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

    into

    $boxes = array('MediaBox');
    

    In my PDF-output this instantly removed the scaling problem :)

    0 讨论(0)
  • 2020-12-17 19:06

    Scaling is controlled by the PDF application - it is not set in the file.

    0 讨论(0)
  • 2020-12-17 19:09

    Print-scaling can be turned off for invividual PDF files using Adobe Acrobat, by going to File -> Preferences -> Advanced -> Page scaling. (You can try this using the trial version of Acrobat.)

    As for achieving this in code, I've tried and failed to make it work, but the critical difference in the files seems to be:

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

    for non-scaling PDFs, compared to

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

    for those that use the default shrink-to-fit option.

    0 讨论(0)
  • 2020-12-17 19:13

    For me changing the FPDF Catalog method _putcatalog() and adding

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

    wasn't accomplishing the goal so I looked at the code produced by a Acrobate XI PDF and found some more verbage. Adding the following code

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

    created a PDF that no longer defaulted to scaling and instead only gave the option to print Actual Size which was what was desired.

    0 讨论(0)
  • 2020-12-17 19:24

    well i'm not sure if you mean somethink like this: http://www.fpdf.org/en/doc/setdisplaymode.htm

    or no "scaling" for images?

    $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 讨论(0)
  • 2020-12-17 19:24

    I ran into the same problem.

    I have several PDFs where the content of the PDF, that is text and images, go very near the PDFs border but still the print dialogue Preview/Acrobat suggests printing it in 100% scaling, thus cutting off the contents which aren't printable because of the printers natural margins.

    Creating any PDF in Pages for example results in a PDF which is printed in 100% scaling by default.

    However if I create a PDF using TCPDF which is related to FPDF than the printer dialog suggests to scale it in order to fit the page.

    My suspicion is that the way the PDF is created is different. I suspect that Pages and other tools create separate layers and they are then handeled differently, possibly by a flag or something.

    I compared the readable parts of my two PDF-Files and did come accross some differences, especially on how the documents begin. My knowledge of the PDF-Sources is, however very limited, so I can only guess what needs to change. Is there a PDF-Reference where it is stated how to control the printable objects/areas?

    Here the content of a minimal PDF which will be printed without scaling:

    %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 讨论(0)
提交回复
热议问题