• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Quick look preview multipage rich text
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Quick look preview multipage rich text


  • Subject: Re: Quick look preview multipage rich text
  • From: Jean-Daniel Dupas <email@hidden>
  • Date: Thu, 10 Jul 2008 00:20:14 +0200


Le 9 juil. 08 à 23:54, Julien Jalon a écrit :

If I understand correctly your point, it seems that in the first case, you
use the direct to data print operation and in the second case, you use the
direct to file print operation then read back the file in memory and send it
to Quick Look. Both methods use QLPreviewRequestSetDataRepresentation(). Am
I right?


What do you mean when you say "does not display the content as multipage".
What does it display?


You should try to dump on disk the data produced in the first case and take
a look at it.


--
Julien

On Wed, Jul 9, 2008 at 4:40 AM, Philip Dow <email@hidden> wrote:

Hi all,

I am trying to generate multipage pdf data for display in a quick look
preview from rich text attributed string data. Attributed strings don't know
anything about pages, so it seems to me that I'll have to go through the OS
printing architecture to generate the multipage pdf content.


Frustrating thing is, this works if I write the data to a file but not if I
send it to quicklook. I can generate the pdf data with a custom print info
specifying the page attributes, but quicklook does not display the content
as multipage. If I use the same settings but a different print operation,
writing the data to a temporary file instead, I get a correctly paginated
document.


Code follows.

I understand that PDF content can be created with CGPDFContextCreate and
the associated begin and end page calls, but the attributed string doesn't
know about pages, so that seems like a dead end to me. If there's a method
for doing it that way, I'm all for switching.


You might also suggest just sending RTF to Quick Look, but I'd like the
text attachments to display. Converting it to html seems like even more
work.


===

GenerateMultiPagePDFPreviewForURL(...)

NSAttributedString *attrString = ...;
NSTextView *textView = ... (filled with attrString);

NSMutableData *pdfData = [NSMutableData data];
NSPrintInfo *printInfo = [NSPrintInfo sharedPrintInfo];

[printInfo setPaperSize:NSMakeSize(612,792)];
[printInfo setHorizontalPagination: NSFitPagination];
[printInfo setVerticalPagination: NSAutoPagination];
[printInfo setVerticallyCentered:NO];

NSPrintOperation *po = [NSPrintOperation PDFOperationWithView:textView
insideRect:[textView bounds]
toData:pdfData
printInfo:printInfo];


[po runOperation];
QLPreviewRequestSetDataRepresentation(preview, (CFDataRef)pdfData,
kUTTypePDF, NULL);

===

Quicklook does not present a multipage preview with that code. But the
following code writes a multipage document...


===

NSAttributedString *attrString = ...;
NSTextView *textView = ... (filled with attrString);

NSPrintInfo *printInfo = [NSPrintInfo sharedPrintInfo];
NSMutableDictionary *printInfoDict = [NSMutableDictionary
dictionaryWithDictionary:[printInfo dictionary]];

[printInfoDict setObject:NSPrintSaveJob forKey:NSPrintJobDisposition];
[printInfoDict setObject:@"someLocation.pdf" forKey:NSPrintSavePath];


printInfo = [[NSPrintInfo alloc] initWithDictionary: printInfoDict];
[printInfo setHorizontalPagination: NSFitPagination];
[printInfo setVerticalPagination: NSAutoPagination];
[printInfo setVerticallyCentered:NO];

po  = [NSPrintOperation printOperationWithView:textView
printInfo:printInfo];
[po setShowPanels:NO];
[po runOperation];

===

In the first case I'm using [NSPrintOperation
PDFOperationWithView:insideRect:toData:printInfo:] and in the second
[NSPrintOperation printOperationWithView: printInfo:]. Is the
PDFOperationWithView method not capable of producing multipage pdf data
despite the custom printInfo?


~Phil




QuickLook support WebView contents, and the WebView support RTF data.

convert your attributed string into RTF (using -[NSAttributedString RTFFromRange:documentAttributes:]), then send the data to QuickLook. You may also generate html from your RTF , but I think the convertion is sometime less accurate.



_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


  • Follow-Ups:
    • Re: Quick look preview multipage rich text
      • From: Jean-Daniel Dupas <email@hidden>
References: 
 >Quick look preview multipage rich text (From: Philip Dow <email@hidden>)
 >Re: Quick look preview multipage rich text (From: "Julien Jalon" <email@hidden>)

  • Prev by Date: [Q] How to add "Find" feature for an NSTextView?
  • Next by Date: Re: Calling autorelease on CFAllocated objects?
  • Previous by thread: Re: Quick look preview multipage rich text
  • Next by thread: Re: Quick look preview multipage rich text
  • Index(es):
    • Date
    • Thread