2011-06-27 15 views
2

最近、画像とテキストを含むPDFドキュメントを生成する機能をウェブサイトに作成しました。これらは印刷され、コーヒーマグに貼り付けられます。ASP.NETを使用して印刷品質のPDFを生成

私はこれをWinnovative HTML to PDF変換を使用して行っています。

すべてがうまくいきますが、画像品質は印刷にはあまりにも低く、マグカップの上にゴミがあります。

これは、イメージが300dpi(印刷品質)である必要があるときにイメージが70dpi(画面品質)になるためです。

イメージが印刷品質になるようにこれらのPDFを生成する方法はありますか?

+0

なぜPDFでなければならないのでしょうか?ダウンロード用のイメージファイルを作成するだけではありませんか? – musefan

答えて

3

私はiTextSharpで本当に幸運を祈るので、私はそれで多くの良質なpdfsを構築します。しかし、私は最初からpdfsを構築し、直接印刷します。コード内のページコンテンツを再作成して印刷することは可能でしょうか?それは非常に簡単で、たくさんのリソースや例があります。

そうでない場合は、pdfcrowdのようないくつかの製品があります。私はそれを自分で使ったとは言えません。しかし、私は高品質のhtmlをpdfに使用している人について聞いたことがありますが、あなたはその特典を支払う必要があります。

+0

返信いただきありがとうございます。最初からビルドすると、ビルドにどのようなコードを使用していますか?それはHTML文字列ですか?私は、HTML文字列がレンダリングされるかどうか、とにかく品質を低下させるかどうか疑問に思っていますか? – Curt

+1

[this](http://goo.gl/PdjfM)のような多くの例があります。 iTextSharp文書は厳密にコードビハインドになります。イベントでは、ページの内容を読んで、あなたの舞台裏で新しいpdfに配置することができます。あなたは再構築しようとしているものに応じて、いくつかの異なる方法で構築することができます。似たような例を見つけてそこから作業してください。 –

+0

ああ私が見て、乾杯今すぐ行くよ! – Curt

0

PDFでラスターイメージを使用すると、その品質が低くなり、PDFドキュメントが拡大されます。良い比較のためには、PDFビューアで100%ズームレベルが必要です。より高い解像度の画像をHTMLの画像の代わりにPDFで使用する場合は、Replace Images from HTML with Higher Quality Images in PDF Demoのようにこれを行うことができます。そのデモの関連するC#コードは次のとおりです。

protected void convertToPdfButton_Click(object sender, EventArgs e) 
{ 
    // Create a HTML to PDF converter object with default settings 
    HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter(); 

    // Set license key received after purchase to use the converter in licensed mode 
    // Leave it not set to use the converter in demo mode 
    htmlToPdfConverter.LicenseKey = "fvDh8eDx4fHg4P/h8eLg/+Dj/+jo6Og="; 

    // Select all images from HTML page 
    htmlToPdfConverter.HtmlElementsMappingOptions.HtmlElementSelectors = new string[] { "img" }; 

    // Exclude the original images from rendering becuase they will be replaced by an image from local file system 
    htmlToPdfConverter.HiddenHtmlElementsSelectors = new string[] { "img" }; 

    Document pdfDocument = null; 
    try 
    { 
     // Convert a HTML string with images to replace to a PDF document object 
     pdfDocument = htmlToPdfConverter.ConvertUrlToPdfDocumentObject(urlTextBox.Text); 

     // Replace the images selected in HTML using special attributes with images from local file system 
     foreach (HtmlElementMapping imageElementInfo in htmlToPdfConverter.HtmlElementsMappingOptions.HtmlElementsMappingResult) 
     { 
      PdfPage imagePdfPage = imageElementInfo.PdfRectangles[0].PdfPage; 
      RectangleF imageRectangle = imageElementInfo.PdfRectangles[0].Rectangle; 

      ImageElement newImageElement = new ImageElement(imageRectangle.X, imageRectangle.Y, imageRectangle.Width, imageRectangle.Height, 
          Server.MapPath("~/DemoAppFiles/Input/Images/box.jpg")); 
      newImageElement.EnlargeEnabled = true; 
      imagePdfPage.AddElement(newImageElement); 
     } 

     // Save the PDF document in a memory buffer 
     byte[] outPdfBuffer = pdfDocument.Save(); 

     // Send the PDF as response to browser 

     // Set response content type 
     Response.AddHeader("Content-Type", "application/pdf"); 

     // Instruct the browser to open the PDF file as an attachment or inline 
     Response.AddHeader("Content-Disposition", String.Format("attachment; filename=Replace_with_Higher_Quality_Images.pdf; size={0}", outPdfBuffer.Length.ToString())); 

     // Write the PDF document buffer to HTTP response 
     Response.BinaryWrite(outPdfBuffer); 

     // End the HTTP response and stop the current page processing 
     Response.End(); 
    } 
    finally 
    { 
     // Close the PDF document 
     if (pdfDocument != null) 
      pdfDocument.Close(); 
    } 
} 
関連する問題